diff --git a/.gitignore b/.gitignore index 9a2ba377c..6ccc5f8c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,10 @@ sandbox/ -sandbox.py example/data/* .idea .ipynb_checkpoints .coverage* .pytest_cache +.vagrant # Byte-compiled / optimized / DLL files diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 000000000..cef093dda --- /dev/null +++ b/.pylintrc @@ -0,0 +1,16 @@ +[MESSAGES CONTROL] +disable=locally-disabled, + # False positive for type annotations with typing module + # invalid-sequence-index, + # False positive for OK test methods names and few other places + invalid-name, + # False positive for test file classes and methods + missing-docstring + +[REPORTS] +# Simplify pylint reports +reports=no + +[SIMILARITIES] +min-similarity-lines=10 +ignore-docstrings=yes diff --git a/.travis.yml b/.travis.yml index 415d9a5c7..4c0f394c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,12 @@ language: python sudo: false python: -- '2.7' + - '2.7' + - '3.6' install: -- if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then wget http://repo.continuum.io/miniconda/Miniconda-3.7.0-Linux-x86_64.sh - -O miniconda.sh; else wget http://repo.continuum.io/miniconda/Miniconda3-3.7.0-Linux-x86_64.sh - -O miniconda.sh; fi +- if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; + then wget http://repo.continuum.io/miniconda/Miniconda-3.7.0-Linux-x86_64.sh -O miniconda.sh; + else wget http://repo.continuum.io/miniconda/Miniconda3-3.7.0-Linux-x86_64.sh -O miniconda.sh; fi - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:$PATH" - hash -r @@ -13,11 +14,11 @@ install: - conda update -q conda - conda info -a - | - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION cytoolz numpy pandas pip pytables pyyaml toolz psutil + conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION cytoolz numpy pandas pip pytables pyyaml toolz psutil future - source activate test-environment -- pip install orca openmatrix zbox -- pip install pytest pytest-cov coveralls pycodestyle -- pip install sphinx numpydoc sphinx_rtd_theme +- pip install openmatrix zbox +- conda install pytest pytest-cov coveralls pycodestyle +- conda install sphinx numpydoc sphinx_rtd_theme - pip install . - pip freeze script: diff --git a/MANIFEST.in b/MANIFEST.in index cafbd94ac..56b36031a 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,4 @@ include ez_setup.py include README.rst +include activitysim\abm\test\data\mtc_asim.h5 +include activitysim\abm\test\data\skims.omx diff --git a/README.rst b/README.rst deleted file mode 100644 index 5d8613bca..000000000 --- a/README.rst +++ /dev/null @@ -1,12 +0,0 @@ -ActivitySim -=========== - -The mission of the ActivitySim project is to create and maintain advanced, open-source, -activity-based travel behavior modeling software based on best software development -practices for distribution at no charge to the public. - -The ActivitySim project is led by a consortium of Metropolitan Planning Organizations -(MPOs) and other transportation planning agencies, which provides technical direction -and resources to support project development. New member agencies are welcome to join -the consortium. All member agencies help make decisions about development priorities -and benefit from contributions of other agency partners. \ No newline at end of file diff --git a/activitysim/abm/__init__.py b/activitysim/abm/__init__.py index 1b837cf3c..7cb1d16ba 100644 --- a/activitysim/abm/__init__.py +++ b/activitysim/abm/__init__.py @@ -1,6 +1,8 @@ # ActivitySim # See full license in LICENSE.txt. -import misc -import tables -import models +from __future__ import absolute_import + +from . import misc +from . import tables +from . import models diff --git a/activitysim/abm/misc.py b/activitysim/abm/misc.py index 174d8ac34..7544876e7 100644 --- a/activitysim/abm/misc.py +++ b/activitysim/abm/misc.py @@ -1,45 +1,24 @@ # ActivitySim # See full license in LICENSE.txt. -import os -import warnings +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging -import numpy as np import pandas as pd -import yaml -from activitysim.core import pipeline +from activitysim.core import config from activitysim.core import inject # FIXME -warnings.filterwarnings('ignore', category=pd.io.pytables.PerformanceWarning) +# warnings.filterwarnings('ignore', category=pd.io.pytables.PerformanceWarning) pd.options.mode.chained_assignment = None logger = logging.getLogger(__name__) -@inject.injectable(cache=True) -def store(data_dir, settings): - if 'store' not in settings: - logger.error("store file name not specified in settings") - raise RuntimeError("store file name not specified in settings") - fname = os.path.join(data_dir, settings["store"]) - if not os.path.exists(fname): - logger.error("store file not found: %s" % fname) - raise RuntimeError("store file not found: %s" % fname) - - file = pd.HDFStore(fname, mode='r') - pipeline.close_on_exit(file, fname) - - return file - - -@inject.injectable(cache=True) -def cache_skim_key_values(settings): - return settings['skim_time_periods']['labels'] - - @inject.injectable(cache=True) def households_sample_size(settings, override_hh_ids): @@ -50,18 +29,18 @@ def households_sample_size(settings, override_hh_ids): @inject.injectable(cache=True) -def override_hh_ids(settings, configs_dir): +def override_hh_ids(settings): hh_ids_filename = settings.get('hh_ids', None) if hh_ids_filename is None: return None - f = os.path.join(configs_dir, hh_ids_filename) - if not os.path.exists(f): - logger.error('hh_ids file name specified in settings, but file not found: %s' % f) + file_path = config.data_file_path(hh_ids_filename, mandatory=False) + if not file_path: + logger.error("hh_ids file name '%s' specified in settings not found" % hh_ids_filename) return None - df = pd.read_csv(f, comment='#') + df = pd.read_csv(file_path, comment='#') if 'household_id' not in df.columns: logger.error("No 'household_id' column in hh_ids file %s" % hh_ids_filename) @@ -85,7 +64,7 @@ def trace_hh_id(settings): id = settings.get('trace_hh_id', None) if id and not isinstance(id, int): - logger.warn("setting trace_hh_id is wrong type, should be an int, but was %s" % type(id)) + logger.warning("setting trace_hh_id is wrong type, should be an int, but was %s" % type(id)) id = None return id @@ -97,7 +76,7 @@ def trace_od(settings): od = settings.get('trace_od', None) if od and not (isinstance(od, list) and len(od) == 2 and all(isinstance(x, int) for x in od)): - logger.warn("setting trace_od is wrong type, should be a list of length 2, but was %s" % od) + logger.warning("setting trace_od should be a list of length 2, but was %s" % od) od = None return od diff --git a/activitysim/abm/models/__init__.py b/activitysim/abm/models/__init__.py index 717ee5554..e648f9d06 100644 --- a/activitysim/abm/models/__init__.py +++ b/activitysim/abm/models/__init__.py @@ -1,35 +1,32 @@ # ActivitySim # See full license in LICENSE.txt. -import initialize -import accessibility -import auto_ownership -import mandatory_tour_frequency -import mandatory_scheduling -import joint_tour_frequency -import joint_tour_composition -import joint_tour_participation -import joint_tour_destination -import joint_tour_scheduling -import non_mandatory_tour_frequency -import non_mandatory_destination -import non_mandatory_scheduling -import school_location -import workplace_location -import tour_mode_choice -import cdap +from __future__ import absolute_import -import atwork_subtour_frequency -import atwork_subtour_destination -import atwork_subtour_scheduling -import atwork_subtour_mode_choice - -import stop_frequency -import trip_purpose -import trip_destination -import trip_purpose_and_destination -import trip_scheduling -import trip_mode_choice - -# parameterized models -import annotate_table +from . import accessibility +from . import atwork_subtour_destination +from . import atwork_subtour_frequency +from . import atwork_subtour_mode_choice +from . import atwork_subtour_scheduling +from . import auto_ownership +from . import cdap +from . import free_parking +from . import initialize +from . import joint_tour_composition +from . import joint_tour_destination +from . import joint_tour_frequency +from . import joint_tour_participation +from . import joint_tour_scheduling +from . import location_choice +from . import mandatory_scheduling +from . import mandatory_tour_frequency +from . import non_mandatory_destination +from . import non_mandatory_scheduling +from . import non_mandatory_tour_frequency +from . import stop_frequency +from . import tour_mode_choice +from . import trip_destination +from . import trip_mode_choice +from . import trip_purpose +from . import trip_purpose_and_destination +from . import trip_scheduling diff --git a/activitysim/abm/models/accessibility.py b/activitysim/abm/models/accessibility.py index 60c1fb4ac..68c25819d 100644 --- a/activitysim/abm/models/accessibility.py +++ b/activitysim/abm/models/accessibility.py @@ -1,8 +1,11 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging -import os import pandas as pd import numpy as np @@ -34,12 +37,40 @@ class AccessibilitySkims(object): whether to transpose the matrix before flattening. (i.e. act as a D-O instead of O-D skim) """ - def __init__(self, skim_dict, omx, length, transpose=False): + def __init__(self, skim_dict, orig_zones, dest_zones, transpose=False): + + omx_shape = skim_dict.skim_info['omx_shape'] + logger.info("init AccessibilitySkims with %d dest zones %d orig zones omx_shape %s" % + (len(dest_zones), len(orig_zones), omx_shape, )) + + assert len(orig_zones) <= len(dest_zones) + assert np.isin(orig_zones, dest_zones).all() + assert len(np.unique(orig_zones)) == len(orig_zones) + assert len(np.unique(dest_zones)) == len(dest_zones) + self.skim_dict = skim_dict - self.omx = omx - self.length = length self.transpose = transpose + if omx_shape[0] == len(orig_zones): + # no slicing required + self.slice_map = None + else: + # 2-d boolean slicing in numpy is a bit tricky + # data = data[orig_map, dest_map] # <- WRONG! + # data = data[orig_map, :][:, dest_map] # <- RIGHT + # data = data[np.ix_(orig_map, dest_map)] # <- ALSO RIGHT + + skim_index = list(range(omx_shape[0])) + orig_map = np.isin(skim_index, skim_dict.offset_mapper.map(orig_zones)) + dest_map = np.isin(skim_index, skim_dict.offset_mapper.map(dest_zones)) + + if not dest_map.all(): + # not using the whole skim matrix + logger.info("%s skim zones not in dest_map: %s" % + ((~dest_map).sum(), np.ix_(~dest_map))) + + self.slice_map = np.ix_(orig_map, dest_map) + def __getitem__(self, key): """ accessor to return flattened skim array with specified key @@ -48,30 +79,22 @@ def __getitem__(self, key): this allows the skim array to be accessed from expressions as skim['DISTANCE'] or skim[('SOVTOLL_TIME', 'MD')] """ - try: - data = self.skim_dict.get(key).data - except KeyError: - omx_key = '__'.join(key) - logger.info("AccessibilitySkims loading %s from omx as %s" % (key, omx_key,)) - data = self.omx[omx_key] - data = data[:self.length, :self.length] + data = self.skim_dict.get(key).data if self.transpose: - return data.transpose().flatten() - else: - return data.flatten() + data = data.transpose() + if self.slice_map is not None: + # slice skim to include only orig rows and dest columns + # 2-d boolean slicing in numpy is a bit tricky - see explanation in __init__ + data = data[self.slice_map] -@inject.injectable() -def accessibility_spec(configs_dir): - f = os.path.join(configs_dir, 'accessibility.csv') - return assign.read_assignment_spec(f) + return data.flatten() @inject.step() -def compute_accessibility(accessibility_spec, - skim_dict, omx_file, land_use, trace_od): +def compute_accessibility(accessibility, skim_dict, land_use, trace_od): """ Compute accessibility for each zone in land use file using expressions from accessibility_spec @@ -89,21 +112,42 @@ def compute_accessibility(accessibility_spec, steeper than automobile or transit. The minimum accessibility is zero. """ - logger.info("Running compute_accessibility") + trace_label = 'compute_accessibility' model_settings = config.read_model_settings('accessibility.yaml') + assignment_spec = assign.read_assignment_spec(config.config_file_path('accessibility.csv')) + + accessibility_df = accessibility.to_frame() + + logger.info("Running %s with %d dest zones" % (trace_label, len(accessibility_df))) constants = config.get_model_constants(model_settings) land_use_columns = model_settings.get('land_use_columns', []) land_use_df = land_use.to_frame() - zone_count = len(land_use_df.index) + # #bug + # + # land_use_df = land_use_df[land_use_df.index % 2 == 1] + # accessibility_df = accessibility_df[accessibility_df.index.isin(land_use_df.index)].head(5) + # + # print "land_use_df", land_use_df.index + # print "accessibility_df", accessibility_df.index + # #bug + + orig_zones = accessibility_df.index.values + dest_zones = land_use_df.index.values + + orig_zone_count = len(orig_zones) + dest_zone_count = len(dest_zones) + + logger.info("Running %s with %d dest zones %d orig zones" % + (trace_label, dest_zone_count, orig_zone_count)) # create OD dataframe od_df = pd.DataFrame( data={ - 'orig': np.repeat(np.asanyarray(land_use_df.index), zone_count), - 'dest': np.tile(np.asanyarray(land_use_df.index), zone_count) + 'orig': np.repeat(np.asanyarray(accessibility_df.index), dest_zone_count), + 'dest': np.tile(np.asanyarray(land_use_df.index), orig_zone_count) } ) @@ -120,18 +164,18 @@ def compute_accessibility(accessibility_spec, locals_d = { 'log': np.log, 'exp': np.exp, - 'skim_od': AccessibilitySkims(skim_dict, omx_file, zone_count), - 'skim_do': AccessibilitySkims(skim_dict, omx_file, zone_count, transpose=True) + 'skim_od': AccessibilitySkims(skim_dict, orig_zones, dest_zones), + 'skim_do': AccessibilitySkims(skim_dict, orig_zones, dest_zones, transpose=True) } if constants is not None: locals_d.update(constants) results, trace_results, trace_assigned_locals \ - = assign.assign_variables(accessibility_spec, od_df, locals_d, trace_rows=trace_od_rows) - accessibility_df = pd.DataFrame(index=land_use.index) + = assign.assign_variables(assignment_spec, od_df, locals_d, trace_rows=trace_od_rows) + for column in results.columns: data = np.asanyarray(results[column]) - data.shape = (zone_count, zone_count) + data.shape = (orig_zone_count, dest_zone_count) accessibility_df[column] = np.log(np.sum(data, axis=1) + 1) # - write table to pipeline @@ -140,15 +184,13 @@ def compute_accessibility(accessibility_spec, if trace_od: if not trace_od_rows.any(): - logger.warn("trace_od not found origin = %s, dest = %s" % (trace_orig, trace_dest)) + logger.warning("trace_od not found origin = %s, dest = %s" % (trace_orig, trace_dest)) else: # add OD columns to trace results df = pd.concat([od_df[trace_od_rows], trace_results], axis=1) # dump the trace results table (with _temp variables) to aid debugging - # note that this is not the same as the orca-injected accessibility table - # FIXME - should we name this differently and also dump the updated accessibility table? tracing.trace_df(df, label='accessibility', index_label='skim_offset', diff --git a/activitysim/abm/models/annotate_table.py b/activitysim/abm/models/annotate_table.py deleted file mode 100644 index b14780b76..000000000 --- a/activitysim/abm/models/annotate_table.py +++ /dev/null @@ -1,43 +0,0 @@ -# ActivitySim -# See full license in LICENSE.txt. - -import os -import logging - -import pandas as pd -import numpy as np - -from activitysim.core import tracing -from activitysim.core import inject -from activitysim.core import pipeline -# from activitysim.core import timetable as tt -# from activitysim.core import assign -from activitysim.core import config - -from .util import expressions -from activitysim.core.util import assign_in_place - -logger = logging.getLogger(__name__) - - -@inject.step() -def annotate_table(configs_dir): - - # model_settings name should have been provided as a step argument - model_name = inject.get_step_arg('model_name') - - trace_label = 'annotate_table.%s' % model_name - - model_settings = config.read_model_settings('%s.yaml' % model_name) - - df_name = model_settings['DF'] - df = inject.get_table(df_name).to_frame() - - results = expressions.compute_columns( - df, - model_settings=model_settings, - trace_label=trace_label) - - assign_in_place(df, results) - - pipeline.replace_table(df_name, df) diff --git a/activitysim/abm/models/atwork_subtour_destination.py b/activitysim/abm/models/atwork_subtour_destination.py index bf29f32ce..092308cbe 100644 --- a/activitysim/abm/models/atwork_subtour_destination.py +++ b/activitysim/abm/models/atwork_subtour_destination.py @@ -1,7 +1,10 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import pandas as pd @@ -14,47 +17,25 @@ from activitysim.core.interaction_sample_simulate import interaction_sample_simulate from activitysim.core.interaction_sample import interaction_sample - -from activitysim.core.util import reindex -from activitysim.core.util import left_merge_on_index_and_col - -from .util import expressions from activitysim.core.util import assign_in_place from .util import logsums as logsum - -from .util.expressions import skim_time_period_label -from .util.tour_destination import tour_destination_size_terms +from activitysim.abm.tables.size_terms import tour_destination_size_terms logger = logging.getLogger(__name__) DUMP = False -@inject.injectable() -def atwork_subtour_destination_sample_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'atwork_subtour_destination_sample.csv') - - -@inject.step() -def atwork_subtour_destination_sample(tours, - persons_merged, - atwork_subtour_destination_sample_spec, - skim_dict, - land_use, size_terms, - chunk_size, trace_hh_id): +def atwork_subtour_destination_sample( + tours, + persons_merged, + skim_dict, + destination_size_terms, + chunk_size, trace_hh_id): trace_label = 'atwork_subtour_location_sample' model_settings = config.read_model_settings('atwork_subtour_destination.yaml') - - persons_merged = persons_merged.to_frame() - - tours = tours.to_frame() - tours = tours[tours.tour_category == 'atwork'] - - # - if no atwork subtours - if tours.shape[0] == 0: - tracing.no_results(trace_label) - return + model_spec = simulate.read_model_spec(file_name='atwork_subtour_destination_sample.csv') # merge persons into tours choosers = pd.merge(tours, persons_merged, left_on='person_id', right_index=True) @@ -62,14 +43,12 @@ def atwork_subtour_destination_sample(tours, chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] choosers = choosers[chooser_columns] - alternatives = tour_destination_size_terms(land_use, size_terms, 'atwork') - constants = config.get_model_constants(model_settings) sample_size = model_settings["SAMPLE_SIZE"] alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] - logger.info("Running atwork_subtour_location_sample with %d tours" % len(choosers)) + logger.info("Running atwork_subtour_location_sample with %d tours", len(choosers)) # create wrapper with keys for this lookup - in this case there is a workplace_taz # in the choosers and a TAZ in the alternatives which get merged during interaction @@ -84,60 +63,53 @@ def atwork_subtour_destination_sample(tours, choices = interaction_sample( choosers, - alternatives, + alternatives=destination_size_terms, sample_size=sample_size, alt_col_name=alt_dest_col_name, - spec=atwork_subtour_destination_sample_spec, + spec=model_spec, skims=skims, locals_d=locals_d, chunk_size=chunk_size, trace_label=trace_label) + # remember person_id in chosen alts so we can merge with persons in subsequent steps choices['person_id'] = choosers.person_id - inject.add_table('atwork_subtour_destination_sample', choices) + return choices -@inject.step() -def atwork_subtour_destination_logsums(persons_merged, - skim_dict, skim_stack, - configs_dir, chunk_size, trace_hh_id): +def atwork_subtour_destination_logsums( + persons_merged, + destination_sample, + skim_dict, skim_stack, + chunk_size, trace_hh_id): """ - add logsum column to existing workplace_location_sample able + add logsum column to existing atwork_subtour_destination_sample table logsum is calculated by running the mode_choice model for each sample (person, dest_taz) pair - in workplace_location_sample, and computing the logsum of all the utilities - - +-------+--------------+----------------+------------+----------------+ - | PERID | dest_TAZ | rand | pick_count | logsum (added) | - +=======+==============+================+============+================+ - | 23750 | 14 | 0.565502716034 | 4 | 1.85659498857 | - +-------+--------------+----------------+------------+----------------+ - + 23750 | 16 | 0.711135838871 | 6 | 1.92315598631 | - +-------+--------------+----------------+------------+----------------+ - + ... | | | | | - +-------+--------------+----------------+------------+----------------+ - | 23751 | 12 | 0.408038878552 | 1 | 2.40612135416 | - +-------+--------------+----------------+------------+----------------+ - | 23751 | 14 | 0.972732479292 | 2 | 1.44009018355 | - +-------+--------------+----------------+------------+----------------+ + in atwork_subtour_destination_sample, and computing the logsum of all the utilities + + +-----------+--------------+----------------+------------+----------------+ + | person_id | dest_TAZ | rand | pick_count | logsum (added) | + +===========+==============+================+============+================+ + | 23750 | 14 | 0.565502716034 | 4 | 1.85659498857 | + +-----------+--------------+----------------+------------+----------------+ + + 23750 | 16 | 0.711135838871 | 6 | 1.92315598631 | + +-----------+--------------+----------------+------------+----------------+ + + ... | | | | | + +-----------+--------------+----------------+------------+----------------+ + | 23751 | 12 | 0.408038878552 | 1 | 2.40612135416 | + +-----------+--------------+----------------+------------+----------------+ + | 23751 | 14 | 0.972732479292 | 2 | 1.44009018355 | + +-----------+--------------+----------------+------------+----------------+ """ trace_label = 'atwork_subtour_destination_logsums' - # use inject.get_table as this won't exist if there are no atwork subtours - destination_sample = inject.get_table('atwork_subtour_destination_sample', default=None) - if destination_sample is None: - tracing.no_results(trace_label) - return - model_settings = config.read_model_settings('atwork_subtour_destination.yaml') logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) - destination_sample = destination_sample.to_frame() - persons_merged = persons_merged.to_frame() - # FIXME - MEMORY HACK - only include columns actually used in spec persons_merged = logsum.filter_chooser_columns(persons_merged, logsum_settings, model_settings) @@ -148,7 +120,7 @@ def atwork_subtour_destination_logsums(persons_merged, right_index=True, how="left") - logger.info("Running %s with %s rows" % (trace_label, len(choosers))) + logger.info("Running %s with %s rows", trace_label, len(choosers)) tracing.dump_df(DUMP, persons_merged, trace_label, 'persons_merged') tracing.dump_df(DUMP, choosers, trace_label, 'choosers') @@ -162,25 +134,18 @@ def atwork_subtour_destination_logsums(persons_merged, chunk_size, trace_hh_id, trace_label) - # "add_column series should have an index matching the table to which it is being added" - # when the index has duplicates, however, in the special case that the series index exactly - # matches the table index, then the series value order is preserved. logsums does have a - # matching index, since atwork_subtour_destination_sample was on left side of merge - inject.add_column("atwork_subtour_destination_sample", "mode_choice_logsum", logsums) - + destination_sample['mode_choice_logsum'] = logsums -@inject.injectable() -def atwork_subtour_destination_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'atwork_subtour_destination.csv') + return destination_sample -@inject.step() -def atwork_subtour_destination_simulate(tours, - persons_merged, - atwork_subtour_destination_spec, - skim_dict, - land_use, size_terms, - chunk_size, trace_hh_id): +def atwork_subtour_destination_simulate( + subtours, + persons_merged, + destination_sample, + skim_dict, + destination_size_terms, + chunk_size, trace_hh_id): """ atwork_subtour_destination model on atwork_subtour_destination_sample annotated with mode_choice logsum to select a destination from sample alternatives @@ -188,25 +153,15 @@ def atwork_subtour_destination_simulate(tours, trace_label = 'atwork_subtour_destination_simulate' - # use inject.get_table as this won't exist if there are no atwork subtours - destination_sample = inject.get_table('atwork_subtour_destination_sample', default=None) - if destination_sample is None: - tracing.no_results(trace_label) - return - - destination_sample = destination_sample.to_frame() - model_settings = config.read_model_settings('atwork_subtour_destination.yaml') - - tours = tours.to_frame() - subtours = tours[tours.tour_category == 'atwork'] + model_spec = simulate.read_model_spec(file_name='atwork_subtour_destination.csv') # interaction_sample_simulate insists choosers appear in same order as alts subtours = subtours.sort_index() # merge persons into tours choosers = pd.merge(subtours, - persons_merged.to_frame(), + persons_merged, left_on='person_id', right_index=True) # FIXME - MEMORY HACK - only include columns actually used in spec chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] @@ -216,9 +171,7 @@ def atwork_subtour_destination_simulate(tours, chooser_col_name = 'workplace_taz' # alternatives are pre-sampled and annotated with logsums and pick_count - # but we have to merge additional alt columns into alt sample list - destination_size_terms = tour_destination_size_terms(land_use, size_terms, 'atwork') - + # but we have to merge destination_size_terms columns into alt sample list alternatives = \ pd.merge(destination_sample, destination_size_terms, left_on=alt_dest_col_name, right_index=True, how="left") @@ -227,7 +180,7 @@ def atwork_subtour_destination_simulate(tours, constants = config.get_model_constants(model_settings) - logger.info("Running atwork_subtour_destination_simulate with %d persons" % len(choosers)) + logger.info("Running atwork_subtour_destination_simulate with %d persons", len(choosers)) # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers # and a TAZ in the alternatives which get merged during interaction @@ -245,7 +198,7 @@ def atwork_subtour_destination_simulate(tours, choices = interaction_sample_simulate( choosers, alternatives, - spec=atwork_subtour_destination_spec, + spec=model_spec, choice_column=alt_dest_col_name, skims=skims, locals_d=locals_d, @@ -253,17 +206,63 @@ def atwork_subtour_destination_simulate(tours, trace_label=trace_label, trace_choice_name='workplace_location') + return choices + + +@inject.step() +def atwork_subtour_destination( + tours, + persons_merged, + skim_dict, + skim_stack, + land_use, size_terms, + chunk_size, trace_hh_id): + + persons_merged = persons_merged.to_frame() + + tours = tours.to_frame() + subtours = tours[tours.tour_category == 'atwork'] + + # - if no atwork subtours + if subtours.shape[0] == 0: + tracing.no_results('atwork_subtour_destination') + return + + # interaction_sample_simulate insists choosers appear in same order as alts + subtours = subtours.sort_index() + + destination_size_terms = tour_destination_size_terms(land_use, size_terms, 'atwork') + + destination_sample = atwork_subtour_destination_sample( + subtours, + persons_merged, + skim_dict, + destination_size_terms, + chunk_size, trace_hh_id) + + destination_sample = atwork_subtour_destination_logsums( + persons_merged, + destination_sample, + skim_dict, skim_stack, + chunk_size, trace_hh_id) + + choices = atwork_subtour_destination_simulate( + subtours, + persons_merged, + destination_sample, + skim_dict, + destination_size_terms, + chunk_size, trace_hh_id) + subtours['destination'] = choices assign_in_place(tours, subtours[['destination']]) pipeline.replace_table("tours", tours) - pipeline.drop_table('atwork_subtour_destination_sample') - tracing.print_summary('subtour destination', subtours.destination, describe=True) if trace_hh_id: tracing.trace_df(tours, - label=trace_label, + label='atwork_subtour_destination', columns=['destination']) diff --git a/activitysim/abm/models/atwork_subtour_frequency.py b/activitysim/abm/models/atwork_subtour_frequency.py index 6b3587e6a..1e722b7c3 100644 --- a/activitysim/abm/models/atwork_subtour_frequency.py +++ b/activitysim/abm/models/atwork_subtour_frequency.py @@ -1,44 +1,29 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import pandas as pd import numpy as np -from activitysim.core.simulate import read_model_spec -from activitysim.core.interaction_simulate import interaction_simulate - from activitysim.core import simulate from activitysim.core import tracing from activitysim.core import pipeline from activitysim.core import config from activitysim.core import inject -from activitysim.core.util import reindex - from .util.tour_frequency import process_atwork_subtours +from .util.expressions import assign_columns logger = logging.getLogger(__name__) -@inject.injectable() -def atwork_subtour_frequency_spec(configs_dir): - return read_model_spec(configs_dir, 'atwork_subtour_frequency.csv') - - -@inject.injectable() -def atwork_subtour_frequency_alternatives(configs_dir): - # alt file for building tours even though simulation is simple_simulate not interaction_simulate - f = os.path.join(configs_dir, 'atwork_subtour_frequency_alternatives.csv') - df = pd.read_csv(f, comment='#') - df.set_index('alt', inplace=True) - return df - - def add_null_results(trace_label, tours): - logger.info("Skipping %s: add_null_results" % trace_label) + logger.info("Skipping %s: add_null_results", trace_label) tours['atwork_subtour_frequency'] = np.nan pipeline.replace_table("tours", tours) @@ -46,8 +31,6 @@ def add_null_results(trace_label, tours): @inject.step() def atwork_subtour_frequency(tours, persons_merged, - atwork_subtour_frequency_spec, - atwork_subtour_frequency_alternatives, chunk_size, trace_hh_id): """ @@ -59,6 +42,10 @@ def atwork_subtour_frequency(tours, trace_label = 'atwork_subtour_frequency' model_settings = config.read_model_settings('atwork_subtour_frequency.yaml') + model_spec = simulate.read_model_spec(file_name='atwork_subtour_frequency.csv') + + alternatives = simulate.read_model_alts( + config.config_file_path('atwork_subtour_frequency_alternatives.csv'), set_index='alt') tours = tours.to_frame() @@ -67,21 +54,30 @@ def atwork_subtour_frequency(tours, work_tours = tours[tours.tour_type == 'work'] # - if no work_tours - if work_tours.shape[0] == 0: + if len(work_tours) == 0: add_null_results(trace_label, tours) return # merge persons into work_tours work_tours = pd.merge(work_tours, persons_merged, left_on='person_id', right_index=True) - logger.info("Running atwork_subtour_frequency with %d work tours" % len(work_tours)) + logger.info("Running atwork_subtour_frequency with %d work tours", len(work_tours)) nest_spec = config.get_logit_model_settings(model_settings) constants = config.get_model_constants(model_settings) + # - preprocessor + preprocessor_settings = model_settings.get('preprocessor', None) + if preprocessor_settings: + + assign_columns( + df=work_tours, + model_settings=preprocessor_settings, + trace_label=trace_label) + choices = simulate.simple_simulate( choosers=work_tours, - spec=atwork_subtour_frequency_spec, + spec=model_spec, nest_spec=nest_spec, locals_d=constants, chunk_size=chunk_size, @@ -89,7 +85,7 @@ def atwork_subtour_frequency(tours, trace_choice_name='atwork_subtour_frequency') # convert indexes to alternative names - choices = pd.Series(atwork_subtour_frequency_spec.columns[choices.values], index=choices.index) + choices = pd.Series(model_spec.columns[choices.values], index=choices.index) tracing.print_summary('atwork_subtour_frequency', choices, value_counts=True) @@ -102,12 +98,12 @@ def atwork_subtour_frequency(tours, work_tours = tours[tours.tour_type == 'work'] assert not work_tours.atwork_subtour_frequency.isnull().any() - subtours = process_atwork_subtours(work_tours, atwork_subtour_frequency_alternatives) + subtours = process_atwork_subtours(work_tours, alternatives) tours = pipeline.extend_table("tours", subtours) - tracing.register_traceable_table('tours', tours) - pipeline.get_rn_generator().add_channel(subtours, 'tours') + tracing.register_traceable_table('tours', subtours) + pipeline.get_rn_generator().add_channel('tours', subtours) if trace_hh_id: tracing.trace_df(tours, diff --git a/activitysim/abm/models/atwork_subtour_mode_choice.py b/activitysim/abm/models/atwork_subtour_mode_choice.py index 4fe3eeaf0..0bd850d70 100644 --- a/activitysim/abm/models/atwork_subtour_mode_choice.py +++ b/activitysim/abm/models/atwork_subtour_mode_choice.py @@ -1,22 +1,23 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import pandas as pd -from activitysim.core import simulate from activitysim.core import tracing from activitysim.core import config from activitysim.core import inject from activitysim.core import pipeline -from activitysim.core.util import force_garbage_collect +from activitysim.core.mem import force_garbage_collect from activitysim.core.util import assign_in_place from .util.mode import run_tour_mode_choice_simulate -from .util.mode import annotate_preprocessors from .util.mode import tour_mode_choice_spec logger = logging.getLogger(__name__) diff --git a/activitysim/abm/models/atwork_subtour_scheduling.py b/activitysim/abm/models/atwork_subtour_scheduling.py index 3523e2664..99c76f00f 100644 --- a/activitysim/abm/models/atwork_subtour_scheduling.py +++ b/activitysim/abm/models/atwork_subtour_scheduling.py @@ -1,22 +1,22 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import pandas as pd -from activitysim.core.simulate import read_model_spec -from activitysim.core.interaction_simulate import interaction_simulate - -from activitysim.core import simulate as asim +from activitysim.core import simulate from activitysim.core import tracing from activitysim.core import pipeline from activitysim.core import config from activitysim.core import inject from activitysim.core import timetable as tt from .util.vectorize_tour_scheduling import vectorize_subtour_scheduling -from .util import expressions +from .util.expressions import annotate_preprocessors from activitysim.core.util import assign_in_place @@ -25,17 +25,12 @@ DUMP = False -@inject.injectable() -def tour_scheduling_atwork_spec(configs_dir): - return asim.read_model_spec(configs_dir, 'tour_scheduling_atwork.csv') - - @inject.step() def atwork_subtour_scheduling( tours, persons_merged, tdd_alts, - tour_scheduling_atwork_spec, + skim_dict, chunk_size, trace_hh_id): """ @@ -43,9 +38,8 @@ def atwork_subtour_scheduling( """ trace_label = 'atwork_subtour_scheduling' - model_settings = config.read_model_settings('atwork_subtour_scheduling.yaml') - - constants = config.get_model_constants(model_settings) + model_settings = config.read_model_settings('tour_scheduling_atwork.yaml') + model_spec = simulate.read_model_spec(file_name='tour_scheduling_atwork.csv') persons_merged = persons_merged.to_frame() @@ -57,40 +51,54 @@ def atwork_subtour_scheduling( tracing.no_results(trace_label) return - logger.info("Running %s with %d tours" % (trace_label, len(subtours))) + logger.info("Running %s with %d tours", trace_label, len(subtours)) + + # preprocessor + constants = config.get_model_constants(model_settings) + od_skim_wrapper = skim_dict.wrap('origin', 'destination') + do_skim_wrapper = skim_dict.wrap('destination', 'origin') + skims = { + "od_skims": od_skim_wrapper, + "do_skims": do_skim_wrapper, + } + annotate_preprocessors( + subtours, constants, skims, + model_settings, trace_label) # parent_tours table with columns ['tour_id', 'tdd'] index = tour_id parent_tour_ids = subtours.parent_tour_id.astype(int).unique() parent_tours = pd.DataFrame({'tour_id': parent_tour_ids}, index=parent_tour_ids) parent_tours = parent_tours.merge(tours[['tdd']], left_index=True, right_index=True) - """ - parent_tours - tour_id tdd - 20973389 20973389 26 - 44612864 44612864 3 - 48954854 48954854 7 - """ - tdd_choices = vectorize_subtour_scheduling( parent_tours, subtours, persons_merged, - tdd_alts, tour_scheduling_atwork_spec, - constants=constants, + tdd_alts, model_spec, + model_settings, chunk_size=chunk_size, trace_label=trace_label) assign_in_place(tours, tdd_choices) pipeline.replace_table("tours", tours) - tracing.dump_df(DUMP, - tt.tour_map(parent_tours, subtours, tdd_alts, persons_id_col='parent_tour_id'), - trace_label, 'tour_map') - if trace_hh_id: tracing.trace_df(tours[tours.tour_category == 'atwork'], label="atwork_subtour_scheduling", slicer='person_id', index_label='tour_id', columns=None) + + if DUMP: + subtours = tours[tours.tour_category == 'atwork'] + parent_tours = tours[tours.index.isin(subtours.parent_tour_id)] + + tracing.dump_df(DUMP, subtours, trace_label, 'sub_tours') + tracing.dump_df(DUMP, parent_tours, trace_label, 'parent_tours') + + parent_tours['parent_tour_id'] = parent_tours.index + subtours = pd.concat([parent_tours, subtours]) + tracing.dump_df(DUMP, + tt.tour_map(parent_tours, subtours, tdd_alts, + persons_id_col='parent_tour_id'), + trace_label, 'tour_map') diff --git a/activitysim/abm/models/auto_ownership.py b/activitysim/abm/models/auto_ownership.py index d40902b4c..5d8a76ea6 100644 --- a/activitysim/abm/models/auto_ownership.py +++ b/activitysim/abm/models/auto_ownership.py @@ -1,6 +1,10 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging from activitysim.core import simulate @@ -9,21 +13,12 @@ from activitysim.core import config from activitysim.core import inject -from .util import expressions - logger = logging.getLogger(__name__) -@inject.injectable() -def auto_ownership_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'auto_ownership.csv') - - @inject.step() def auto_ownership_simulate(households, households_merged, - auto_ownership_spec, - configs_dir, chunk_size, trace_hh_id): """ @@ -33,14 +28,16 @@ def auto_ownership_simulate(households, trace_label = 'auto_ownership_simulate' model_settings = config.read_model_settings('auto_ownership.yaml') - logger.info("Running auto_ownership_simulate with %d households" % len(households_merged)) + logger.info("Running %s with %d households", trace_label, len(households_merged)) + + model_spec = simulate.read_model_spec(file_name='auto_ownership.csv') nest_spec = config.get_logit_model_settings(model_settings) constants = config.get_model_constants(model_settings) choices = simulate.simple_simulate( choosers=households_merged.to_frame(), - spec=auto_ownership_spec, + spec=model_spec, nest_spec=nest_spec, locals_d=constants, chunk_size=chunk_size, diff --git a/activitysim/abm/models/cdap.py b/activitysim/abm/models/cdap.py index 0dd654dcb..978bd2f72 100644 --- a/activitysim/abm/models/cdap.py +++ b/activitysim/abm/models/cdap.py @@ -1,12 +1,15 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging -import os import pandas as pd -from activitysim.core import simulate as asim +from activitysim.core import simulate from activitysim.core import tracing from activitysim.core import pipeline from activitysim.core import config @@ -19,25 +22,25 @@ @inject.injectable() -def cdap_indiv_spec(configs_dir): +def cdap_indiv_spec(): """ spec to compute the activity utilities for each individual hh member with no interactions with other household members taken into account """ - return asim.read_model_spec(configs_dir, 'cdap_indiv_and_hhsize1.csv') + return simulate.read_model_spec(file_name='cdap_indiv_and_hhsize1.csv') @inject.injectable() -def cdap_interaction_coefficients(configs_dir): +def cdap_interaction_coefficients(): """ Rules and coefficients for generating interaction specs for different household sizes """ - f = os.path.join(configs_dir, 'cdap_interaction_coefficients.csv') + f = config.config_file_path('cdap_interaction_coefficients.csv') return pd.read_csv(f, comment='#') @inject.injectable() -def cdap_fixed_relative_proportions(configs_dir): +def cdap_fixed_relative_proportions(): """ spec to compute/specify the relative proportions of each activity (M, N, H) that should be used to choose activities for additional household members @@ -47,7 +50,7 @@ def cdap_fixed_relative_proportions(configs_dir): EXCEPT that the values computed are relative proportions, not utilities (i.e. values are not exponentiated before being normalized to probabilities summing to 1.0) """ - return asim.read_model_spec(configs_dir, 'cdap_fixed_relative_proportions.csv') + return simulate.read_model_spec(file_name='cdap_fixed_relative_proportions.csv') @inject.step() @@ -73,7 +76,7 @@ def cdap_simulate(persons_merged, persons, households, constants = config.get_model_constants(model_settings) - logger.info("Running cdap_simulate with %d persons" % len(persons_merged.index)) + logger.info("Running cdap_simulate with %d persons", len(persons_merged.index)) choices = run_cdap(persons=persons_merged, cdap_indiv_spec=cdap_indiv_spec, @@ -107,7 +110,8 @@ def cdap_simulate(persons_merged, persons, households, pipeline.replace_table("households", households) tracing.print_summary('cdap_activity', persons.cdap_activity, value_counts=True) - print pd.crosstab(persons.ptype, persons.cdap_activity, margins=True) + logger.info("cdap crosstabs:\n%s" % + pd.crosstab(persons.ptype, persons.cdap_activity, margins=True)) if trace_hh_id: diff --git a/activitysim/abm/models/free_parking.py b/activitysim/abm/models/free_parking.py new file mode 100644 index 000000000..abf846d84 --- /dev/null +++ b/activitysim/abm/models/free_parking.py @@ -0,0 +1,88 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from future.utils import iteritems + +import logging + +import pandas as pd + +from activitysim.core import tracing +from activitysim.core import config +from activitysim.core import pipeline +from activitysim.core import simulate +from activitysim.core import inject +from activitysim.core.mem import force_garbage_collect + +from activitysim.core.interaction_sample_simulate import interaction_sample_simulate +from activitysim.core.interaction_sample import interaction_sample + +from .util import expressions + +logger = logging.getLogger(__name__) + + +@inject.step() +def free_parking( + persons_merged, persons, households, + skim_dict, skim_stack, + chunk_size, trace_hh_id, locutor): + """ + + """ + + trace_label = 'free_parking' + model_settings = config.read_model_settings('free_parking.yaml') + + choosers = persons_merged.to_frame() + choosers = choosers[choosers.workplace_taz > -1] + + logger.info("Running %s with %d persons", trace_label, len(choosers)) + + constants = config.get_model_constants(model_settings) + + # - preprocessor + preprocessor_settings = model_settings.get('preprocessor', None) + if preprocessor_settings: + + locals_d = {} + if constants is not None: + locals_d.update(constants) + + expressions.assign_columns( + df=choosers, + model_settings=preprocessor_settings, + locals_dict=locals_d, + trace_label=trace_label) + + model_spec = simulate.read_model_spec(file_name='free_parking.csv') + nest_spec = config.get_logit_model_settings(model_settings) + + choices = simulate.simple_simulate( + choosers=choosers, + spec=model_spec, + nest_spec=nest_spec, + locals_d=constants, + chunk_size=chunk_size, + trace_label=trace_label, + trace_choice_name='free_parking_at_work') + + persons = persons.to_frame() + + # no need to reindex as we used all households + free_parking_alt = model_settings['FREE_PARKING_ALT'] + choices = (choices == free_parking_alt) + persons['free_parking_at_work'] = choices.reindex(persons.index).fillna(0).astype(bool) + + pipeline.replace_table("persons", persons) + + tracing.print_summary('free_parking', persons.free_parking_at_work, value_counts=True) + + if trace_hh_id: + tracing.trace_df(persons, + label=trace_label, + warn_if_empty=True) diff --git a/activitysim/abm/models/initialize.py b/activitysim/abm/models/initialize.py index 3c9c7e6bb..394752dba 100644 --- a/activitysim/abm/models/initialize.py +++ b/activitysim/abm/models/initialize.py @@ -1,13 +1,14 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging -import os import pandas as pd -import numpy as np -from activitysim.core import assign from activitysim.core import tracing from activitysim.core import config from activitysim.core import inject @@ -15,28 +16,25 @@ from activitysim.core.steps.output import write_data_dictionary from activitysim.core.steps.output import write_tables +from activitysim.core.steps.output import track_skim_usage from .util import expressions +from activitysim.abm.tables import shadow_pricing + logger = logging.getLogger(__name__) -@inject.step() -def initialize(configs_dir): - """ - Because random seed is set differently for each step, the sampling of households depends - on which step they are initially loaded in so we force them to load here and they get - stored to the pipeline, - """ +def annotate_tables(model_settings, trace_label): - trace_label = 'initialize' + annotate_tables = model_settings.get('annotate_tables', []) - model_settings = config.read_model_settings('initialize.yaml') + if not annotate_tables: + logger.warning("annotate_tables setting is empty - nothing to do!") t0 = tracing.print_elapsed_time() - annotate_tables = model_settings.get('annotate_tables') for table_info in annotate_tables: tablename = table_info['tablename'] @@ -55,13 +53,46 @@ def initialize(configs_dir): expressions.assign_columns( df=df, model_settings=annotate, - trace_label=tracing.extend_trace_label(trace_label, 'annotate_%s' % tablename)) + trace_label=trace_label) + + # fixme - narrow? # - write table to pipeline pipeline.replace_table(tablename, df) - t0 = tracing.print_elapsed_time("annotate %s" % tablename, t0, debug=True) +@inject.step() +def initialize_landuse(): + + trace_label = 'initialize_landuse' + + model_settings = config.read_model_settings('initialize_landuse.yaml', mandatory=True) + + annotate_tables(model_settings, trace_label) + + # create accessibility + land_use = pipeline.get_table('land_use') + + accessibility_df = pd.DataFrame(index=land_use.index) + + # - write table to pipeline + pipeline.replace_table("accessibility", accessibility_df) + + +@inject.step() +def initialize_households(): + + trace_label = 'initialize_households' + + model_settings = config.read_model_settings('initialize_households.yaml', mandatory=True) + annotate_tables(model_settings, trace_label) + + # - initialize shadow_pricing size tables after annotating household and person tables + # since these are scaled to model size, they have to be created while single-process + shadow_pricing.add_size_tables() + + # - preload person_windows + t0 = tracing.print_elapsed_time() inject.get_table('person_windows').to_frame() t0 = tracing.print_elapsed_time("preload person_windows", t0, debug=True) @@ -74,13 +105,17 @@ def preload_injectables(): logger.info("preload_injectables") + inject.add_step('track_skim_usage', track_skim_usage) inject.add_step('write_data_dictionary', write_data_dictionary) inject.add_step('write_tables', write_tables) t0 = tracing.print_elapsed_time() - if inject.get_injectable('skim_dict', None) is not None: - t0 = tracing.print_elapsed_time("preload skim_dict", t0, debug=True) + # FIXME - still want to do this? + # if inject.get_injectable('skim_dict', None) is not None: + # t0 = tracing.print_elapsed_time("preload skim_dict", t0, debug=True) + # + # if inject.get_injectable('skim_stack', None) is not None: + # t0 = tracing.print_elapsed_time("preload skim_stack", t0, debug=True) - if inject.get_injectable('skim_stack', None) is not None: - t0 = tracing.print_elapsed_time("preload skim_stack", t0, debug=True) + return True diff --git a/activitysim/abm/models/joint_tour_composition.py b/activitysim/abm/models/joint_tour_composition.py index a29ae1808..3edd00cb5 100644 --- a/activitysim/abm/models/joint_tour_composition.py +++ b/activitysim/abm/models/joint_tour_composition.py @@ -1,10 +1,12 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging -import numpy as np import pandas as pd from activitysim.core import simulate @@ -14,7 +16,6 @@ from activitysim.core import inject from .util import expressions -from activitysim.core.util import assign_in_place from .util.overlap import hh_time_window_overlap @@ -23,21 +24,15 @@ logger = logging.getLogger(__name__) -@inject.injectable() -def joint_tour_composition_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'joint_tour_composition.csv') - - def add_null_results(trace_label, tours): logger.info("Skipping %s: add_null_results" % trace_label) - tours['composition'] = np.nan + tours['composition'] = '' pipeline.replace_table("tours", tours) @inject.step() def joint_tour_composition( tours, households, persons, - joint_tour_composition_spec, chunk_size, trace_hh_id): """ @@ -46,6 +41,7 @@ def joint_tour_composition( trace_label = 'joint_tour_composition' model_settings = config.read_model_settings('joint_tour_composition.yaml') + model_spec = simulate.read_model_spec(file_name='joint_tour_composition.csv') tours = tours.to_frame() joint_tours = tours[tours.tour_category == 'joint'] @@ -89,7 +85,7 @@ def joint_tour_composition( choices = simulate.simple_simulate( choosers=joint_tours_merged, - spec=joint_tour_composition_spec, + spec=model_spec, nest_spec=nest_spec, locals_d=constants, chunk_size=chunk_size, @@ -97,12 +93,13 @@ def joint_tour_composition( trace_choice_name='composition') # convert indexes to alternative names - choices = pd.Series(joint_tour_composition_spec.columns[choices.values], index=choices.index) + choices = pd.Series(model_spec.columns[choices.values], index=choices.index) - # add composition column to tours + # add composition column to tours for tracing joint_tours['composition'] = choices - assign_in_place(tours, joint_tours[['composition']]) + # reindex since we ran model on a subset of households + tours['composition'] = choices.reindex(tours.index).fillna('').astype(str) pipeline.replace_table("tours", tours) tracing.print_summary('joint_tour_composition', joint_tours.composition, diff --git a/activitysim/abm/models/joint_tour_destination.py b/activitysim/abm/models/joint_tour_destination.py index 2829ffd45..0f9c824a6 100644 --- a/activitysim/abm/models/joint_tour_destination.py +++ b/activitysim/abm/models/joint_tour_destination.py @@ -1,14 +1,18 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from future.utils import iteritems + import logging from collections import OrderedDict import numpy as np import pandas as pd -from activitysim.core.simulate import read_model_spec from activitysim.core.interaction_sample_simulate import interaction_sample_simulate from activitysim.core.interaction_sample import interaction_sample @@ -16,12 +20,15 @@ from activitysim.core import config from activitysim.core import inject from activitysim.core import pipeline +from activitysim.core import simulate from activitysim.core.util import reindex from activitysim.core.util import assign_in_place +from .util import tour_destination + from .util import logsums as logsum -from .util.tour_destination import tour_destination_size_terms +from activitysim.abm.tables.size_terms import tour_destination_size_terms logger = logging.getLogger(__name__) @@ -40,20 +47,12 @@ ]) -@inject.injectable() -def joint_tour_destination_sample_spec(configs_dir): - # - tour types are subset of non_mandatory tour types and use same expressions - return read_model_spec(configs_dir, 'non_mandatory_tour_destination_sample.csv') - - -@inject.step() def joint_tour_destination_sample( - tours, + joint_tours, households_merged, - joint_tour_destination_sample_spec, skim_dict, - land_use, size_terms, - configs_dir, chunk_size, trace_hh_id): + size_term_calculator, + chunk_size, trace_hh_id): """ Chooses a sample of destinations from all possible tour destinations by choosing times from among destination alternatives. @@ -81,39 +80,25 @@ def joint_tour_destination_sample( Parameters ---------- - tours: pipeline table - households_merged : pipeline table - injected merge table created on the fly + joint_tours: pandas.DataFrame + households_merged : pandas.DataFrame skim_dict joint_tour_destination_sample_spec - land_use - size_terms - configs_dir + size_term_calculator chunk_size trace_hh_id Returns ------- - none + choices : pandas.DataFrame + destination_sample df """ trace_label = 'joint_tour_destination_sample' model_settings = config.read_model_settings('joint_tour_destination.yaml') - - joint_tours = tours.to_frame() - joint_tours = joint_tours[joint_tours.tour_category == 'joint'] - - # - if no joint tours - if joint_tours.shape[0] == 0: - tracing.no_results(trace_label) - return - - households_merged = households_merged.to_frame() - - # same size terms as non_mandatory - size_terms = tour_destination_size_terms(land_use, size_terms, 'non_mandatory') + model_spec = simulate.read_model_spec(file_name='non_mandatory_tour_destination_sample.csv') # choosers are tours - in a sense tours are choosing their destination choosers = pd.merge(joint_tours, households_merged, @@ -129,9 +114,9 @@ def joint_tour_destination_sample( # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers # and a TAZ in the alternatives which get merged during interaction - # interaction_dataset adds '_r' suffix to duplicate columns, - # so TAZ column from households is TAZ and TAZ column from alternatives becomes TAZ_r - skims = skim_dict.wrap("TAZ", "TAZ_r") + # (logit.interaction_dataset suffixes duplicate chooser column with '_chooser') + # the skims will be available under the name "skims" for any @ expressions + skims = skim_dict.wrap('TAZ_chooser', 'TAZ') locals_d = { 'skims': skims @@ -140,26 +125,24 @@ def joint_tour_destination_sample( if constants is not None: locals_d.update(constants) - logger.info("Running joint_tour_destination_sample with %d joint_tours" % len(choosers)) + logger.info("Running joint_tour_destination_sample with %d joint_tours", len(choosers)) choices_list = [] # segment by trip type and pick the right spec for each person type # for tour_type, choosers_segment in choosers.groupby('tour_type'): - for tour_type, tour_type_id in TOUR_TYPE_ID.iteritems(): - - locals_d['segment'] = tour_type + for tour_type, tour_type_id in iteritems(TOUR_TYPE_ID): choosers_segment = choosers[choosers.tour_type == tour_type] if choosers_segment.shape[0] == 0: - logger.info("%s skipping tour_type %s: no tours" % (trace_label, tour_type)) + logger.info("%s skipping tour_type %s: no tours", trace_label, tour_type) continue - # alts indexed by taz with one column containing size_term for this tour_type - alternatives_segment = size_terms[[tour_type]] + # alts indexed by taz with one column containing size_term for this tour_type + alternatives_segment = size_term_calculator.dest_size_terms_df(tour_type) # FIXME - no point in considering impossible alternatives (where dest size term is zero) - alternatives_segment = alternatives_segment[alternatives_segment[tour_type] > 0] + alternatives_segment = alternatives_segment[alternatives_segment['size_term'] > 0] logger.info("Running segment '%s' of %d joint_tours %d alternatives" % (tour_type, len(choosers_segment), len(alternatives_segment))) @@ -173,7 +156,7 @@ def joint_tour_destination_sample( alternatives_segment, sample_size=sample_size, alt_col_name=alt_dest_col_name, - spec=joint_tour_destination_sample_spec[[tour_type]], + spec=model_spec[[tour_type]], skims=skims, locals_d=locals_d, chunk_size=chunk_size, @@ -185,21 +168,21 @@ def joint_tour_destination_sample( choices = pd.concat(choices_list) - # - # NARROW + # - NARROW choices['tour_type_id'] = choices['tour_type_id'].astype(np.uint8) - inject.add_table('joint_tour_destination_sample', choices) - if trace_hh_id: tracing.trace_df(choices, label="joint_tour_destination_sample", transpose=True) + return choices + -@inject.step() def joint_tour_destination_logsums( - tours, + joint_tours, persons_merged, + destination_sample, skim_dict, skim_stack, chunk_size, trace_hh_id): @@ -213,21 +196,9 @@ def joint_tour_destination_logsums( trace_label = 'joint_tour_destination_logsums' - # use inject.get_table as this won't exist if there are no joint_tours - destination_sample = inject.get_table('joint_tour_destination_sample', default=None) - if destination_sample is None: - tracing.no_results(trace_label) - return - - destination_sample = destination_sample.to_frame() - model_settings = config.read_model_settings('joint_tour_destination.yaml') logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) - joint_tours = tours.to_frame() - joint_tours = joint_tours[joint_tours.tour_category == 'joint'] - - persons_merged = persons_merged.to_frame() joint_tours_merged = pd.merge(joint_tours, persons_merged, left_on='person_id', right_index=True, how='left') @@ -236,12 +207,12 @@ def joint_tour_destination_logsums( logsum.filter_chooser_columns(joint_tours_merged, logsum_settings, model_settings) logsums_list = [] - for tour_type, tour_type_id in TOUR_TYPE_ID.iteritems(): + for tour_type, tour_type_id in iteritems(TOUR_TYPE_ID): choosers = destination_sample[destination_sample['tour_type_id'] == tour_type_id] if choosers.shape[0] == 0: - logger.info("%s skipping tour_type %s: no tours" % (trace_label, tour_type)) + logger.info("%s skipping tour_type %s: no tours", trace_label, tour_type) continue # sample is sorted by TOUR_TYPE_ID, tour_id @@ -255,7 +226,7 @@ def joint_tour_destination_logsums( how="left", sort=False) - logger.info("%s running %s with %s rows" % (trace_label, tour_type, len(choosers))) + logger.info("%s running %s with %s rows", trace_label, tour_type, len(choosers)) tour_purpose = tour_type logsums = logsum.compute_logsums( @@ -271,27 +242,20 @@ def joint_tour_destination_logsums( logsums = pd.concat(logsums_list) destination_sample['mode_choice_logsum'] = logsums - pipeline.replace_table("joint_tour_destination_sample", destination_sample) if trace_hh_id: - tracing.trace_df(destination_sample, - label="joint_tour_destination_logsums") + tracing.trace_df(destination_sample, label="joint_tour_destination_logsums") + return destination_sample -@inject.injectable() -def joint_tour_destination_spec(configs_dir): - # - tour types are subset of non_mandatory tour types and use same expressions - return read_model_spec(configs_dir, 'non_mandatory_tour_destination.csv') - -@inject.step() def joint_tour_destination_simulate( - tours, + joint_tours, households_merged, - joint_tour_destination_spec, + destination_sample, skim_dict, - land_use, size_terms, - configs_dir, chunk_size, trace_hh_id): + size_term_calculator, + chunk_size, trace_hh_id): """ choose a joint tour destination from amont the destination sample alternatives (annotated with logsums) and add destination TAZ column to joint_tours table @@ -299,25 +263,14 @@ def joint_tour_destination_simulate( trace_label = 'joint_tour_destination_simulate' - # use inject.get_table as this won't exist if there are no joint_tours - destination_sample = inject.get_table('joint_tour_destination_sample', default=None) - if destination_sample is None: - tracing.no_results(trace_label) - return - model_settings = config.read_model_settings('joint_tour_destination.yaml') - destination_sample = destination_sample.to_frame() - tours = tours.to_frame() - joint_tours = tours[tours.tour_category == 'joint'] + # - tour types are subset of non_mandatory tour types and use same expressions + model_spec = simulate.read_model_spec(file_name='non_mandatory_tour_destination.csv') # interaction_sample_simulate insists choosers appear in same order as alts joint_tours = joint_tours.sort_index() - households_merged = households_merged.to_frame() - - destination_size_terms = tour_destination_size_terms(land_use, size_terms, 'non_mandatory') - alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] logger.info("Running joint_tour_destination_simulate with %d joint_tours" % @@ -345,7 +298,7 @@ def joint_tour_destination_simulate( choices_list = [] # segment by trip type and pick the right spec for each person type # for tour_type, choosers_segment in choosers.groupby('tour_type'): - for tour_type, tour_type_id in TOUR_TYPE_ID.iteritems(): + for tour_type, tour_type_id in iteritems(TOUR_TYPE_ID): locals_d['segment'] = tour_type @@ -353,7 +306,7 @@ def joint_tour_destination_simulate( # - skip empty segments if choosers_segment.shape[0] == 0: - logger.info("%s skipping tour_type %s: no tours" % (trace_label, tour_type)) + logger.info("%s skipping tour_type %s: no tours", trace_label, tour_type) continue alts_segment = destination_sample[destination_sample.tour_type_id == tour_type_id] @@ -362,8 +315,9 @@ def joint_tour_destination_simulate( # alternatives are pre-sampled and annotated with logsums and pick_count # but we have to merge size_terms column into alt sample list - alts_segment[tour_type] = \ - reindex(destination_size_terms[tour_type], alts_segment[alt_dest_col_name]) + alts_segment['size_term'] = \ + reindex(size_term_calculator.dest_size_terms_series(tour_type), + alts_segment[alt_dest_col_name]) logger.info("Running segment '%s' of %d joint_tours %d alternatives" % (tour_type, len(choosers_segment), len(alts_segment))) @@ -374,7 +328,7 @@ def joint_tour_destination_simulate( choices = interaction_sample_simulate( choosers_segment, alts_segment, - spec=joint_tour_destination_spec[[tour_type]], + spec=model_spec[[tour_type]], choice_column=alt_dest_col_name, skims=skims, locals_d=locals_d, @@ -386,15 +340,81 @@ def joint_tour_destination_simulate( choices = pd.concat(choices_list) + return choices + + +@inject.step() +def joint_tour_destination( + tours, + persons_merged, + households_merged, + skim_dict, + skim_stack, + land_use, size_terms, + chunk_size, trace_hh_id): + """ + Run the three-part destination choice algorithm to choose a destination for each joint tour + + Parameters + ---------- + tours : injected table + households_merged : injected table + skim_dict : skim.SkimDict + land_use : injected table + size_terms : injected table + chunk_size : int + trace_hh_id : int or None + + Returns + ------- + adds/assigns choice column 'destination' for joint tours in tours table + """ + + tours = tours.to_frame() + joint_tours = tours[tours.tour_category == 'joint'] + + persons_merged = persons_merged.to_frame() + households_merged = households_merged.to_frame() + + # - if no joint tours + if joint_tours.shape[0] == 0: + tracing.no_results('joint_tour_destination') + return + + # interaction_sample_simulate insists choosers appear in same order as alts + joint_tours = joint_tours.sort_index() + + model_settings = config.read_model_settings('joint_tour_destination.yaml') + size_term_calculator = tour_destination.SizeTermCalculator(model_settings['SIZE_TERM_SELECTOR']) + + destination_sample = joint_tour_destination_sample( + joint_tours, + households_merged, + skim_dict, + size_term_calculator, + chunk_size, trace_hh_id) + + destination_sample = joint_tour_destination_logsums( + joint_tours, + persons_merged, + destination_sample, + skim_dict, skim_stack, + chunk_size, trace_hh_id) + + choices = joint_tour_destination_simulate( + joint_tours, + households_merged, + destination_sample, + skim_dict, + size_term_calculator, + chunk_size, trace_hh_id) + # add column as we want joint_tours table for tracing. joint_tours['destination'] = choices assign_in_place(tours, joint_tours[['destination']]) pipeline.replace_table("tours", tours) - # drop bulky joint_tour_destination_sample table as we don't use it further - pipeline.drop_table('joint_tour_destination_sample') - tracing.print_summary('destination', joint_tours.destination, describe=True) if trace_hh_id: diff --git a/activitysim/abm/models/joint_tour_frequency.py b/activitysim/abm/models/joint_tour_frequency.py index 1e45051c9..5ef85eaac 100644 --- a/activitysim/abm/models/joint_tour_frequency.py +++ b/activitysim/abm/models/joint_tour_frequency.py @@ -1,7 +1,10 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import numpy as np @@ -13,7 +16,6 @@ from activitysim.core import config from activitysim.core import inject -from activitysim.core.util import assign_in_place from .util import expressions from .util.overlap import hh_time_window_overlap from .util.tour_frequency import process_joint_tours @@ -21,25 +23,9 @@ logger = logging.getLogger(__name__) -@inject.injectable() -def joint_tour_frequency_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'joint_tour_frequency.csv') - - -@inject.injectable() -def joint_tour_frequency_alternatives(configs_dir): - # alt file for building tours even though simulation is simple_simulate not interaction_simulate - f = os.path.join(configs_dir, 'joint_tour_frequency_alternatives.csv') - df = pd.read_csv(f, comment='#') - df.set_index('alt', inplace=True) - return df - - @inject.step() def joint_tour_frequency( households, persons, - joint_tour_frequency_spec, - joint_tour_frequency_alternatives, chunk_size, trace_hh_id): """ @@ -48,6 +34,10 @@ def joint_tour_frequency( """ trace_label = 'joint_tour_frequency' model_settings = config.read_model_settings('joint_tour_frequency.yaml') + model_spec = simulate.read_model_spec(file_name='joint_tour_frequency.csv') + + alternatives = simulate.read_model_alts( + config.config_file_path('joint_tour_frequency_alternatives.csv'), set_index='alt') # - only interested in households with more than one cdap travel_active person households = households.to_frame() @@ -83,7 +73,7 @@ def joint_tour_frequency( choices = simulate.simple_simulate( choosers=multi_person_households, - spec=joint_tour_frequency_spec, + spec=model_spec, nest_spec=nest_spec, locals_d=constants, chunk_size=chunk_size, @@ -91,7 +81,7 @@ def joint_tour_frequency( trace_choice_name='joint_tour_frequency') # convert indexes to alternative names - choices = pd.Series(joint_tour_frequency_spec.columns[choices.values], index=choices.index) + choices = pd.Series(model_spec.columns[choices.values], index=choices.index) # - create joint_tours based on joint_tour_frequency choices @@ -105,17 +95,17 @@ def joint_tour_frequency( temp_point_persons = temp_point_persons[['person_id', 'home_taz']] joint_tours = \ - process_joint_tours(choices, joint_tour_frequency_alternatives, temp_point_persons) + process_joint_tours(choices, alternatives, temp_point_persons) tours = pipeline.extend_table("tours", joint_tours) tracing.register_traceable_table('tours', joint_tours) - pipeline.get_rn_generator().add_channel(joint_tours, 'tours') + pipeline.get_rn_generator().add_channel('tours', joint_tours) # - annotate households # add joint_tour_frequency and num_hh_joint_tours columns to households # reindex since we ran model on a subset of households - households['joint_tour_frequency'] = choices.reindex(households.index) + households['joint_tour_frequency'] = choices.reindex(households.index).fillna('').astype(str) households['num_hh_joint_tours'] = joint_tours.groupby('household_id').size().\ reindex(households.index).fillna(0).astype(np.int8) diff --git a/activitysim/abm/models/joint_tour_participation.py b/activitysim/abm/models/joint_tour_participation.py index faecc6aca..5400d1cb3 100644 --- a/activitysim/abm/models/joint_tour_participation.py +++ b/activitysim/abm/models/joint_tour_participation.py @@ -1,10 +1,12 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging -import numpy as np import pandas as pd from activitysim.core import simulate @@ -23,11 +25,6 @@ logger = logging.getLogger(__name__) -@inject.injectable() -def joint_tour_participation_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'joint_tour_participation.csv') - - def joint_tour_participation_candidates(joint_tours, persons_merged): # - only interested in persons from households with joint_tours @@ -60,7 +57,7 @@ def joint_tour_participation_candidates(joint_tours, persons_merged): MAX_PNUM = 100 if candidates.PNUM.max() > MAX_PNUM: # if this happens, channel random seeds will overlap at MAX_PNUM (not probably a big deal) - logger.warn("max persons.PNUM (%s) > MAX_PNUM (%s)" % (candidates.PNUM.max(), MAX_PNUM)) + logger.warning("max persons.PNUM (%s) > MAX_PNUM (%s)", candidates.PNUM.max(), MAX_PNUM) candidates['participant_id'] = (candidates[joint_tours.index.name] * MAX_PNUM) + candidates.PNUM candidates.set_index('participant_id', drop=True, inplace=True, verify_integrity=True) @@ -151,7 +148,7 @@ def participants_chooser(probs, choosers, spec, trace_label): rands_list = [] num_tours_remaining = len(candidates.tour_id.unique()) - logger.info('%s %s joint tours to satisfy.' % (trace_label, num_tours_remaining,)) + logger.info('%s %s joint tours to satisfy.', trace_label, num_tours_remaining,) iter = 0 while candidates.shape[0] > 0: @@ -159,12 +156,12 @@ def participants_chooser(probs, choosers, spec, trace_label): iter += 1 if iter > MAX_ITERATIONS: - logger.warn('%s max iterations exceeded (%s).' % (trace_label, MAX_ITERATIONS)) + logger.warning('%s max iterations exceeded (%s).', trace_label, MAX_ITERATIONS) diagnostic_cols = ['tour_id', 'household_id', 'composition', 'adult'] unsatisfied_candidates = candidates[diagnostic_cols].join(probs) tracing.write_csv(unsatisfied_candidates, file_name='%s.UNSATISFIED' % trace_label, transpose=False) - print unsatisfied_candidates.head(20) + print(unsatisfied_candidates.head(20)) assert False choices, rands = logit.make_choices(probs, trace_label=trace_label, trace_choosers=choosers) @@ -199,23 +196,39 @@ def participants_chooser(probs, choosers, spec, trace_label): assert choices.index.equals(choosers.index) assert rands.index.equals(choosers.index) - logger.info('%s %s iterations to satisfy all joint tours.' % (trace_label, iter,)) + logger.info('%s %s iterations to satisfy all joint tours.', trace_label, iter,) return choices, rands -def add_null_results(trace_label): - logger.info("Skipping %s: joint tours" % trace_label) +def annotate_jtp(model_settings, trace_label): + + # - annotate persons + persons = inject.get_table('persons').to_frame() + expressions.assign_columns( + df=persons, + model_settings=model_settings.get('annotate_persons'), + trace_label=tracing.extend_trace_label(trace_label, 'annotate_persons')) + pipeline.replace_table("persons", persons) + + +def add_null_results(model_settings, trace_label): + logger.info("Skipping %s: joint tours", trace_label) # participants table is used downstream in non-joint tour expressions - participants = pd.DataFrame(columns=['person_id']) + + PARTICIPANT_COLS = ['tour_id', 'household_id', 'person_id', 'participant_num'] + + participants = pd.DataFrame(columns=PARTICIPANT_COLS) participants.index.name = 'participant_id' pipeline.replace_table("joint_tour_participants", participants) + # - run annotations + annotate_jtp(model_settings, trace_label) + @inject.step() def joint_tour_participation( tours, persons_merged, - joint_tour_participation_spec, chunk_size, trace_hh_id): """ @@ -223,21 +236,22 @@ def joint_tour_participation( """ trace_label = 'joint_tour_participation' model_settings = config.read_model_settings('joint_tour_participation.yaml') + model_spec = simulate.read_model_spec(file_name='joint_tour_participation.csv') tours = tours.to_frame() joint_tours = tours[tours.tour_category == 'joint'] # - if no joint tours if joint_tours.shape[0] == 0: - add_null_results(trace_label) + add_null_results(model_settings, trace_label) return persons_merged = persons_merged.to_frame() # - create joint_tour_participation_candidates table candidates = joint_tour_participation_candidates(joint_tours, persons_merged) - tracing.register_traceable_table('participants', candidates) - pipeline.get_rn_generator().add_channel(candidates, 'joint_tour_participants') + tracing.register_traceable_table('joint_tour_participants', candidates) + pipeline.get_rn_generator().add_channel('joint_tour_participants', candidates) logger.info("Running joint_tours_participation with %d potential participants (candidates)" % candidates.shape[0]) @@ -264,7 +278,7 @@ def joint_tour_participation( choices = simulate.simple_simulate( choosers=candidates, - spec=joint_tour_participation_spec, + spec=model_spec, nest_spec=nest_spec, locals_d=constants, chunk_size=chunk_size, @@ -274,9 +288,9 @@ def joint_tour_participation( # choice is boolean (participate or not) choice_col = model_settings.get('participation_choice', 'participate') - assert choice_col in joint_tour_participation_spec.columns, \ + assert choice_col in model_spec.columns, \ "couldn't find participation choice column '%s' in spec" - PARTICIPATE_CHOICE = joint_tour_participation_spec.columns.get_loc(choice_col) + PARTICIPATE_CHOICE = model_spec.columns.get_loc(choice_col) participate = (choices == PARTICIPATE_CHOICE) @@ -298,8 +312,8 @@ def joint_tour_participation( pipeline.replace_table("joint_tour_participants", participants) - # FIXME drop channel if we aren't using any more? - # pipeline.get_rn_generator().drop_channel('joint_tours_participants') + # drop channel as we aren't using any more (and it has candidates that weren't chosen) + pipeline.get_rn_generator().drop_channel('joint_tour_participants') # - assign joint tour 'point person' (participant_num == 1) point_persons = participants[participants.participant_num == 1] @@ -312,6 +326,9 @@ def joint_tour_participation( pipeline.replace_table("tours", tours) + # - run annotations + annotate_jtp(model_settings, trace_label) + if trace_hh_id: tracing.trace_df(participants, label="joint_tour_participation.participants") diff --git a/activitysim/abm/models/joint_tour_scheduling.py b/activitysim/abm/models/joint_tour_scheduling.py index 500a2b14b..55eba3915 100644 --- a/activitysim/abm/models/joint_tour_scheduling.py +++ b/activitysim/abm/models/joint_tour_scheduling.py @@ -1,17 +1,17 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 import logging -import pandas as pd - from activitysim.core import simulate from activitysim.core import tracing from activitysim.core import config from activitysim.core import inject from activitysim.core import pipeline -from activitysim.core import timetable as tt from .util import expressions from .util.vectorize_tour_scheduling import vectorize_joint_tour_scheduling @@ -20,18 +20,11 @@ logger = logging.getLogger(__name__) -@inject.injectable() -def joint_tour_scheduling_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'tour_scheduling_joint.csv') - - @inject.step() def joint_tour_scheduling( tours, persons_merged, tdd_alts, - joint_tour_scheduling_spec, - configs_dir, chunk_size, trace_hh_id): """ @@ -39,6 +32,7 @@ def joint_tour_scheduling( """ trace_label = 'joint_tour_scheduling' model_settings = config.read_model_settings('joint_tour_scheduling.yaml') + model_spec = simulate.read_model_spec(file_name='tour_scheduling_joint.csv') tours = tours.to_frame() joint_tours = tours[tours.tour_category == 'joint'] @@ -53,7 +47,7 @@ def joint_tour_scheduling( persons_merged = persons_merged.to_frame() - logger.info("Running %s with %d joint tours" % (trace_label, joint_tours.shape[0])) + logger.info("Running %s with %d joint tours", trace_label, joint_tours.shape[0]) # it may seem peculiar that we are concerned with persons rather than households # but every joint tour is (somewhat arbitrarily) assigned a "primary person" @@ -82,15 +76,17 @@ def joint_tour_scheduling( locals_dict=locals_d, trace_label=trace_label) - tdd_choices = vectorize_joint_tour_scheduling( + tdd_choices, timetable = vectorize_joint_tour_scheduling( joint_tours, joint_tour_participants, persons_merged, tdd_alts, - spec=joint_tour_scheduling_spec, - constants=locals_d, + spec=model_spec, + model_settings=model_settings, chunk_size=chunk_size, trace_label=trace_label) + timetable.replace_table() + assign_in_place(tours, tdd_choices) pipeline.replace_table("tours", tours) diff --git a/activitysim/abm/models/location_choice.py b/activitysim/abm/models/location_choice.py new file mode 100644 index 000000000..c42adf467 --- /dev/null +++ b/activitysim/abm/models/location_choice.py @@ -0,0 +1,550 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from future.utils import iteritems + +import logging + +import pandas as pd + +from activitysim.core import tracing +from activitysim.core import config +from activitysim.core import pipeline +from activitysim.core import simulate +from activitysim.core import inject +from activitysim.core.mem import force_garbage_collect + +from activitysim.core.interaction_sample_simulate import interaction_sample_simulate +from activitysim.core.interaction_sample import interaction_sample + +from .util import expressions +from .util import logsums as logsum + +from activitysim.abm.tables import shadow_pricing + +""" +The school/workplace location model predicts the zones in which various people will +work or attend school. + +For locations choices like workplace and school location, we have existing data about the actual +number of workers or students in the various destination zones, and we naturally want the results +of location choice to yield distributions the match these observed distributions as closely as +possible. To achieve this, we use start with size tables with the observed populations by zone +and segment (e.g. number of university, highschool, and gradeschool students in each zone) and +use those populations as attractors (positive utilities) so that high population zones will, +all things being equal, receive more choices. (For instance, we want university-goers to choose +school locations with in zones with university enrollments.) + +But since the choice algorithm can result in aggregate distributions of choices (modeled_size) +that don't match observed (predicted_size) counts. The shadow pricing algorithm attempts to +correct these misalignments, by iteratively running the choice model, comparing the modeled_size +of the zones segments to the predicted size, and computing a shadow_price coefficient that is +applied to the size term to boost or attenuate its influence. This iterative process can be +configures to continue until a specified closeness of fit is achieved, or a maximum number of +iterations has occurred. Since the iterative process can be expensive, a facility is provided +to save the computed shadow prices after every iteration, and to load pre-computed shadow prices +on subsequent runs (warm start) to cut down on runtimes. + +Since every individual (always person for now) belongs to at most one segment, each segment +(e.g. 'university', 'highschool' , 'gradeschool' for the 'school' location model) is handled +separately and sequentially withing each shadow-price iteration. + +The core algorithm has 3 parts: + +Because logsum calculations are expensive, rather than computing logsums for all destination +alternatives, we first build a sample of alternatives using simplified (no-logsum) utilities, +and compute logsums only for that sample, and finally chose from among the sampled alternatives. + +* run_location_sample - Build a sample destination alternatives using simplified choice criteria +* run_location_logsums - Compute logsums for travel to those alternatives +* run_location_simulate - Rerun the choice model using the logsums to make a final location choice + +With shadow pricing, and iterative treatment of each segment, the structure of the code is: + +:: + + repeat + for each segment + run_location_sample + run_location_logsums + run_location_simulate + until convergence +""" + +logger = logging.getLogger(__name__) + + +def spec_for_segment(model_spec, segment_name): + """ + Select spec for specified segment from omnibus spec containing columns for each segment + + Parameters + ---------- + model_spec : pandas.DataFrame + omnibus spec file with expressions in index and one column per segment + segment_name : str + segment_name that is also column name in model_spec + + Returns + ------- + pandas.dataframe + canonical spec file with expressions in index and single column with utility coefficients + """ + + spec = model_spec[[segment_name]] + + # drop spec rows with zero coefficients since they won't have any effect (0 marginal utility) + zero_rows = (spec == 0).all(axis=1) + if zero_rows.any(): + logger.debug("dropping %s all-zero rows from spec" % (zero_rows.sum(),)) + spec = spec.loc[~zero_rows] + + return spec + + +def run_location_sample( + segment_name, + persons_merged, + skim_dict, + dest_size_terms, + model_settings, + chunk_size, trace_label): + """ + select a sample of alternative locations. + + Logsum calculations are expensive, so we build a table of persons * all zones + and then select a sample subset of potential locations + + The sample subset is generated by making multiple choices ( number of choices) + which results in sample containing up to choices for each choose (e.g. person) + and a pick_count indicating how many times that choice was selected for that chooser.) + + person_id, dest_TAZ, rand, pick_count + 23750, 14, 0.565502716034, 4 + 23750, 16, 0.711135838871, 6 + ... + 23751, 12, 0.408038878552, 1 + 23751, 14, 0.972732479292, 2 + """ + assert not persons_merged.empty + + model_spec = simulate.read_model_spec(file_name=model_settings['SAMPLE_SPEC']) + + # FIXME - MEMORY HACK - only include columns actually used in spec + chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] + choosers = persons_merged[chooser_columns] + + alternatives = dest_size_terms + + sample_size = model_settings["SAMPLE_SIZE"] + alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] + + logger.info("Running %s with %d persons" % (trace_label, len(choosers.index))) + + # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers + # and a TAZ in the alternatives which get merged during interaction + # (logit.interaction_dataset suffixes duplicate chooser column with '_chooser') + # the skims will be available under the name "skims" for any @ expressions + skims = skim_dict.wrap('TAZ_chooser', 'TAZ') + + locals_d = { + 'skims': skims, + 'segment_size': segment_name + } + constants = config.get_model_constants(model_settings) + if constants is not None: + locals_d.update(constants) + + choices = interaction_sample( + choosers, + alternatives, + sample_size=sample_size, + alt_col_name=alt_dest_col_name, + spec=spec_for_segment(model_spec, segment_name), + skims=skims, + locals_d=locals_d, + chunk_size=chunk_size, + trace_label=trace_label) + + return choices + + +def run_location_logsums( + segment_name, + persons_merged_df, + skim_dict, skim_stack, + location_sample_df, + model_settings, + chunk_size, trace_hh_id, trace_label): + """ + add logsum column to existing location_sample table + + logsum is calculated by running the mode_choice model for each sample (person, dest_taz) pair + in location_sample, and computing the logsum of all the utilities + + +-----------+--------------+----------------+------------+----------------+ + | PERID | dest_TAZ | rand | pick_count | logsum (added) | + +===========+==============+================+============+================+ + | 23750 | 14 | 0.565502716034 | 4 | 1.85659498857 | + +-----------+--------------+----------------+------------+----------------+ + + 23750 | 16 | 0.711135838871 | 6 | 1.92315598631 | + +-----------+--------------+----------------+------------+----------------+ + + ... | | | | | + +-----------+--------------+----------------+------------+----------------+ + | 23751 | 12 | 0.408038878552 | 1 | 2.40612135416 | + +-----------+--------------+----------------+------------+----------------+ + | 23751 | 14 | 0.972732479292 | 2 | 1.44009018355 | + +-----------+--------------+----------------+------------+----------------+ + """ + + assert not location_sample_df.empty + + logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) + + # FIXME - MEMORY HACK - only include columns actually used in spec + persons_merged_df = \ + logsum.filter_chooser_columns(persons_merged_df, logsum_settings, model_settings) + + logger.info("Running %s with %s rows" % (trace_label, len(location_sample_df.index))) + + choosers = location_sample_df.join(persons_merged_df, how='left') + + tour_purpose = model_settings['LOGSUM_TOUR_PURPOSE'] + if isinstance(tour_purpose, dict): + tour_purpose = tour_purpose[segment_name] + + logsums = logsum.compute_logsums( + choosers, + tour_purpose, + logsum_settings, model_settings, + skim_dict, skim_stack, + chunk_size, trace_hh_id, + trace_label) + + # "add_column series should have an index matching the table to which it is being added" + # when the index has duplicates, however, in the special case that the series index exactly + # matches the table index, then the series value order is preserved + # logsums now does, since workplace_location_sample was on left side of merge de-dup merge + location_sample_df['mode_choice_logsum'] = logsums + + return location_sample_df + + +def run_location_simulate( + segment_name, + persons_merged, + location_sample_df, + skim_dict, + dest_size_terms, + model_settings, + chunk_size, trace_label): + """ + run location model on location_sample annotated with mode_choice logsum + to select a dest zone from sample alternatives + """ + assert not persons_merged.empty + + model_spec = simulate.read_model_spec(file_name=model_settings['SPEC']) + + # FIXME - MEMORY HACK - only include columns actually used in spec + chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] + choosers = persons_merged[chooser_columns] + + alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] + + # alternatives are pre-sampled and annotated with logsums and pick_count + # but we have to merge additional alt columns into alt sample list + alternatives = \ + pd.merge(location_sample_df, dest_size_terms, + left_on=alt_dest_col_name, right_index=True, how="left") + + logger.info("Running %s with %d persons" % (trace_label, len(choosers))) + + # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers + # and a TAZ in the alternatives which get merged during interaction + # the skims will be available under the name "skims" for any @ expressions + skims = skim_dict.wrap("TAZ_chooser", alt_dest_col_name) + + locals_d = { + 'skims': skims, + 'segment_size': segment_name + } + constants = config.get_model_constants(model_settings) + if constants is not None: + locals_d.update(constants) + + choices = interaction_sample_simulate( + choosers, + alternatives, + spec=spec_for_segment(model_spec, segment_name), + choice_column=alt_dest_col_name, + skims=skims, + locals_d=locals_d, + chunk_size=chunk_size, + trace_label=trace_label, + trace_choice_name=model_settings['DEST_CHOICE_COLUMN_NAME']) + + return choices + + +def run_location_choice( + persons_merged_df, + skim_dict, skim_stack, + spc, + model_settings, + chunk_size, trace_hh_id, trace_label + ): + """ + Run the three-part location choice algorithm to generate a location choice for each chooser + + Handle the various segments separately and in turn for simplicity of expression files + + Parameters + ---------- + persons_merged_df : pandas.DataFrame + persons table merged with households and land_use + skim_dict : skim.SkimDict + skim_stack : skim.SkimStack + spc : ShadowPriceCalculator + to get size terms + model_settings : dict + chunk_size : int + trace_hh_id : int + trace_label : str + + Returns + ------- + pandas.Series + location choices (zone ids) indexed by persons_merged_df.index + """ + + chooser_segment_column = model_settings['CHOOSER_SEGMENT_COLUMN_NAME'] + + # maps segment names to compact (integer) ids + segment_ids = model_settings['SEGMENT_IDS'] + + choices_list = [] + for segment_name, segment_id in iteritems(segment_ids): + + choosers = persons_merged_df[persons_merged_df[chooser_segment_column] == segment_id] + + # size_term and shadow price adjustment - one row per zone + dest_size_terms = spc.dest_size_terms(segment_name) + + if choosers.shape[0] == 0: + logger.info("%s skipping segment %s: no choosers", trace_label, segment_name) + continue + + # - location_sample + location_sample_df = \ + run_location_sample( + segment_name, + choosers, + skim_dict, + dest_size_terms, + model_settings, + chunk_size, + tracing.extend_trace_label(trace_label, 'sample.%s' % segment_name)) + + # - location_logsums + location_sample_df = \ + run_location_logsums( + segment_name, + choosers, + skim_dict, skim_stack, + location_sample_df, + model_settings, + chunk_size, + trace_hh_id, + tracing.extend_trace_label(trace_label, 'logsums.%s' % segment_name)) + + # - location_simulate + choices = \ + run_location_simulate( + segment_name, + choosers, + location_sample_df, + skim_dict, + dest_size_terms, + model_settings, + chunk_size, + tracing.extend_trace_label(trace_label, 'simulate.%s' % segment_name)) + + choices_list.append(choices) + + # FIXME - want to do this here? + del location_sample_df + force_garbage_collect() + + return pd.concat(choices_list) if len(choices_list) > 0 else pd.Series() + + +def iterate_location_choice( + model_settings, + persons_merged, persons, households, + skim_dict, skim_stack, + chunk_size, trace_hh_id, locutor, + trace_label): + """ + iterate run_location_choice updating shadow pricing until convergence criteria satisfied + or max_iterations reached. + + (If use_shadow_pricing not enabled, then just iterate once) + + Parameters + ---------- + model_settings : dict + persons_merged : injected table + persons : injected table + skim_dict : skim.SkimDict + skim_stack : skim.SkimStack + chunk_size : int + trace_hh_id : int + locutor : bool + whether this process is the privileged logger of shadow_pricing when multiprocessing + trace_label : str + + Returns + ------- + adds choice column model_settings['DEST_CHOICE_COLUMN_NAME'] and annotations to persons table + """ + + # column containing segment id + chooser_segment_column = model_settings['CHOOSER_SEGMENT_COLUMN_NAME'] + + # boolean to filter out persons not needing location modeling (e.g. is_worker, is_student) + chooser_filter_column = model_settings['CHOOSER_FILTER_COLUMN_NAME'] + + persons_merged_df = persons_merged.to_frame() + + persons_merged_df = persons_merged_df[persons_merged[chooser_filter_column]] + + spc = shadow_pricing.load_shadow_price_calculator(model_settings) + max_iterations = spc.max_iterations + + logging.debug("%s max_iterations: %s" % (trace_label, max_iterations)) + + choices = None + for iteration in range(1, max_iterations + 1): + + if spc.use_shadow_pricing and iteration > 1: + spc.update_shadow_prices() + + choices = run_location_choice( + persons_merged_df, + skim_dict, skim_stack, + spc, + model_settings, + chunk_size, trace_hh_id, + trace_label=tracing.extend_trace_label(trace_label, 'i%s' % iteration)) + + choices_df = choices.to_frame('dest_choice') + choices_df['segment_id'] = \ + persons_merged_df[chooser_segment_column].reindex(choices_df.index) + + spc.set_choices(choices_df) + + if locutor: + spc.write_trace_files(iteration) + + if spc.use_shadow_pricing and spc.check_fit(iteration): + logging.info("%s converged after iteration %s" % (trace_label, iteration,)) + break + + # - shadow price table + if locutor: + if spc.use_shadow_pricing and 'SHADOW_PRICE_TABLE' in model_settings: + inject.add_table(model_settings['SHADOW_PRICE_TABLE'], spc.shadow_prices) + if 'MODELED_SIZE_TABLE' in model_settings: + inject.add_table(model_settings['MODELED_SIZE_TABLE'], spc.modeled_size) + + dest_choice_column_name = model_settings['DEST_CHOICE_COLUMN_NAME'] + tracing.print_summary(dest_choice_column_name, choices, value_counts=True) + + persons_df = persons.to_frame() + + # We only chose school locations for the subset of persons who go to school + # so we backfill the empty choices with -1 to code as no school location + NO_DEST_TAZ = -1 + persons_df[dest_choice_column_name] = \ + choices.reindex(persons_df.index).fillna(NO_DEST_TAZ).astype(int) + + # - annotate persons table + if 'annotate_persons' in model_settings: + expressions.assign_columns( + df=persons_df, + model_settings=model_settings.get('annotate_persons'), + trace_label=tracing.extend_trace_label(trace_label, 'annotate_persons')) + + pipeline.replace_table("persons", persons_df) + + if trace_hh_id: + tracing.trace_df(persons_df, + label=trace_label, + warn_if_empty=True) + + # - annotate households table + if 'annotate_households' in model_settings: + + households_df = households.to_frame() + expressions.assign_columns( + df=households_df, + model_settings=model_settings.get('annotate_households'), + trace_label=tracing.extend_trace_label(trace_label, 'annotate_households')) + pipeline.replace_table("households", households_df) + + if trace_hh_id: + tracing.trace_df(households_df, + label=trace_label, + warn_if_empty=True) + + return persons_df + + +@inject.step() +def workplace_location( + persons_merged, persons, households, + skim_dict, skim_stack, + chunk_size, trace_hh_id, locutor): + """ + workplace location choice model + + iterate_location_choice adds location choice column and annotations to persons table + """ + + trace_label = 'workplace_location' + model_settings = config.read_model_settings('workplace_location.yaml') + + iterate_location_choice( + model_settings, + persons_merged, persons, households, + skim_dict, skim_stack, + chunk_size, trace_hh_id, locutor, trace_label + ) + + +@inject.step() +def school_location( + persons_merged, persons, households, + skim_dict, skim_stack, + chunk_size, trace_hh_id, locutor + ): + """ + School location choice model + + iterate_location_choice adds location choice column and annotations to persons table + """ + + trace_label = 'school_location' + model_settings = config.read_model_settings('school_location.yaml') + + iterate_location_choice( + model_settings, + persons_merged, persons, households, + skim_dict, skim_stack, + chunk_size, trace_hh_id, locutor, trace_label + ) diff --git a/activitysim/abm/models/mandatory_scheduling.py b/activitysim/abm/models/mandatory_scheduling.py index 008e6510b..cc02a4e9a 100644 --- a/activitysim/abm/models/mandatory_scheduling.py +++ b/activitysim/abm/models/mandatory_scheduling.py @@ -1,11 +1,12 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 import logging -import pandas as pd - from activitysim.core import simulate from activitysim.core import tracing from activitysim.core import config @@ -13,8 +14,11 @@ from activitysim.core import pipeline from activitysim.core import timetable as tt +from activitysim.core.util import reindex + from .util import expressions -from .util.vectorize_tour_scheduling import vectorize_tour_scheduling +from .util import vectorize_tour_scheduling as vts + from activitysim.core.util import assign_in_place @@ -23,22 +27,10 @@ DUMP = False -@inject.injectable() -def tour_scheduling_work_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'tour_scheduling_work.csv') - - -@inject.injectable() -def tour_scheduling_school_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'tour_scheduling_school.csv') - - @inject.step() def mandatory_tour_scheduling(tours, persons_merged, tdd_alts, - tour_scheduling_work_spec, - tour_scheduling_school_spec, chunk_size, trace_hh_id): """ @@ -46,9 +38,9 @@ def mandatory_tour_scheduling(tours, """ trace_label = 'mandatory_tour_scheduling' model_settings = config.read_model_settings('mandatory_tour_scheduling.yaml') + logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) tours = tours.to_frame() - persons_merged = persons_merged.to_frame() mandatory_tours = tours[tours.tour_category == 'mandatory'] # - if no mandatory_tours @@ -56,17 +48,51 @@ def mandatory_tour_scheduling(tours, tracing.no_results(trace_label) return - model_constants = config.get_model_constants(model_settings) + persons_merged = persons_merged.to_frame() - logger.info("Running mandatory_tour_scheduling with %d tours" % len(tours)) - tdd_choices = vectorize_tour_scheduling( + # - filter chooser columns for both logsums and simulate + logsum_columns = logsum_settings.get('LOGSUM_CHOOSER_COLUMNS', []) + model_columns = model_settings.get('SIMULATE_CHOOSER_COLUMNS', []) + chooser_columns = logsum_columns + [c for c in model_columns if c not in logsum_columns] + persons_merged = expressions.filter_chooser_columns(persons_merged, chooser_columns) + + # - add primary_purpose column + # mtctm1 segments mandatory_scheduling spec by tour_type + # (i.e. there are different specs for work and school tour_types) + # mtctm1 logsum coefficients are segmented by primary_purpose + # (i.e. there are different locsum coefficents for work, school, univ primary_purposes + # for simplicity managing these different segmentation schemes, + # we conflate them by segmenting the skims to align with primary_purpose + segment_col = 'primary_purpose' + if segment_col not in mandatory_tours: + + is_university_tour = \ + (mandatory_tours.tour_type == 'school') & \ + reindex(persons_merged.is_university, mandatory_tours.person_id) + + mandatory_tours['primary_purpose'] = \ + mandatory_tours.tour_type.where(~is_university_tour, 'univ') + + # - spec dict segmented by primary_purpose + work_spec = simulate.read_model_spec(file_name='tour_scheduling_work.csv') + school_spec = simulate.read_model_spec(file_name='tour_scheduling_school.csv') + segment_specs = { + 'work': work_spec, + 'school': school_spec, + 'univ': school_spec + } + + logger.info("Running mandatory_tour_scheduling with %d tours", len(tours)) + tdd_choices, timetable = vts.vectorize_tour_scheduling( mandatory_tours, persons_merged, tdd_alts, - spec={'work': tour_scheduling_work_spec, 'school': tour_scheduling_school_spec}, - constants=model_constants, + spec=segment_specs, segment_col=segment_col, + model_settings=model_settings, chunk_size=chunk_size, trace_label=trace_label) + timetable.replace_table() + assign_in_place(tours, tdd_choices) pipeline.replace_table("tours", tours) diff --git a/activitysim/abm/models/mandatory_tour_frequency.py b/activitysim/abm/models/mandatory_tour_frequency.py index f665ab0b4..c78954abd 100644 --- a/activitysim/abm/models/mandatory_tour_frequency.py +++ b/activitysim/abm/models/mandatory_tour_frequency.py @@ -1,11 +1,13 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import pandas as pd -import numpy as np from activitysim.core import simulate from activitysim.core import tracing @@ -19,22 +21,8 @@ logger = logging.getLogger(__name__) -@inject.injectable() -def mandatory_tour_frequency_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'mandatory_tour_frequency.csv') - - -@inject.injectable() -def mandatory_tour_frequency_alternatives(configs_dir): - # alt file for building tours even though simulation is simple_simulate not interaction_simulate - f = os.path.join(configs_dir, 'mandatory_tour_frequency_alternatives.csv') - df = pd.read_csv(f, comment='#') - df.set_index('alt', inplace=True) - return df - - def add_null_results(trace_label, mandatory_tour_frequency_settings): - logger.info("Skipping %s: add_null_results" % trace_label) + logger.info("Skipping %s: add_null_results", trace_label) persons = inject.get_table('persons').to_frame() persons['mandatory_tour_frequency'] = '' @@ -56,8 +44,6 @@ def add_null_results(trace_label, mandatory_tour_frequency_settings): @inject.step() def mandatory_tour_frequency(persons_merged, - mandatory_tour_frequency_spec, - mandatory_tour_frequency_alternatives, chunk_size, trace_hh_id): """ @@ -67,11 +53,14 @@ def mandatory_tour_frequency(persons_merged, trace_label = 'mandatory_tour_frequency' model_settings = config.read_model_settings('mandatory_tour_frequency.yaml') + model_spec = simulate.read_model_spec(file_name='mandatory_tour_frequency.csv') + alternatives = simulate.read_model_alts( + config.config_file_path('mandatory_tour_frequency_alternatives.csv'), set_index='alt') choosers = persons_merged.to_frame() # filter based on results of CDAP choosers = choosers[choosers.cdap_activity == 'M'] - logger.info("Running mandatory_tour_frequency with %d persons" % len(choosers)) + logger.info("Running mandatory_tour_frequency with %d persons", len(choosers)) # - if no mandatory tours if choosers.shape[0] == 0: @@ -95,7 +84,7 @@ def mandatory_tour_frequency(persons_merged, choices = simulate.simple_simulate( choosers=choosers, - spec=mandatory_tour_frequency_spec, + spec=model_spec, nest_spec=nest_spec, locals_d=constants, chunk_size=chunk_size, @@ -104,7 +93,7 @@ def mandatory_tour_frequency(persons_merged, # convert indexes to alternative names choices = pd.Series( - mandatory_tour_frequency_spec.columns[choices.values], + model_spec.columns[choices.values], index=choices.index).reindex(persons_merged.local.index) # - create mandatory tours @@ -116,18 +105,18 @@ def mandatory_tour_frequency(persons_merged, choosers['mandatory_tour_frequency'] = choices mandatory_tours = process_mandatory_tours( persons=choosers, - mandatory_tour_frequency_alts=mandatory_tour_frequency_alternatives + mandatory_tour_frequency_alts=alternatives ) tours = pipeline.extend_table("tours", mandatory_tours) - tracing.register_traceable_table('tours', tours) - pipeline.get_rn_generator().add_channel(mandatory_tours, 'tours') + tracing.register_traceable_table('tours', mandatory_tours) + pipeline.get_rn_generator().add_channel('tours', mandatory_tours) # - annotate persons persons = inject.get_table('persons').to_frame() # need to reindex as we only handled persons with cdap_activity == 'M' - persons['mandatory_tour_frequency'] = choices.reindex(persons.index) + persons['mandatory_tour_frequency'] = choices.reindex(persons.index).fillna('').astype(str) expressions.assign_columns( df=persons, diff --git a/activitysim/abm/models/non_mandatory_destination.py b/activitysim/abm/models/non_mandatory_destination.py index 7a3f0417d..917cd896c 100644 --- a/activitysim/abm/models/non_mandatory_destination.py +++ b/activitysim/abm/models/non_mandatory_destination.py @@ -1,37 +1,35 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import pandas as pd -from activitysim.core.simulate import read_model_spec from activitysim.core.interaction_simulate import interaction_simulate from activitysim.core import tracing from activitysim.core import config from activitysim.core import inject from activitysim.core import pipeline +from activitysim.core import simulate -from .util import expressions from activitysim.core.util import assign_in_place -from .util.tour_destination import tour_destination_size_terms - -logger = logging.getLogger(__name__) +from activitysim.abm.tables.size_terms import tour_destination_size_terms +from .util import tour_destination -@inject.injectable() -def non_mandatory_tour_destination_spec(configs_dir): - return read_model_spec(configs_dir, 'non_mandatory_tour_destination_sample.csv') +logger = logging.getLogger(__name__) @inject.step() def non_mandatory_tour_destination( tours, persons_merged, - skim_dict, - non_mandatory_tour_destination_spec, - land_use, size_terms, + skim_dict, skim_stack, chunk_size, trace_hh_id): @@ -47,8 +45,6 @@ def non_mandatory_tour_destination( tours = tours.to_frame() persons_merged = persons_merged.to_frame() - alternatives = tour_destination_size_terms(land_use, size_terms, 'non_mandatory') - spec = non_mandatory_tour_destination_spec # choosers are tours - in a sense tours are choosing their destination non_mandatory_tours = tours[tours.tour_category == 'non_mandatory'] @@ -58,63 +54,13 @@ def non_mandatory_tour_destination( tracing.no_results(trace_label) return - # FIXME - don't need all persons_merged columns... - choosers = pd.merge(non_mandatory_tours, persons_merged, left_on='person_id', right_index=True) - - constants = config.get_model_constants(model_settings) - - sample_size = model_settings["SAMPLE_SIZE"] - - # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers - # and a TAZ in the alternatives which get merged during interaction - # interaction_dataset adds '_r' suffix to duplicate columns, - # so TAZ column from households is TAZ and TAZ column from alternatives becomes TAZ_r - skims = skim_dict.wrap("TAZ", "TAZ_r") - - locals_d = { - 'skims': skims - } - if constants is not None: - locals_d.update(constants) - - logger.info("Running non_mandatory_tour_destination_choice with %d non_mandatory_tours" % - len(choosers.index)) - - choices_list = [] - # segment by trip type and pick the right spec for each person type - for name, segment in choosers.groupby('tour_type'): - - # FIXME - there are two options here escort with kids and without - kludge_name = name - if name == "escort": - logging.error("destination_choice escort not implemented - running shopping instead") - kludge_name = "shopping" - - # the segment is now available to switch between size terms - locals_d['segment'] = kludge_name - - # FIXME - no point in considering impossible alternatives (where dest size term is zero) - alternatives_segment = alternatives[alternatives[kludge_name] > 0] - - logger.info("Running segment '%s' of %d tours %d alternatives" % - (name, len(segment), len(alternatives_segment))) - - # name index so tracing knows how to slice - assert segment.index.name == 'tour_id' - - choices = interaction_simulate( - segment, - alternatives_segment, - spec[[kludge_name]], - skims=skims, - locals_d=locals_d, - sample_size=sample_size, - chunk_size=chunk_size, - trace_label=tracing.extend_trace_label(trace_label, name)) - - choices_list.append(choices) - - choices = pd.concat(choices_list) + choices = tour_destination.run_tour_destination( + tours, + persons_merged, + model_settings, + skim_dict, + skim_stack, + chunk_size, trace_hh_id, trace_label) non_mandatory_tours['destination'] = choices diff --git a/activitysim/abm/models/non_mandatory_scheduling.py b/activitysim/abm/models/non_mandatory_scheduling.py index d6c28cebe..8c935f1d3 100644 --- a/activitysim/abm/models/non_mandatory_scheduling.py +++ b/activitysim/abm/models/non_mandatory_scheduling.py @@ -1,17 +1,18 @@ # ActivitySim # See full license in LICENSE.txt. -import os -import logging +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 -import pandas as pd +import logging -from activitysim.core import simulate as asim from activitysim.core import tracing from activitysim.core import config from activitysim.core import inject from activitysim.core import pipeline from activitysim.core import timetable as tt +from activitysim.core import simulate from .util import expressions from .util.vectorize_tour_scheduling import vectorize_tour_scheduling @@ -22,16 +23,10 @@ DUMP = False -@inject.injectable() -def tour_scheduling_nonmandatory_spec(configs_dir): - return asim.read_model_spec(configs_dir, 'tour_scheduling_nonmandatory.csv') - - @inject.step() def non_mandatory_tour_scheduling(tours, persons_merged, tdd_alts, - tour_scheduling_nonmandatory_spec, chunk_size, trace_hh_id): """ @@ -39,19 +34,27 @@ def non_mandatory_tour_scheduling(tours, """ trace_label = 'non_mandatory_tour_scheduling' - model_settinsg = config.read_model_settings('non_mandatory_tour_scheduling.yaml') + model_settings = config.read_model_settings('non_mandatory_tour_scheduling.yaml') - tours = tours.to_frame() - persons_merged = persons_merged.to_frame() + model_spec = simulate.read_model_spec(file_name='tour_scheduling_nonmandatory.csv') + segment_col = None # no segmentation of model_spec + tours = tours.to_frame() non_mandatory_tours = tours[tours.tour_category == 'non_mandatory'] - logger.info("Running non_mandatory_tour_scheduling with %d tours" % len(tours)) + logger.info("Running non_mandatory_tour_scheduling with %d tours", len(tours)) + + persons_merged = persons_merged.to_frame() - constants = config.get_model_constants(model_settinsg) + if 'SIMULATE_CHOOSER_COLUMNS' in model_settings: + persons_merged =\ + expressions.filter_chooser_columns(persons_merged, + model_settings['SIMULATE_CHOOSER_COLUMNS']) + + constants = config.get_model_constants(model_settings) # - run preprocessor to annotate choosers - preprocessor_settings = model_settinsg.get('preprocessor', None) + preprocessor_settings = model_settings.get('preprocessor', None) if preprocessor_settings: locals_d = {} @@ -64,13 +67,15 @@ def non_mandatory_tour_scheduling(tours, locals_dict=locals_d, trace_label=trace_label) - tdd_choices = vectorize_tour_scheduling( + tdd_choices, timetable = vectorize_tour_scheduling( non_mandatory_tours, persons_merged, - tdd_alts, tour_scheduling_nonmandatory_spec, - constants=constants, + tdd_alts, model_spec, segment_col, + model_settings=model_settings, chunk_size=chunk_size, trace_label=trace_label) + timetable.replace_table() + assign_in_place(tours, tdd_choices) pipeline.replace_table("tours", tours) diff --git a/activitysim/abm/models/non_mandatory_tour_frequency.py b/activitysim/abm/models/non_mandatory_tour_frequency.py index bb63310bf..7b01c6fc6 100644 --- a/activitysim/abm/models/non_mandatory_tour_frequency.py +++ b/activitysim/abm/models/non_mandatory_tour_frequency.py @@ -1,18 +1,23 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging +import numpy as np import pandas as pd -from activitysim.core.simulate import read_model_spec from activitysim.core.interaction_simulate import interaction_simulate from activitysim.core import tracing from activitysim.core import pipeline from activitysim.core import config from activitysim.core import inject +from activitysim.core import simulate +from activitysim.core import logit from .util import expressions from .util.overlap import person_max_window @@ -24,25 +29,114 @@ logger = logging.getLogger(__name__) -@inject.injectable() -def non_mandatory_tour_frequency_spec(configs_dir): - return read_model_spec(configs_dir, 'non_mandatory_tour_frequency.csv') +def extension_probs(): + f = config.config_file_path('non_mandatory_tour_frequency_extension_probs.csv') + df = pd.read_csv(f, comment='#') + # convert cum probs to individual probs + df['2_tours'] = df['2_tours'] - df['1_tours'] + df['1_tours'] = df['1_tours'] - df['0_tours'] -@inject.injectable() -def non_mandatory_tour_frequency_alts(configs_dir): - f = os.path.join(configs_dir, 'non_mandatory_tour_frequency_alternatives.csv') - df = pd.read_csv(f, comment='#') return df +def extend_tour_counts(persons, tour_counts, alternatives, trace_hh_id, trace_label): + """ + extend tour counts based on a probability table + + counts can only be extended if original count is between 1 and 4 + and tours can only be extended if their count is at the max possible + (e.g. 2 for escort, 1 otherwise) so escort might be increased to 3 or 4 + and other tour types might be increased to 2 or 3 + + Parameters + ---------- + persons: pandas dataframe + (need this for join columns) + tour_counts: pandas dataframe + one row per person, once column per tour_type + alternatives + alternatives from nmtv interaction_simulate + only need this to know max possible frequency for a tour type + trace_hh_id + trace_label + + Returns + ------- + extended tour_counts + + + tour_counts looks like this: + escort shopping othmaint othdiscr eatout social + parent_id + 2588676 2 0 0 1 1 0 + 2588677 0 1 0 1 0 0 + + """ + + assert tour_counts.index.name == persons.index.name + + PROBABILITY_COLUMNS = ['0_tours', '1_tours', '2_tours'] + JOIN_COLUMNS = ['ptype', 'has_mandatory_tour', 'has_joint_tour'] + TOUR_TYPE_COL = 'nonmandatory_tour_type' + + probs_spec = extension_probs() + persons = persons[JOIN_COLUMNS] + + # only extend if there are 1 - 4 non_mandatory tours to start with + extend_tour_counts = tour_counts.sum(axis=1).between(1, 4) + if not extend_tour_counts.any(): + return tour_counts + + have_trace_targets = trace_hh_id and tracing.has_trace_targets(extend_tour_counts) + + for i, tour_type in enumerate(alternatives.columns): + + i_tour_type = i + 1 # (probs_spec nonmandatory_tour_type column is 1-based) + tour_type_trace_label = tracing.extend_trace_label(trace_label, tour_type) + + # - only extend tour if frequency is max possible frequency for this tour type + tour_type_is_maxed = \ + extend_tour_counts & (tour_counts[tour_type] == alternatives[tour_type].max()) + maxed_tour_count_idx = tour_counts.index[tour_type_is_maxed] + + if len(maxed_tour_count_idx) == 0: + continue + + # - get extension probs for tour_type + choosers = pd.merge( + persons.loc[maxed_tour_count_idx], + probs_spec[probs_spec[TOUR_TYPE_COL] == i_tour_type], + on=JOIN_COLUMNS, + how='left' + ).set_index(maxed_tour_count_idx) + assert choosers.index.name == tour_counts.index.name + + # - random choice of extension magnituce based on relative probs + choices, rands = logit.make_choices( + choosers[PROBABILITY_COLUMNS], + trace_label=tour_type_trace_label, + trace_choosers=choosers) + + # - extend tour_count (0-based prob alternative choice equals magnitude of extension) + if choices.any(): + tour_counts.loc[choices.index, tour_type] += choices + + if have_trace_targets: + tracing.trace_df(choices, + tracing.extend_trace_label(tour_type_trace_label, 'choices'), + columns=[None, 'choice']) + tracing.trace_df(rands, + tracing.extend_trace_label(tour_type_trace_label, 'rands'), + columns=[None, 'rand']) + + return tour_counts + + @inject.step() def non_mandatory_tour_frequency(persons, persons_merged, - non_mandatory_tour_frequency_alts, - non_mandatory_tour_frequency_spec, chunk_size, trace_hh_id): - """ This model predicts the frequency of making non-mandatory trips (alternatives for this model come from a separate csv file which is @@ -52,11 +146,17 @@ def non_mandatory_tour_frequency(persons, persons_merged, trace_label = 'non_mandatory_tour_frequency' model_settings = config.read_model_settings('non_mandatory_tour_frequency.yaml') + model_spec = simulate.read_model_spec(file_name='non_mandatory_tour_frequency.csv') + + alternatives = simulate.read_model_alts( + config.config_file_path('non_mandatory_tour_frequency_alternatives.csv'), + set_index=None) choosers = persons_merged.to_frame() # FIXME kind of tacky both that we know to add this here and del it below - non_mandatory_tour_frequency_alts['tot_tours'] = non_mandatory_tour_frequency_alts.sum(axis=1) + # 'tot_tours' is used in model_spec expressions + alternatives['tot_tours'] = alternatives.sum(axis=1) # - preprocessor preprocessor_settings = model_settings.get('preprocessor', None) @@ -75,7 +175,7 @@ def non_mandatory_tour_frequency(persons, persons_merged, # filter based on results of CDAP choosers = choosers[choosers.cdap_activity.isin(['M', 'N'])] - logger.info("Running non_mandatory_tour_frequency with %d persons" % len(choosers)) + logger.info("Running non_mandatory_tour_frequency with %d persons", len(choosers)) constants = config.get_model_constants(model_settings) @@ -86,16 +186,16 @@ def non_mandatory_tour_frequency(persons, persons_merged, name = PTYPE_NAME[ptype] # pick the spec column for the segment - spec = non_mandatory_tour_frequency_spec[[name]] + spec = model_spec[[name]] # drop any zero-valued rows spec = spec[spec[name] != 0] - logger.info("Running segment '%s' of size %d" % (name, len(segment))) + logger.info("Running segment '%s' of size %d", name, len(segment)) choices = interaction_simulate( segment, - non_mandatory_tour_frequency_alts, + alternatives, spec=spec, locals_d=constants, chunk_size=chunk_size, @@ -109,25 +209,53 @@ def non_mandatory_tour_frequency(persons, persons_merged, choices = pd.concat(choices_list) - persons = persons.to_frame() + del alternatives['tot_tours'] # del tot_tours column we added above + # - add non_mandatory_tour_frequency column to persons + persons = persons.to_frame() # need to reindex as we only handled persons with cdap_activity in ['M', 'N'] - persons['non_mandatory_tour_frequency'] = choices.reindex(persons.index) + # (we expect there to be an alt with no tours - which we can use to backfill non-travelers) + no_tours_alt = (alternatives.sum(axis=1) == 0).index[0] + persons['non_mandatory_tour_frequency'] = \ + choices.reindex(persons.index).fillna(no_tours_alt).astype(np.int8) """ We have now generated non-mandatory tours, but they are attributes of the person table Now we create a "tours" table which has one row per tour that has been generated (and the person id it is associated with) """ - del non_mandatory_tour_frequency_alts['tot_tours'] # del tot_tours column we added above - non_mandatory_tours = process_non_mandatory_tours( - persons[~persons.mandatory_tour_frequency.isnull()], - non_mandatory_tour_frequency_alts, - ) - - tours = pipeline.extend_table("tours", non_mandatory_tours) - tracing.register_traceable_table('tours', tours) - pipeline.get_rn_generator().add_channel(non_mandatory_tours, 'tours') + + # - get counts of each of the alternatives (so we can extend) + # (choices is just the index values for the chosen alts) + """ + escort shopping othmaint othdiscr eatout social + parent_id + 2588676 2 0 0 1 1 0 + 2588677 0 1 0 1 0 0 + """ + tour_counts = alternatives.loc[choices] + tour_counts.index = choices.index # assign person ids to the index + + prev_tour_count = tour_counts.sum().sum() + + # - extend_tour_counts + tour_counts = extend_tour_counts(choosers, tour_counts, alternatives, + trace_hh_id, + tracing.extend_trace_label(trace_label, 'extend_tour_counts')) + + extended_tour_count = tour_counts.sum().sum() + + logging.info("extend_tour_counts increased nmtf tour count by %s from %s to %s" % + (extended_tour_count - prev_tour_count, prev_tour_count, extended_tour_count)) + + # - create the non_mandatory tours + non_mandatory_tours = process_non_mandatory_tours(persons, tour_counts) + assert len(non_mandatory_tours) == extended_tour_count + + pipeline.extend_table("tours", non_mandatory_tours) + + tracing.register_traceable_table('tours', non_mandatory_tours) + pipeline.get_rn_generator().add_channel('tours', non_mandatory_tours) expressions.assign_columns( df=persons, diff --git a/activitysim/abm/models/school_location.py b/activitysim/abm/models/school_location.py deleted file mode 100644 index 2c10511c0..000000000 --- a/activitysim/abm/models/school_location.py +++ /dev/null @@ -1,330 +0,0 @@ -# ActivitySim -# See full license in LICENSE.txt. - -import logging -from collections import OrderedDict - -import numpy as np -import pandas as pd - -from activitysim.core import tracing -from activitysim.core import config -from activitysim.core import pipeline -from activitysim.core import simulate -from activitysim.core import inject - -from activitysim.core.interaction_sample_simulate import interaction_sample_simulate -from activitysim.core.interaction_sample import interaction_sample - -from activitysim.core.util import reindex -from activitysim.core.util import left_merge_on_index_and_col - -from .util import logsums as logsum -from .util.tour_destination import tour_destination_size_terms - -from .util import expressions - -""" -The school location model predicts the zones in which various people will -go to school. -""" - -logger = logging.getLogger(__name__) - -# use int not str to identify school type in sample df -SCHOOL_TYPE_ID = OrderedDict([('university', 1), ('highschool', 2), ('gradeschool', 3)]) - - -@inject.injectable() -def school_location_sample_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'school_location_sample.csv') - - -@inject.injectable() -def school_location_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'school_location.csv') - - -@inject.step() -def school_location_sample( - persons_merged, - school_location_sample_spec, - skim_dict, - land_use, size_terms, - chunk_size, - trace_hh_id): - - """ - build a table of persons * all zones to select a sample of alternative school locations. - - PERID, dest_TAZ, rand, pick_count - 23750, 14, 0.565502716034, 4 - 23750, 16, 0.711135838871, 6 - ... - 23751, 12, 0.408038878552, 1 - 23751, 14, 0.972732479292, 2 - """ - - trace_label = 'school_location_sample' - model_settings = config.read_model_settings('school_location.yaml') - - choosers = persons_merged.to_frame() - # FIXME - MEMORY HACK - only include columns actually used in spec - chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] - choosers = choosers[chooser_columns] - - size_terms = tour_destination_size_terms(land_use, size_terms, 'school') - - sample_size = model_settings["SAMPLE_SIZE"] - alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] - - logger.info("Running school_location_simulate with %d persons" % len(choosers)) - - # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers - # and a TAZ in the alternatives which get merged during interaction - # the skims will be available under the name "skims" for any @ expressions - skims = skim_dict.wrap("TAZ", "TAZ_r") - - locals_d = { - 'skims': skims - } - constants = config.get_model_constants(model_settings) - if constants is not None: - locals_d.update(constants) - - choices_list = [] - for school_type, school_type_id in SCHOOL_TYPE_ID.iteritems(): - - locals_d['segment'] = school_type - - choosers_segment = choosers[choosers["is_" + school_type]] - - if choosers_segment.shape[0] == 0: - logger.info("%s skipping school_type %s: no choosers" % (trace_label, school_type)) - continue - - # alts indexed by taz with one column containing size_term for this tour_type - alternatives_segment = size_terms[[school_type]] - - # no point in considering impossible alternatives (where dest size term is zero) - alternatives_segment = alternatives_segment[alternatives_segment[school_type] > 0] - - logger.info("school_type %s: %s persons %s alternatives" % - (school_type, len(choosers_segment), len(alternatives_segment))) - - choices = interaction_sample( - choosers_segment, - alternatives_segment, - sample_size=sample_size, - alt_col_name=alt_dest_col_name, - spec=school_location_sample_spec[[school_type]], - skims=skims, - locals_d=locals_d, - chunk_size=chunk_size, - trace_label=tracing.extend_trace_label(trace_label, school_type)) - - choices['school_type'] = school_type_id - choices_list.append(choices) - - if len(choices_list) > 0: - choices = pd.concat(choices_list) - # - # NARROW - choices['school_type'] = choices['school_type'].astype(np.uint8) - else: - logger.info("Skipping %s: add_null_results" % trace_label) - choices = pd.DataFrame() - - inject.add_table('school_location_sample', choices) - - -@inject.step() -def school_location_logsums( - persons_merged, - skim_dict, skim_stack, - school_location_sample, - chunk_size, - trace_hh_id): - - """ - add logsum column to existing school_location_sample able - - logsum is calculated by running the mode_choice model for each sample (person, dest_taz) pair - in school_location_sample, and computing the logsum of all the utilities - - +-------+--------------+----------------+------------+----------------+ - | PERID | dest_TAZ | rand | pick_count | logsum (added) | - +=======+==============+================+============+================+ - | 23750 | 14 | 0.565502716034 | 4 | 1.85659498857 | - +-------+--------------+----------------+------------+----------------+ - + 23750 | 16 | 0.711135838871 | 6 | 1.92315598631 | - +-------+--------------+----------------+------------+----------------+ - + ... | | | | | - +-------+--------------+----------------+------------+----------------+ - | 23751 | 12 | 0.408038878552 | 1 | 2.40612135416 | - +-------+--------------+----------------+------------+----------------+ - | 23751 | 14 | 0.972732479292 | 2 | 1.44009018355 | - +-------+--------------+----------------+------------+----------------+ - """ - - trace_label = 'school_location_logsums' - - model_settings = config.read_model_settings('school_location.yaml') - logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) - - location_sample = school_location_sample.to_frame() - - if location_sample.shape[0] == 0: - tracing.no_results(trace_label) - return - - logger.info("Running school_location_logsums with %s rows" % location_sample.shape[0]) - - persons_merged = persons_merged.to_frame() - # - only include columns actually used in spec - persons_merged = logsum.filter_chooser_columns(persons_merged, logsum_settings, model_settings) - - logsums_list = [] - for school_type, school_type_id in SCHOOL_TYPE_ID.iteritems(): - - tour_purpose = 'univ' if school_type == 'university' else 'school' - - choosers = location_sample[location_sample['school_type'] == school_type_id] - - if choosers.shape[0] == 0: - logger.info("%s skipping school_type %s: no choosers" % (trace_label, school_type)) - continue - - choosers = pd.merge( - choosers, - persons_merged, - left_index=True, - right_index=True, - how="left") - - logsums = logsum.compute_logsums( - choosers, - tour_purpose, - logsum_settings, model_settings, - skim_dict, skim_stack, - chunk_size, trace_hh_id, - tracing.extend_trace_label(trace_label, school_type)) - - logsums_list.append(logsums) - - logsums = pd.concat(logsums_list) - - # add_column series should have an index matching the table to which it is being added - # logsums does, since school_location_sample was on left side of merge creating choosers - - # "add_column series should have an index matching the table to which it is being added" - # when the index has duplicates, however, in the special case that the series index exactly - # matches the table index, then the series value order is preserved. - # logsums does align with school_location_sample as we loop through it in exactly the same - # order as we did when we created it - inject.add_column('school_location_sample', 'mode_choice_logsum', logsums) - - -@inject.step() -def school_location_simulate(persons_merged, persons, - school_location_sample, - school_location_spec, - skim_dict, - land_use, size_terms, - chunk_size, - trace_hh_id): - """ - School location model on school_location_sample annotated with mode_choice logsum - to select a school_taz from sample alternatives - """ - trace_label = 'school_location_simulate' - model_settings = config.read_model_settings('school_location.yaml') - - NO_SCHOOL_TAZ = -1 - - location_sample = school_location_sample.to_frame() - persons = persons.to_frame() - - # if there are any school-goers - if location_sample.shape[0] > 0: - - choosers = persons_merged.to_frame() - destination_size_terms = tour_destination_size_terms(land_use, size_terms, 'school') - - alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] - - # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers - # and a TAZ in the alternatives which get merged during interaction - # the skims will be available under the name "skims" for any @ expressions - skims = skim_dict.wrap("TAZ", alt_dest_col_name) - - locals_d = { - 'skims': skims, - } - constants = config.get_model_constants(model_settings) - if constants is not None: - locals_d.update(constants) - - # FIXME - MEMORY HACK - only include columns actually used in spec - chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] - choosers = choosers[chooser_columns] - - choices_list = [] - for school_type, school_type_id in SCHOOL_TYPE_ID.iteritems(): - - locals_d['segment'] = school_type - - choosers_segment = choosers[choosers["is_" + school_type]] - - if choosers_segment.shape[0] == 0: - logger.info("%s skipping school_type %s: no choosers" % (trace_label, school_type)) - continue - - alts_segment = \ - location_sample[location_sample['school_type'] == school_type_id] - - # alternatives are pre-sampled and annotated with logsums and pick_count - # but we have to merge size_terms column into alt sample list - alts_segment[school_type] = \ - reindex(destination_size_terms[school_type], alts_segment[alt_dest_col_name]) - - choices = interaction_sample_simulate( - choosers_segment, - alts_segment, - spec=school_location_spec[[school_type]], - choice_column=alt_dest_col_name, - skims=skims, - locals_d=locals_d, - chunk_size=chunk_size, - trace_label=tracing.extend_trace_label(trace_label, school_type), - trace_choice_name='school_location') - - choices_list.append(choices) - - choices = pd.concat(choices_list) - - # We only chose school locations for the subset of persons who go to school - # so we backfill the empty choices with -1 to code as no school location - persons['school_taz'] = choices.reindex(persons.index).fillna(NO_SCHOOL_TAZ).astype(int) - - tracing.print_summary('school_taz', choices, describe=True) - - else: - - # no school-goers (but we still want to annotate persons) - persons['school_taz'] = NO_SCHOOL_TAZ - - logger.info("%s no school-goers" % trace_label) - - expressions.assign_columns( - df=persons, - model_settings=model_settings.get('annotate_persons'), - trace_label=tracing.extend_trace_label(trace_label, 'annotate_persons')) - - pipeline.replace_table("persons", persons) - - pipeline.drop_table('school_location_sample') - - if trace_hh_id: - tracing.trace_df(persons, - label="school_location", - warn_if_empty=True) diff --git a/activitysim/abm/models/stop_frequency.py b/activitysim/abm/models/stop_frequency.py index 3240fe085..c204d00cb 100644 --- a/activitysim/abm/models/stop_frequency.py +++ b/activitysim/abm/models/stop_frequency.py @@ -1,7 +1,10 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import numpy as np @@ -20,22 +23,11 @@ logger = logging.getLogger(__name__) -def get_stop_frequency_spec(tour_type): - - configs_dir = inject.get_injectable('configs_dir') - file_name = 'stop_frequency_%s.csv' % tour_type - - if not os.path.exists(os.path.join(configs_dir, file_name)): - return None - - return simulate.read_model_spec(configs_dir, file_name) - - @inject.injectable() -def stop_frequency_alts(configs_dir): +def stop_frequency_alts(): # alt file for building trips even though simulation is simple_simulate not interaction_simulate - f = os.path.join(configs_dir, 'stop_frequency_alternatives.csv') - df = pd.read_csv(f, comment='#') + file_path = config.config_file_path('stop_frequency_alternatives.csv') + df = pd.read_csv(file_path, comment='#') df.set_index('alt', inplace=True) return df @@ -49,6 +41,7 @@ def process_trips(tours, stop_frequency_alts): # get the actual alternatives for each person - have to go back to the # stop_frequency_alts dataframe to get this - the stop_frequency choice # column has the index values for the chosen alternative + trips = stop_frequency_alts.loc[tours.stop_frequency] # assign tour ids to the index @@ -203,7 +196,7 @@ def stop_frequency( logging.info("%s running segment %s with %s chooser rows" % (trace_label, segment_type, choosers.shape[0])) - spec = get_stop_frequency_spec(segment_type) + spec = simulate.read_model_spec(file_name='stop_frequency_%s.csv' % segment_type) assert spec is not None, "spec for segment_type %s not found" % segment_type @@ -237,7 +230,7 @@ def stop_frequency( trips = process_trips(tours, stop_frequency_alts) trips = pipeline.extend_table("trips", trips) tracing.register_traceable_table('trips', trips) - pipeline.get_rn_generator().add_channel(trips, 'trips') + pipeline.get_rn_generator().add_channel('trips', trips) if trace_hh_id: tracing.trace_df(tours, diff --git a/activitysim/abm/models/tour_mode_choice.py b/activitysim/abm/models/tour_mode_choice.py index d2b46fb1c..6af13c471 100644 --- a/activitysim/abm/models/tour_mode_choice.py +++ b/activitysim/abm/models/tour_mode_choice.py @@ -1,24 +1,23 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import pandas as pd -import yaml -from activitysim.core import simulate from activitysim.core import tracing from activitysim.core import config from activitysim.core import inject from activitysim.core import pipeline -from activitysim.core.util import force_garbage_collect +from activitysim.core.mem import force_garbage_collect from activitysim.core.util import assign_in_place from .util.mode import tour_mode_choice_spec - from .util.mode import run_tour_mode_choice_simulate -from .util.mode import annotate_preprocessors logger = logging.getLogger(__name__) @@ -56,7 +55,7 @@ def tour_mode_choice_simulate(tours, persons_merged, primary_tours.tour_type, value_counts=True) primary_tours_merged = pd.merge(primary_tours, persons_merged, left_on='person_id', - right_index=True, how='left') + right_index=True, how='left', suffixes=('', '_r')) # setup skim keys orig_col_name = 'TAZ' diff --git a/activitysim/abm/models/trip_destination.py b/activitysim/abm/models/trip_destination.py index 2896f858a..4c293aa59 100644 --- a/activitysim/abm/models/trip_destination.py +++ b/activitysim/abm/models/trip_destination.py @@ -1,7 +1,11 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import range + import logging import numpy as np @@ -18,15 +22,12 @@ from activitysim.core.util import reindex from activitysim.core.util import assign_in_place -from .util import logsums from .util import expressions -from .util.mode import annotate_preprocessors -from .util.trip_mode import trip_mode_choice_spec -from .util.trip_mode import trip_mode_choice_coeffecients_spec -from activitysim.core.assign import evaluate_constants +from activitysim.core import assign + +from activitysim.abm.tables.size_terms import tour_destination_size_terms -from .util.tour_destination import tour_destination_size_terms from activitysim.core.skim import DataFrameMatrix from activitysim.core.interaction_sample_simulate import interaction_sample_simulate @@ -41,8 +42,9 @@ def get_spec_for_purpose(model_settings, spec_name, purpose): - configs_dir = inject.get_injectable('configs_dir') - omnibus_spec = simulate.read_model_spec(configs_dir, model_settings[spec_name]) + + omnibus_spec = simulate.read_model_spec(file_name=model_settings[spec_name]) + spec = omnibus_spec[[purpose]] # might as well ignore any spec rows with 0 utility @@ -83,7 +85,7 @@ def trip_destination_sample( sample_size = model_settings["SAMPLE_SIZE"] alt_dest_col_name = model_settings["ALT_DEST"] - logger.info("Running %s with %d trips" % (trace_label, trips.shape[0])) + logger.info("Running %s with %d trips", trace_label, trips.shape[0]) locals_dict = config.get_model_constants(model_settings).copy() locals_dict.update({ @@ -121,13 +123,13 @@ def compute_ood_logsums( locals_dict.update(od_skims) - annotate_preprocessors( + expressions.annotate_preprocessors( choosers, locals_dict, od_skims, logsum_settings, trace_label) nest_spec = config.get_logit_model_settings(logsum_settings) - logsum_spec = trip_mode_choice_spec(logsum_settings) + logsum_spec = simulate.read_model_spec(file_name=logsum_settings['SPEC']) logsums = simulate.simple_simulate_logsums( choosers, @@ -165,7 +167,7 @@ def compute_logsums( adds od_logsum and dp_logsum columns to trips (in place) """ trace_label = tracing.extend_trace_label(trace_label, 'compute_logsums') - logger.info("Running %s with %d samples" % (trace_label, destination_sample.shape[0])) + logger.info("Running %s with %d samples", trace_label, destination_sample.shape[0]) # - trips_merged - merge trips and tours_merged trips_merged = pd.merge( @@ -187,11 +189,14 @@ def compute_logsums( assert choosers.index.equals(destination_sample.index) logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) - omnibus_coefficient_spec = trip_mode_choice_coeffecients_spec(logsum_settings) + + omnibus_coefficient_spec = \ + assign.read_constant_spec(config.config_file_path(logsum_settings['COEFFS'])) + coefficient_spec = omnibus_coefficient_spec[primary_purpose] constants = config.get_model_constants(logsum_settings) - locals_dict = evaluate_constants(coefficient_spec, constants=constants) + locals_dict = assign.evaluate_constants(coefficient_spec, constants=constants) locals_dict.update(constants) # - od_logsums @@ -248,7 +253,7 @@ def trip_destination_simulate( alt_dest_col_name = model_settings["ALT_DEST"] - logger.info("Running trip_destination_simulate with %d trips" % len(trips)) + logger.info("Running trip_destination_simulate with %d trips", len(trips)) locals_dict = config.get_model_constants(model_settings).copy() locals_dict.update({ @@ -270,7 +275,7 @@ def trip_destination_simulate( # drop any failed zero_prob destinations if (destinations == NO_DESTINATION).any(): - # logger.debug("dropping %s failed destinations" % (destinations == NO_DESTINATION).sum()) + # logger.debug("dropping %s failed destinations", destinations == NO_DESTINATION).sum() destinations = destinations[destinations != NO_DESTINATION] return destinations @@ -286,9 +291,8 @@ def choose_trip_destination( chunk_size, trace_hh_id, trace_label): - logger.info("choose_trip_destination %s with %d trips" % (trace_label, trips.shape[0])) + logger.info("choose_trip_destination %s with %d trips", trace_label, trips.shape[0]) - # FIXME want timing? t0 = print_elapsed_time() # - trip_destination_sample @@ -303,8 +307,9 @@ def choose_trip_destination( dropped_trips = ~trips.index.isin(destination_sample.index.unique()) if dropped_trips.any(): - logger.warn("%s trip_destination_ample %s trips without viable destination alternatives" - % (trace_label, dropped_trips.sum())) + logger.warning("%s trip_destination_sample %s trips " + "without viable destination alternatives" % + (trace_label, dropped_trips.sum())) trips = trips[~dropped_trips] t0 = print_elapsed_time("%s.trip_destination_sample" % trace_label, t0) @@ -337,8 +342,9 @@ def choose_trip_destination( dropped_trips = ~trips.index.isin(destinations.index) if dropped_trips.any(): - logger.warn("%s trip_destination_simulate %s trips without viable destination alternatives" - % (trace_label, dropped_trips.sum())) + logger.warning("%s trip_destination_simulate %s trips " + "without viable destination alternatives" % + (trace_label, dropped_trips.sum())) t0 = print_elapsed_time("%s.trip_destination_simulate" % trace_label, t0) @@ -421,7 +427,7 @@ def run_trip_destination( logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) land_use = inject.get_table('land_use') - size_terms = inject.get_table('size_terms') + size_terms = inject.get_injectable('size_terms') # - initialize trip origin and destination to those of half-tour # (we will sequentially adjust intermediate trips origin and destination as we choose them) @@ -479,7 +485,7 @@ def run_trip_destination( locals_dict=config.get_model_constants(model_settings), trace_label=nth_trace_label) - logger.info("Running %s with %d trips" % (nth_trace_label, nth_trips.shape[0])) + logger.info("Running %s with %d trips", nth_trace_label, nth_trips.shape[0]) # - choose destination for nth_trips, segmented by primary_purpose choices_list = [] @@ -500,8 +506,8 @@ def run_trip_destination( failed_trip_ids = nth_trips.index.difference(destinations.index) if failed_trip_ids.any(): - logger.warn("%s sidelining %s trips without viable destination alternatives" - % (nth_trace_label, failed_trip_ids.shape[0])) + logger.warning("%s sidelining %s trips without viable destination alternatives" % + (nth_trace_label, failed_trip_ids.shape[0])) next_trip_ids = nth_trips.next_trip_id.reindex(failed_trip_ids) trips.loc[failed_trip_ids, 'failed'] = True trips.loc[failed_trip_ids, 'destination'] = -1 @@ -537,6 +543,8 @@ def trip_destination( trips_df = trips.to_frame() tours_merged_df = tours_merged.to_frame() + logger.info("Running %s with %d trips", trace_label, trips_df.shape[0]) + trips_df = run_trip_destination( trips_df, tours_merged_df, @@ -544,20 +552,24 @@ def trip_destination( trace_label) if trips_df.failed.any(): - logger.warn("%s %s failed trips" % (trace_label, trips_df.failed.sum())) + logger.warning("%s %s failed trips", trace_label, trips_df.failed.sum()) file_name = "%s_failed_trips" % trace_label - logger.info("writing failed trips to %s" % file_name) + logger.info("writing failed trips to %s", file_name) tracing.write_csv(trips_df[trips_df.failed], file_name=file_name, transpose=False) if CLEANUP: trips_df = cleanup_failed_trips(trips_df) elif trips_df.failed.any(): - logger.warn("%s keeping %s sidelined failed trips" % (trace_label, trips_df.failed.sum())) + logger.warning("%s keeping %s sidelined failed trips" % + (trace_label, trips_df.failed.sum())) pipeline.replace_table("trips", trips_df) + print("trips_df\n", trips_df.shape) + if trace_hh_id: tracing.trace_df(trips_df, label=trace_label, slicer='trip_id', - index_label='trip_id') + index_label='trip_id', + warn_if_empty=True) diff --git a/activitysim/abm/models/trip_mode_choice.py b/activitysim/abm/models/trip_mode_choice.py index cc690e866..2ec5528cf 100644 --- a/activitysim/abm/models/trip_mode_choice.py +++ b/activitysim/abm/models/trip_mode_choice.py @@ -1,25 +1,26 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import zip +from builtins import range import logging import pandas as pd -import yaml from activitysim.core import simulate from activitysim.core import tracing from activitysim.core import config from activitysim.core import inject from activitysim.core import pipeline -from activitysim.core.util import force_garbage_collect -from activitysim.core.util import assign_in_place +from activitysim.core.mem import force_garbage_collect -from .util.mode import annotate_preprocessors +from .util.expressions import annotate_preprocessors -from .util.trip_mode import trip_mode_choice_spec -from .util.trip_mode import trip_mode_choice_coeffecients_spec -from activitysim.core.assign import evaluate_constants +from activitysim.core import assign from .util.expressions import skim_time_period_label @@ -43,11 +44,13 @@ def trip_mode_choice( trace_label = 'trip_mode_choice' model_settings = config.read_model_settings('trip_mode_choice.yaml') - spec = trip_mode_choice_spec(model_settings) - omnibus_coefficients = trip_mode_choice_coeffecients_spec(model_settings) + model_spec = \ + simulate.read_model_spec(file_name=model_settings['SPEC']) + omnibus_coefficients = \ + assign.read_constant_spec(config.config_file_path(model_settings['COEFFS'])) trips_df = trips.to_frame() - logger.info("Running %s with %d trips" % (trace_label, trips_df.shape[0])) + logger.info("Running %s with %d trips", trace_label, trips_df.shape[0]) tours_merged = tours_merged.to_frame() tours_merged = tours_merged[model_settings['TOURS_MERGED_CHOOSER_COLUMNS']] @@ -75,11 +78,11 @@ def trip_mode_choice( odt_skim_stack_wrapper = skim_stack.wrap(left_key=orig_col, right_key=dest_col, skim_key='trip_period') - od_skim_stack_wrapper = skim_dict.wrap('origin', 'destination') + od_skim_wrapper = skim_dict.wrap('origin', 'destination') skims = { "odt_skims": odt_skim_stack_wrapper, - "od_skims": od_skim_stack_wrapper, + "od_skims": od_skim_wrapper, } constants = config.get_model_constants(model_settings) @@ -99,7 +102,8 @@ def trip_mode_choice( # name index so tracing knows how to slice assert trips_segment.index.name == 'trip_id' - locals_dict = evaluate_constants(omnibus_coefficients[primary_purpose], constants=constants) + locals_dict = assign.evaluate_constants(omnibus_coefficients[primary_purpose], + constants=constants) locals_dict.update(constants) annotate_preprocessors( @@ -109,7 +113,7 @@ def trip_mode_choice( locals_dict.update(skims) choices = simulate.simple_simulate( choosers=trips_segment, - spec=spec, + spec=model_spec, nest_spec=nest_spec, skims=skims, locals_d=locals_dict, @@ -117,8 +121,8 @@ def trip_mode_choice( trace_label=segment_trace_label, trace_choice_name='trip_mode_choice') - alts = spec.columns - choices = choices.map(dict(zip(range(len(alts)), alts))) + alts = model_spec.columns + choices = choices.map(dict(list(zip(list(range(len(alts))), alts)))) # tracing.print_summary('trip_mode_choice %s choices' % primary_purpose, # choices, value_counts=True) diff --git a/activitysim/abm/models/trip_purpose.py b/activitysim/abm/models/trip_purpose.py index c5c3d2a7c..c1fd5a8f5 100644 --- a/activitysim/abm/models/trip_purpose.py +++ b/activitysim/abm/models/trip_purpose.py @@ -1,7 +1,10 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging import numpy as np @@ -14,16 +17,13 @@ from activitysim.core import chunk from activitysim.core import pipeline -from activitysim.core.util import assign_in_place from .util import expressions -from activitysim.core.util import reindex logger = logging.getLogger(__name__) def trip_purpose_probs(): - configs_dir = inject.get_injectable('configs_dir') - f = os.path.join(configs_dir, 'trip_purpose_probs.csv') + f = config.config_file_path('trip_purpose_probs.csv') df = pd.read_csv(f, comment='#') return df @@ -36,8 +36,8 @@ def trip_purpose_rpc(chunk_size, choosers, spec, trace_label): num_choosers = len(choosers.index) # if not chunking, then return num_choosers - if chunk_size == 0: - return num_choosers + # if chunk_size == 0: + # return num_choosers, 0 chooser_row_size = len(choosers.columns) @@ -46,9 +46,9 @@ def trip_purpose_rpc(chunk_size, choosers, spec, trace_label): row_size = chooser_row_size + extra_columns - # logger.debug("%s #chunk_calc choosers %s" % (trace_label, choosers.shape)) - # logger.debug("%s #chunk_calc spec %s" % (trace_label, spec.shape)) - # logger.debug("%s #chunk_calc extra_columns %s" % (trace_label, extra_columns)) + # logger.debug("%s #chunk_calc choosers %s", trace_label, choosers.shape) + # logger.debug("%s #chunk_calc spec %s", trace_label, spec.shape) + # logger.debug("%s #chunk_calc extra_columns %s", trace_label, extra_columns) return chunk.rows_per_chunk(chunk_size, row_size, num_choosers, trace_label) @@ -78,6 +78,8 @@ def choose_intermediate_trip_purpose(trips, probs_spec, trace_hh_id, trace_label choosers = pd.merge(trips.reset_index(), probs_spec, on=probs_join_cols, how='left').set_index('trip_id') + chunk.log_df(trace_label, 'choosers', choosers) + # select the matching depart range (this should result on in exactly one chooser row per trip) choosers = choosers[(choosers.start >= choosers['depart_range_start']) & ( choosers.start <= choosers['depart_range_end'])] @@ -90,9 +92,6 @@ def choose_intermediate_trip_purpose(trips, probs_spec, trace_hh_id, trace_label choosers[purpose_cols], trace_label=trace_label, trace_choosers=choosers) - cum_size = chunk.log_df_size(trace_label, 'choosers', choosers, cum_size=None) - chunk.log_chunk_size(trace_label, cum_size) - if have_trace_targets: tracing.trace_df(choices, '%s.choices' % trace_label, columns=[None, 'trip_purpose']) tracing.trace_df(rands, '%s.rands' % trace_label, columns=[None, 'rand']) @@ -129,17 +128,17 @@ def run_trip_purpose( last_trip = (trips_df.trip_num == trips_df.trip_count) purpose = trips_df.primary_purpose[last_trip & trips_df.outbound] result_list.append(purpose) - logger.info("assign purpose to %s last outbound trips" % purpose.shape[0]) + logger.info("assign purpose to %s last outbound trips", purpose.shape[0]) # - last trip of inbound tour gets home (or work for atwork subtours) purpose = trips_df.primary_purpose[last_trip & ~trips_df.outbound] purpose = pd.Series(np.where(purpose == 'atwork', 'Work', 'Home'), index=purpose.index) result_list.append(purpose) - logger.info("assign purpose to %s last inbound trips" % purpose.shape[0]) + logger.info("assign purpose to %s last inbound trips", purpose.shape[0]) # - intermediate stops (non-last trips) purpose assigned by probability table trips_df = trips_df[~last_trip] - logger.info("assign purpose to %s intermediate trips" % trips_df.shape[0]) + logger.info("assign purpose to %s intermediate trips", trips_df.shape[0]) preprocessor_settings = model_settings.get('preprocessor', None) if preprocessor_settings: @@ -150,25 +149,26 @@ def run_trip_purpose( locals_dict=locals_dict, trace_label=trace_label) - rows_per_chunk = \ + rows_per_chunk, effective_chunk_size = \ trip_purpose_rpc(chunk_size, trips_df, probs_spec, trace_label=trace_label) - logger.info("%s rows_per_chunk %s num_choosers %s" % - (trace_label, rows_per_chunk, len(trips_df.index))) - for i, num_chunks, trips_chunk in chunk.chunked_choosers(trips_df, rows_per_chunk): - logger.info("Running chunk %s of %s size %d" % (i, num_chunks, len(trips_chunk))) + logger.info("Running chunk %s of %s size %d", i, num_chunks, len(trips_chunk)) chunk_trace_label = tracing.extend_trace_label(trace_label, 'chunk_%s' % i) \ if num_chunks > 1 else trace_label + chunk.log_open(chunk_trace_label, chunk_size, effective_chunk_size) + choices = choose_intermediate_trip_purpose( trips_chunk, probs_spec, trace_hh_id, trace_label=chunk_trace_label) + chunk.log_close(chunk_trace_label) + result_list.append(choices) if len(result_list) > 1: diff --git a/activitysim/abm/models/trip_purpose_and_destination.py b/activitysim/abm/models/trip_purpose_and_destination.py index 8ab678f80..21cd58435 100644 --- a/activitysim/abm/models/trip_purpose_and_destination.py +++ b/activitysim/abm/models/trip_purpose_and_destination.py @@ -1,19 +1,19 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging -import numpy as np import pandas as pd from activitysim.core import tracing from activitysim.core import config from activitysim.core import pipeline -from activitysim.core import simulate from activitysim.core import inject -from activitysim.core.util import reindex from activitysim.core.util import assign_in_place from activitysim.abm.models.trip_purpose import run_trip_purpose @@ -64,26 +64,32 @@ def trip_purpose_and_destination( model_settings = config.read_model_settings('trip_purpose_and_destination.yaml') MAX_ITERATIONS = model_settings.get('MAX_ITERATIONS', 5) - CLEANUP = model_settings.get('cleanup', True) trips_df = trips.to_frame() tours_merged_df = tours_merged.to_frame() + if trips_df.empty: + logger.info("%s - no trips. Nothing to do." % trace_label) + return + # FIXME could allow MAX_ITERATIONS=0 to allow for cleanup-only run # in which case, we would need to drop bad trips, WITHOUT failing bad_trip leg_mates assert (MAX_ITERATIONS > 0) # if trip_destination has been run before, keep only failed trips (and leg_mates) to retry - if 'failed' in trips_df: - logger.info('trip_destination has already been run. Rerunning failed trips') - flag_failed_trip_leg_mates(trips_df, 'failed') - trips_df = trips_df[trips_df.failed] - tours_merged_df = tours_merged_df[tours_merged_df.index.isin(trips_df.tour_id)] - logger.info('Rerunning %s failed trips and leg-mates' % trips_df.shape[0]) - - if trips_df.empty: - logger.info("%s - no trips. Nothing to do." % trace_label) - return + if 'destination' in trips_df: + if trips_df.failed.any(): + logger.info('trip_destination has already been run. Rerunning failed trips') + flag_failed_trip_leg_mates(trips_df, 'failed') + trips_df = trips_df[trips_df.failed] + tours_merged_df = tours_merged_df[tours_merged_df.index.isin(trips_df.tour_id)] + logger.info('Rerunning %s failed trips and leg-mates' % trips_df.shape[0]) + else: + # no failed trips from prior run of trip_destination + logger.info("%s - no failed trips from prior model run." % trace_label) + del trips_df['failed'] + pipeline.replace_table("trips", trips_df) + return results = [] i = 0 @@ -93,7 +99,8 @@ def trip_purpose_and_destination( i += 1 for c in RESULT_COLUMNS: - del trips_df[c] + if c in trips_df: + del trips_df[c] trips_df = run_trip_purpose_and_destination( trips_df, @@ -109,7 +116,7 @@ def trip_purpose_and_destination( results.append(trips_df[RESULT_COLUMNS]) break - logger.warn("%s %s failed trips in iteration %s" % (trace_label, num_failed_trips, i)) + logger.warning("%s %s failed trips in iteration %s" % (trace_label, num_failed_trips, i)) file_name = "%s_i%s_failed_trips" % (trace_label, i) logger.info("writing failed trips to %s" % file_name) tracing.write_csv(trips_df[trips_df.failed], file_name=file_name, transpose=False) @@ -117,7 +124,7 @@ def trip_purpose_and_destination( # if max iterations reached, add remaining trips to results and give up # note that we do this BEFORE failing leg_mates so resulting trip legs are complete if i >= MAX_ITERATIONS: - logger.warn("%s too many iterations %s" % (trace_label, i)) + logger.warning("%s too many iterations %s" % (trace_label, i)) results.append(trips_df[RESULT_COLUMNS]) break @@ -139,10 +146,7 @@ def trip_purpose_and_destination( trips_df = trips.to_frame() assign_in_place(trips_df, results) - if CLEANUP: - trips_df = cleanup_failed_trips(trips_df) - elif trips_df.failed.any(): - logger.warn("%s keeping %s sidelined failed trips" % (trace_label, trips_df.failed.sum())) + trips_df = cleanup_failed_trips(trips_df) pipeline.replace_table("trips", trips_df) diff --git a/activitysim/abm/models/trip_scheduling.py b/activitysim/abm/models/trip_scheduling.py index 3bd1b0e49..d11a3e173 100644 --- a/activitysim/abm/models/trip_scheduling.py +++ b/activitysim/abm/models/trip_scheduling.py @@ -1,7 +1,11 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import range + import logging import numpy as np @@ -43,13 +47,6 @@ FAILFIX_DEFAULT = FAILFIX_CHOOSE_MOST_INITIAL -def trip_scheduling_probs(configs_dir): - - f = os.path.join(configs_dir, 'trip_scheduling_probs.csv') - df = pd.read_csv(f, comment='#') - return df - - def set_tour_hour(trips, tours): """ add columns 'tour_hour', 'earliest', 'latest' to trips @@ -214,6 +211,10 @@ def schedule_nth_trips( # left join trips to probs (there may be multiple rows per trip for multiple depart ranges) choosers = pd.merge(trips.reset_index(), probs_spec, on=probs_join_cols, how='left').set_index('trip_id') + chunk.log_df(trace_label, "choosers", choosers) + + if trace_hh_id and tracing.has_trace_targets(trips): + tracing.trace_df(choosers, '%s.choosers' % trace_label) # choosers should now match trips row for row assert choosers.index.is_unique @@ -222,6 +223,8 @@ def schedule_nth_trips( # zero out probs outside earliest-latest window chooser_probs = clip_probs(trips, choosers[probs_cols], model_settings) + chunk.log_df(trace_label, "chooser_probs", chooser_probs) + if first_trip_in_leg: # probs should sum to 1 unless all zero chooser_probs = chooser_probs.div(chooser_probs.sum(axis=1), axis=0).fillna(0) @@ -229,14 +232,26 @@ def schedule_nth_trips( # probs should sum to 1 with residual probs resulting in choice of 'fail' chooser_probs['fail'] = 1 - chooser_probs.sum(axis=1).clip(0, 1) + if trace_hh_id and tracing.has_trace_targets(trips): + tracing.trace_df(chooser_probs, '%s.chooser_probs' % trace_label) + choices, rands = logit.make_choices( chooser_probs, trace_label=trace_label, trace_choosers=choosers) + chunk.log_df(trace_label, "choices", choices) + chunk.log_df(trace_label, "rands", rands) + + if trace_hh_id and tracing.has_trace_targets(trips): + tracing.trace_df(choices, '%s.choices' % trace_label, columns=[None, 'depart']) + tracing.trace_df(rands, '%s.rands' % trace_label, columns=[None, 'rand']) + # convert alt choice index to depart time (setting failed choices to -1) failed = (choices == chooser_probs.columns.get_loc('fail')) choices = (choices + depart_alt_base).where(~failed, -1) + chunk.log_df(trace_label, "failed", failed) + # report failed trips while we have the best diagnostic info if report_failed_trips and failed.any(): report_bad_choices( @@ -248,8 +263,6 @@ def schedule_nth_trips( # trace before removing failures if trace_hh_id and tracing.has_trace_targets(trips): - tracing.trace_df(choosers, '%s.choosers' % trace_label) - tracing.trace_df(chooser_probs, '%s.chooser_probs' % trace_label) tracing.trace_df(choices, '%s.choices' % trace_label, columns=[None, 'depart']) tracing.trace_df(rands, '%s.rands' % trace_label, columns=[None, 'rand']) @@ -324,6 +337,8 @@ def schedule_trips_in_leg( nth_trace_label = tracing.extend_trace_label(trace_label, 'num_%s' % i) + chunk.log_open(nth_trace_label, chunk_size=0, effective_chunk_size=0) + choices = schedule_nth_trips( nth_trips, probs_spec, @@ -333,6 +348,8 @@ def schedule_trips_in_leg( trace_hh_id=trace_hh_id, trace_label=nth_trace_label) + chunk.log_close(nth_trace_label) + # if outbound, this trip's depart constrains next trip's earliest depart option # if inbound, we are handling in reverse order, so it constrains latest depart instead ADJUST_NEXT_DEPART_COL = 'earliest' if outbound else 'latest' @@ -340,8 +357,8 @@ def schedule_trips_in_leg( # most initial departure (when no choice was made because all probs were zero) if last_iteration and (failfix == FAILFIX_CHOOSE_MOST_INITIAL): choices = choices.reindex(nth_trips.index) - logger.warn("%s coercing %s depart choices to most initial" % - (nth_trace_label, choices.isna().sum())) + logger.warning("%s coercing %s depart choices to most initial" % + (nth_trace_label, choices.isna().sum())) choices = choices.fillna(trips[ADJUST_NEXT_DEPART_COL]) # adjust allowed depart range of next trip @@ -362,15 +379,14 @@ def schedule_trips_in_leg( return choices -# calc_rows_per_chunk(chunk_size, persons, by_chunk_id=True) -def trip_scheduling_rpc(chunk_size, choosers, spec, trace_label=None): +def trip_scheduling_rpc(chunk_size, choosers, spec, trace_label): # NOTE we chunk chunk_id num_choosers = choosers['chunk_id'].max() + 1 # if not chunking, then return num_choosers - if chunk_size == 0: - return num_choosers + # if chunk_size == 0: + # return num_choosers, 0 # extra columns from spec extra_columns = spec.shape[1] @@ -378,7 +394,7 @@ def trip_scheduling_rpc(chunk_size, choosers, spec, trace_label=None): chooser_row_size = choosers.shape[1] + extra_columns # scale row_size by average number of chooser rows per chunk_id - rows_per_chunk_id = choosers.shape[0] / float(num_choosers) + rows_per_chunk_id = choosers.shape[0] / num_choosers row_size = (rows_per_chunk_id * chooser_row_size) # print "num_choosers", num_choosers @@ -404,10 +420,8 @@ def run_trip_scheduling( set_tour_hour(trips, tours) - rows_per_chunk = trip_scheduling_rpc(chunk_size, trips, probs_spec, trace_label) - - # logger.info("%s rows_per_chunk %s num_choosers %s" % - # (trace_label, rows_per_chunk, len(trips.index))) + rows_per_chunk, effective_chunk_size = \ + trip_scheduling_rpc(chunk_size, trips, probs_spec, trace_label) result_list = [] for i, num_chunks, trips_chunk in chunk.chunked_choosers_by_chunk_id(trips, rows_per_chunk): @@ -418,6 +432,8 @@ def run_trip_scheduling( else: chunk_trace_label = trace_label + leg_trace_label = tracing.extend_trace_label(chunk_trace_label, 'outbound') + chunk.log_open(leg_trace_label, chunk_size, effective_chunk_size) choices = \ schedule_trips_in_leg( outbound=True, @@ -426,9 +442,12 @@ def run_trip_scheduling( model_settings=model_settings, last_iteration=last_iteration, trace_hh_id=trace_hh_id, - trace_label=tracing.extend_trace_label(chunk_trace_label, 'outbound')) + trace_label=leg_trace_label) result_list.append(choices) + chunk.log_close(leg_trace_label) + leg_trace_label = tracing.extend_trace_label(chunk_trace_label, 'inbound') + chunk.log_open(leg_trace_label, chunk_size, effective_chunk_size) choices = \ schedule_trips_in_leg( outbound=False, @@ -437,8 +456,9 @@ def run_trip_scheduling( model_settings=model_settings, last_iteration=last_iteration, trace_hh_id=trace_hh_id, - trace_label=tracing.extend_trace_label(chunk_trace_label, 'inbound')) + trace_label=leg_trace_label) result_list.append(choices) + chunk.log_close(leg_trace_label) choices = pd.concat(result_list) @@ -449,7 +469,6 @@ def run_trip_scheduling( def trip_scheduling( trips, tours, - configs_dir, chunk_size, trace_hh_id): @@ -506,13 +525,14 @@ def trip_scheduling( failfix = model_settings.get(FAILFIX, FAILFIX_DEFAULT) - probs_spec = trip_scheduling_probs(configs_dir) + probs_spec = pd.read_csv(config.config_file_path('trip_scheduling_probs.csv'), comment='#') trips_df = trips.to_frame() tours = tours.to_frame() # add tour-based chunk_id so we can chunk all trips in tour together - trips_df['chunk_id'] = reindex(pd.Series(range(tours.shape[0]), tours.index), trips_df.tour_id) + trips_df['chunk_id'] = \ + reindex(pd.Series(list(range(tours.shape[0])), tours.index), trips_df.tour_id) max_iterations = model_settings.get('MAX_ITERATIONS', 1) assert max_iterations > 0 @@ -525,7 +545,7 @@ def trip_scheduling( last_iteration = (i == max_iterations) trace_label_i = tracing.extend_trace_label(trace_label, "i%s" % i) - logger.info("%s scheduling %s trips" % (trace_label_i, trips_df.shape[0])) + logger.info("%s scheduling %s trips", trace_label_i, trips_df.shape[0]) choices = \ run_trip_scheduling( @@ -540,7 +560,7 @@ def trip_scheduling( # boolean series of trips whose individual trip scheduling failed failed = choices.reindex(trips_df.index).isnull() - logger.info("%s %s failed" % (trace_label_i, failed.sum())) + logger.info("%s %s failed", trace_label_i, failed.sum()) if not last_iteration: # boolean series of trips whose leg scheduling failed @@ -555,11 +575,11 @@ def trip_scheduling( choices = pd.concat(choices_list) choices = choices.reindex(trips_df.index) if choices.isnull().any(): - logger.warn("%s of %s trips could not be scheduled after %s iterations" % - (choices.isnull().sum(), trips_df.shape[0], i)) + logger.warning("%s of %s trips could not be scheduled after %s iterations" % + (choices.isnull().sum(), trips_df.shape[0], i)) if failfix != FAILFIX_DROP_AND_CLEANUP: - raise RuntimeError("%s setting '%' not enabled in settings" % + raise RuntimeError("%s setting '%s' not enabled in settings" % (FAILFIX, FAILFIX_DROP_AND_CLEANUP)) trips_df['failed'] = choices.isnull() diff --git a/activitysim/abm/models/util/cdap.py b/activitysim/abm/models/util/cdap.py index 3bc967b3b..bf8f015e1 100644 --- a/activitysim/abm/models/util/cdap.py +++ b/activitysim/abm/models/util/cdap.py @@ -1,27 +1,34 @@ +from __future__ import division # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 import logging import itertools +import os import numpy as np import pandas as pd from zbox import toolz as tz, gen -from activitysim.core.simulate import eval_variables -from activitysim.core.simulate import compute_utilities +from activitysim.core import simulate +from activitysim.core import pipeline from activitysim.core import chunk from activitysim.core import logit from activitysim.core import tracing +from activitysim.core import inject +from activitysim.core import config logger = logging.getLogger(__name__) # FIXME - this allows us to turn some dev debug table dump code on and off - eventually remove? # DUMP = False -_persons_index_ = 'PERID' -_hh_index_ = 'HHID' +_persons_index_ = 'person_id' +_hh_index_ = 'household_id' _hh_size_ = 'hhsize' _hh_id_ = 'household_id' @@ -84,7 +91,7 @@ def assign_cdap_rank(persons, trace_hh_id=None, trace_label=None): than 5 people, the cdapPersonArray is the same as the person array." We diverge from the above description in that a cdap_rank is assigned to all persons, - including 'extra' householld members, whose activity is assigned subsequently. + including 'extra' household members, whose activity is assigned subsequently. The pair _hh_id_, cdap_rank will uniquely identify each household member. Parameters @@ -124,10 +131,19 @@ def assign_cdap_rank(persons, trace_hh_id=None, trace_label=None): del children # choose up to MAX_HHSIZE, preferring anyone already chosen + # others = \ + # persons[[_hh_id_, 'cdap_rank']]\ + # .sort_values(by=[_hh_id_, 'cdap_rank'], ascending=[True, True])\ + # .groupby(_hh_id_).head(MAX_HHSIZE) + + # choose up to MAX_HHSIZE, choosing randomly + others = persons[[_hh_id_, 'cdap_rank']].copy() + others['random_order'] = pipeline.get_rn_generator().random_for_df(persons) others = \ - persons[[_hh_id_, 'cdap_rank']]\ - .sort_values(by=[_hh_id_, 'cdap_rank'], ascending=[True, True])\ + others\ + .sort_values(by=[_hh_id_, 'random_order'], ascending=[True, True])\ .groupby(_hh_id_).head(MAX_HHSIZE) + # tag the backfilled persons persons.loc[others[others.cdap_rank == RANK_UNASSIGNED].index, 'cdap_rank'] \ = RANK_BACKFILL @@ -178,20 +194,13 @@ def individual_utilities( """ # calculate single person utilities - individual_vars = eval_variables(cdap_indiv_spec.index, persons, locals_d) - indiv_utils = compute_utilities(individual_vars, cdap_indiv_spec) + indiv_utils = simulate.eval_utilities(cdap_indiv_spec, persons, locals_d, trace_label) # add columns from persons to facilitate building household interactions useful_columns = [_hh_id_, _ptype_, 'cdap_rank', _hh_size_] indiv_utils[useful_columns] = persons[useful_columns] - # if DUMP: - # tracing.trace_df(indiv_utils, '%s.DUMP.indiv_utils' % trace_label, - # transpose=False, slicer='NONE') - if trace_hh_id: - tracing.trace_df(individual_vars, '%s.individual_vars' % trace_label, - column_labels=['expression', 'person']) tracing.trace_df(indiv_utils, '%s.indiv_utils' % trace_label, column_labels=['activity', 'person']) @@ -242,14 +251,54 @@ def preprocess_interaction_coefficients(interaction_coefficients): return coefficients +def cached_spec_name(hhsize): + return 'cdap_spec_%s.csv' % hhsize + + +def cached_spec_path(spec_name): + return config.output_file_path(spec_name) + + +def get_cached_spec(hhsize): + + spec_name = cached_spec_name(hhsize) + + spec = inject.get_injectable(spec_name, None) + if spec is not None: + logger.info("build_cdap_spec returning cached injectable spec %s", spec_name) + return spec + + # # try configs dir + # spec_path = config.config_file_path(spec_name, mandatory=False) + # if spec_path: + # logger.info("build_cdap_spec reading cached spec %s from %s", spec_name, spec_path) + # return pd.read_csv(spec_path, index_col='Expression') + + # try data dir + if os.path.exists(config.output_file_path(spec_name)): + spec_path = config.output_file_path(spec_name) + logger.info("build_cdap_spec reading cached spec %s from %s", spec_name, spec_path) + return pd.read_csv(spec_path, index_col='Expression') + + return None + + +def cache_spec(hhsize, spec): + spec_name = cached_spec_name(hhsize) + # cache as injectable + inject.add_injectable(spec_name, spec) + # cache as csv in output_dir + spec.to_csv(config.output_file_path(spec_name), index=True) + + def build_cdap_spec(interaction_coefficients, hhsize, - trace_spec=False, trace_label=None): + trace_spec=False, trace_label=None, cache=True): """ Build a spec file for computing utilities of alternative household member interaction patterns for households of specified size. We generate this spec automatically from a table of rules and coefficients because the - interaction rulkes are fairly simple and can be expressed compactly whereas + interaction rules are fairly simple and can be expressed compactly whereas there is a lot of redundancy between the spec files for different household sizes, as well as in the vectorized expression of the interaction alternatives within the spec file itself @@ -286,6 +335,9 @@ def build_cdap_spec(interaction_coefficients, hhsize, spec: pandas.DataFrame """ + + t0 = tracing.print_elapsed_time() + # if DUMP: # # dump the interaction_coefficients table because it has been preprocessed # tracing.trace_df(interaction_coefficients, @@ -295,6 +347,11 @@ def build_cdap_spec(interaction_coefficients, hhsize, # cdap spec is same for all households of MAX_HHSIZE and greater hhsize = min(hhsize, MAX_HHSIZE) + if cache: + spec = get_cached_spec(hhsize) + if spec is not None: + return spec + expression_name = "Expression" # generate a list of activity pattern alternatives for this hhsize @@ -321,7 +378,7 @@ def build_cdap_spec(interaction_coefficients, hhsize, # list of alternative columns where person pnum has expression activity # e.g. for M_p1 we want the columns where activity M is in position p1 - alternative_columns = filter(lambda alt: alt[pnum - 1] == activity, alternatives) + alternative_columns = [alt for alt in alternatives if alt[pnum - 1] == activity] spec.loc[new_row_index, alternative_columns] = 1 # ignore rows whose cardinality exceeds hhsize @@ -347,13 +404,13 @@ def build_cdap_spec(interaction_coefficients, hhsize, continue - if row.cardinality not in range(1, MAX_INTERACTION_CARDINALITY+1): + if not (0 <= row.cardinality <= MAX_INTERACTION_CARDINALITY): raise RuntimeError("Bad row cardinality %d for %s" % (row.cardinality, row.slug)) # for all other interaction rules, we need to generate a row in the spec for each # possible combination of interacting persons # e.g. for (1, 2), (1,3), (2,3) for a coefficient with cardinality 2 in hhsize 3 - for tup in itertools.combinations(range(1, hhsize+1), row.cardinality): + for tup in itertools.combinations(list(range(1, hhsize+1)), row.cardinality): # determine the name of the chooser column with the ptypes for this interaction if row.cardinality == 1: @@ -368,8 +425,10 @@ def build_cdap_spec(interaction_coefficients, hhsize, # create list of columns with names matching activity for each of the persons in tup # e.g. ['MMM', 'MMN', 'MMH'] for an interaction between p1 and p3 with activity 'M' + # alternative_columns = \ + # filter(lambda alt: all([alt[p - 1] == row.activity for p in tup]), alternatives) alternative_columns = \ - filter(lambda alt: all([alt[p - 1] == row.activity for p in tup]), alternatives) + [alt for alt in alternatives if all([alt[p - 1] == row.activity for p in tup])] # a row for this interaction may already exist, # e.g. if there are rules for both HH13 and MM13, we don't need to add rows for both @@ -388,6 +447,8 @@ def build_cdap_spec(interaction_coefficients, hhsize, # eval expression goes in the index spec.set_index(expression_name, inplace=True) + simulate.uniquify_spec_index(spec) + if trace_spec: tracing.trace_df(spec, '%s.hhsize%d_spec' % (trace_label, hhsize), transpose=False, slicer='NONE') @@ -402,6 +463,11 @@ def build_cdap_spec(interaction_coefficients, hhsize, tracing.trace_df(spec, '%s.hhsize%d_spec_patched' % (trace_label, hhsize), transpose=False, slicer='NONE') + if cache: + cache_spec(hhsize, spec) + + t0 = tracing.print_elapsed_time("build_cdap_spec hh_size %s" % hhsize, t0) + return spec @@ -532,7 +598,7 @@ def hh_choosers(indiv_utils, hhsize): # add interaction columns for all 2 and 3 person interactions for i in range(2, min(hhsize, MAX_INTERACTION_CARDINALITY)+1): - for tup in itertools.combinations(range(1, hhsize+1), i): + for tup in itertools.combinations(list(range(1, hhsize+1)), i): add_interaction_column(choosers, tup) return choosers @@ -582,9 +648,7 @@ def household_activity_choices(indiv_utils, interaction_coefficients, hhsize, trace_spec=(trace_hh_id in choosers.index), trace_label=trace_label) - vars = eval_variables(spec.index, choosers) - - utils = compute_utilities(vars, spec) + utils = simulate.eval_utilities(spec, choosers, trace_label=trace_label) if len(utils.index) == 0: return pd.Series() @@ -603,8 +667,6 @@ def household_activity_choices(indiv_utils, interaction_coefficients, hhsize, if hhsize > 1: tracing.trace_df(choosers, '%s.hhsize%d_choosers' % (trace_label, hhsize), column_labels=['expression', 'person']) - tracing.trace_df(vars, '%s.hhsize%d_vars' % (trace_label, hhsize), - column_labels=['expression', 'person']) tracing.trace_df(utils, '%s.hhsize%d_utils' % (trace_label, hhsize), column_labels=['expression', 'household']) @@ -697,6 +759,8 @@ def extra_hh_member_choices(persons, cdap_fixed_relative_proportions, locals_d, list of alternatives chosen for all extra members, indexed by _persons_index_ """ + trace_label = tracing.extend_trace_label(trace_label, 'extra_hh_member_choices') + # extra household members have cdap_ran > MAX_HHSIZE choosers = persons[persons['cdap_rank'] > MAX_HHSIZE] @@ -704,10 +768,10 @@ def extra_hh_member_choices(persons, cdap_fixed_relative_proportions, locals_d, return pd.Series() # eval the expression file - model_design = eval_variables(cdap_fixed_relative_proportions.index, choosers, locals_d) + values = simulate.eval_variables(cdap_fixed_relative_proportions.index, choosers, locals_d) # cdap_fixed_relative_proportions computes relative proportions by ptype, not utilities - proportions = model_design.dot(cdap_fixed_relative_proportions) + proportions = values.dot(cdap_fixed_relative_proportions) # convert relative proportions to probability probs = proportions.div(proportions.sum(axis=1), axis=0) @@ -762,7 +826,7 @@ def _run_cdap( assign_cdap_rank(persons, trace_hh_id, trace_label) # Calculate CDAP utilities for each individual, ignoring interactions - # ind_utils has index of `PERID` and a column for each alternative + # ind_utils has index of 'person_id' and a column for each alternative # i.e. three columns 'M' (Mandatory), 'N' (NonMandatory), 'H' (Home) indiv_utils = individual_utilities(persons[persons.cdap_rank <= MAX_HHSIZE], cdap_indiv_spec, locals_d, @@ -811,22 +875,20 @@ def _run_cdap( # tracing.trace_df(cdap_results, '%s.DUMP.cdap_results' % trace_label, # transpose=False, slicer='NONE') - cum_size = chunk.log_df_size(trace_label, 'persons', persons, cum_size=None) - chunk.log_chunk_size(trace_label, cum_size) + chunk.log_df(trace_label, 'persons', persons) # return dataframe with two columns return cdap_results -# calc_rows_per_chunk(chunk_size, persons, by_chunk_id=True) def calc_rows_per_chunk(chunk_size, choosers, trace_label=None): # NOTE we chunk chunk_id num_choosers = choosers['chunk_id'].max() + 1 # if not chunking, then return num_choosers - if chunk_size == 0: - return num_choosers + # if chunk_size == 0: + # return num_choosers, 0 chooser_row_size = choosers.shape[1] @@ -887,7 +949,8 @@ def run_cdap( trace_label = tracing.extend_trace_label(trace_label, 'cdap') - rows_per_chunk = calc_rows_per_chunk(chunk_size, persons, trace_label=trace_label) + rows_per_chunk, effective_chunk_size = \ + calc_rows_per_chunk(chunk_size, persons, trace_label=trace_label) result_list = [] # segment by person type and pick the right spec for each person type @@ -897,6 +960,8 @@ def run_cdap( chunk_trace_label = tracing.extend_trace_label(trace_label, 'chunk_%s' % i) + chunk.log_open(chunk_trace_label, chunk_size, effective_chunk_size) + choices = _run_cdap(persons_chunk, cdap_indiv_spec, cdap_interaction_coefficients, @@ -904,6 +969,8 @@ def run_cdap( locals_d, trace_hh_id, chunk_trace_label) + chunk.log_close(chunk_trace_label) + result_list.append(choices) # FIXME: this will require 2X RAM diff --git a/activitysim/abm/models/util/expressions.py b/activitysim/abm/models/util/expressions.py index 89c816c4c..407928a51 100644 --- a/activitysim/abm/models/util/expressions.py +++ b/activitysim/abm/models/util/expressions.py @@ -1,5 +1,8 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 import os import logging @@ -13,12 +16,16 @@ from activitysim.core import config from activitysim.core import assign from activitysim.core import inject +from activitysim.core import simulate from activitysim.core.util import other_than from activitysim.core.util import assign_in_place from activitysim.core import util +logger = logging.getLogger(__name__) + + def reindex_i(series1, series2, dtype=np.int8): """ version of reindex that replaces missing na values and converts to int @@ -78,8 +85,6 @@ def compute_columns(df, model_settings, locals_dict={}, trace_label=None): same index as df """ - configs_dir = inject.get_injectable('configs_dir') - if isinstance(model_settings, str): model_settings_name = model_settings model_settings = config.read_model_settings('%s.yaml' % model_settings) @@ -102,7 +107,7 @@ def compute_columns(df, model_settings, locals_dict={}, trace_label=None): if not expressions_spec_name.endswith(".csv"): expressions_spec_name = '%s.csv' % expressions_spec_name - expressions_spec = assign.read_assignment_spec(os.path.join(configs_dir, expressions_spec_name)) + expressions_spec = assign.read_assignment_spec(config.config_file_path(expressions_spec_name)) assert expressions_spec.shape[0] > 0, \ "Expected to find some assignment expressions in %s" % expressions_spec_name @@ -181,3 +186,43 @@ def skim_time_period_label(time): return skim_time_periods['labels'][bin] return pd.cut(time, skim_time_periods['hours'], labels=skim_time_periods['labels']).astype(str) + + +def annotate_preprocessors( + tours_df, locals_dict, skims, + model_settings, trace_label): + + locals_d = {} + locals_d.update(locals_dict) + locals_d.update(skims) + + preprocessor_settings = model_settings.get('preprocessor', []) + if not isinstance(preprocessor_settings, list): + assert isinstance(preprocessor_settings, dict) + preprocessor_settings = [preprocessor_settings] + + simulate.set_skim_wrapper_targets(tours_df, skims) + + annotations = None + for model_settings in preprocessor_settings: + + results = compute_columns( + df=tours_df, + model_settings=model_settings, + locals_dict=locals_d, + trace_label=trace_label) + + assign_in_place(tours_df, results) + + +def filter_chooser_columns(choosers, chooser_columns): + + missing_columns = [c for c in chooser_columns if c not in choosers] + if missing_columns: + logger.warning("filter_chooser_columns missing_columns %s" % missing_columns) + + # ignore any columns not appearing in choosers df + chooser_columns = [c for c in chooser_columns if c in choosers] + + choosers = choosers[chooser_columns] + return choosers diff --git a/activitysim/abm/models/util/logsums.py b/activitysim/abm/models/util/logsums.py index 4100367c5..4eb0a550c 100644 --- a/activitysim/abm/models/util/logsums.py +++ b/activitysim/abm/models/util/logsums.py @@ -1,20 +1,19 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 -import os import logging -import numpy as np -import pandas as pd - from activitysim.core import simulate from activitysim.core import tracing from activitysim.core import config from activitysim.core.assign import evaluate_constants -from mode import tour_mode_choice_spec -from mode import tour_mode_choice_coeffecients_spec +from .mode import tour_mode_choice_spec +from .mode import tour_mode_choice_coeffecients_spec from . import expressions @@ -41,7 +40,7 @@ def filter_chooser_columns(choosers, logsum_settings, model_settings): missing_columns = [c for c in chooser_columns if c not in choosers] if missing_columns: - logger.info("filter_chooser_columns missing_columns %s" % missing_columns) + logger.debug("logsum.filter_chooser_columns missing_columns %s" % missing_columns) # ignore any columns not appearing in choosers df chooser_columns = [c for c in chooser_columns if c in choosers] @@ -60,7 +59,7 @@ def compute_logsums(choosers, Parameters ---------- choosers - logsum_spec + tour_purpose logsum_settings model_settings skim_dict @@ -91,10 +90,13 @@ def compute_logsums(choosers, choosers['in_period'] = expressions.skim_time_period_label(model_settings['IN_PERIOD']) choosers['out_period'] = expressions.skim_time_period_label(model_settings['OUT_PERIOD']) + assert ('duration' not in choosers) + choosers['duration'] = model_settings['IN_PERIOD'] - model_settings['OUT_PERIOD'] + nest_spec = config.get_logit_model_settings(logsum_settings) constants = config.get_model_constants(logsum_settings) - logger.info("Running compute_logsums with %d choosers" % choosers.shape[0]) + logger.debug("Running compute_logsums with %d choosers" % choosers.shape[0]) # setup skim keys odt_skim_stack_wrapper = skim_stack.wrap(left_key=orig_col_name, right_key=dest_col_name, diff --git a/activitysim/abm/models/util/mode.py b/activitysim/abm/models/util/mode.py index c0a1c776a..8109b92dc 100644 --- a/activitysim/abm/models/util/mode.py +++ b/activitysim/abm/models/util/mode.py @@ -1,20 +1,16 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 -import os -import copy -import string import pandas as pd -import numpy as np -from activitysim.core import tracing -from activitysim.core import inject from activitysim.core import simulate - +from activitysim.core import config from activitysim.core.assign import evaluate_constants -from activitysim.core.util import assign_in_place -import expressions +from . import expressions """ @@ -26,21 +22,18 @@ def tour_mode_choice_spec(model_settings): - configs_dir = inject.get_injectable('configs_dir') - assert 'SPEC' in model_settings - return simulate.read_model_spec(configs_dir, model_settings['SPEC']) + return simulate.read_model_spec(file_name=model_settings['SPEC']) -def tour_mode_choice_coeffecients_spec(model_settings): - configs_dir = inject.get_injectable('configs_dir') +def tour_mode_choice_coeffecients_spec(model_settings): assert 'COEFFS' in model_settings coeffs_file_name = model_settings['COEFFS'] - with open(os.path.join(configs_dir, coeffs_file_name)) as f: - return pd.read_csv(f, comment='#', index_col='Expression') + file_path = config.config_file_path(coeffs_file_name) + return pd.read_csv(file_path, comment='#', index_col='Expression') def run_tour_mode_choice_simulate( @@ -69,7 +62,7 @@ def run_tour_mode_choice_simulate( choosers['in_period'] = expressions.skim_time_period_label(choosers[in_time]) choosers['out_period'] = expressions.skim_time_period_label(choosers[out_time]) - annotate_preprocessors( + expressions.annotate_preprocessors( choosers, locals_dict, skims, model_settings, trace_label) @@ -84,33 +77,6 @@ def run_tour_mode_choice_simulate( trace_choice_name=trace_choice_name) alts = spec.columns - choices = choices.map(dict(zip(range(len(alts)), alts))) + choices = choices.map(dict(list(zip(list(range(len(alts))), alts)))) return choices - - -def annotate_preprocessors( - tours_df, locals_dict, skims, - model_settings, trace_label): - - locals_d = {} - locals_d.update(locals_dict) - locals_d.update(skims) - - preprocessor_settings = model_settings.get('preprocessor', []) - if not isinstance(preprocessor_settings, list): - assert isinstance(preprocessor_settings, dict) - preprocessor_settings = [preprocessor_settings] - - simulate.set_skim_wrapper_targets(tours_df, skims) - - annotations = None - for model_settings in preprocessor_settings: - - results = expressions.compute_columns( - df=tours_df, - model_settings=model_settings, - locals_dict=locals_d, - trace_label=trace_label) - - assign_in_place(tours_df, results) diff --git a/activitysim/abm/models/util/overlap.py b/activitysim/abm/models/util/overlap.py index a363882cf..001a6b1b7 100644 --- a/activitysim/abm/models/util/overlap.py +++ b/activitysim/abm/models/util/overlap.py @@ -1,10 +1,11 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 import logging -import copy -import string import pandas as pd import numpy as np diff --git a/activitysim/abm/models/util/test/data/cdap_indiv_and_hhsize1.csv b/activitysim/abm/models/util/test/configs/cdap_indiv_and_hhsize1.csv similarity index 100% rename from activitysim/abm/models/util/test/data/cdap_indiv_and_hhsize1.csv rename to activitysim/abm/models/util/test/configs/cdap_indiv_and_hhsize1.csv diff --git a/activitysim/abm/models/util/test/data/cdap_interaction_coefficients.csv b/activitysim/abm/models/util/test/configs/cdap_interaction_coefficients.csv similarity index 100% rename from activitysim/abm/models/util/test/data/cdap_interaction_coefficients.csv rename to activitysim/abm/models/util/test/configs/cdap_interaction_coefficients.csv diff --git a/activitysim/abm/models/util/test/test_cdap.py b/activitysim/abm/models/util/test/test_cdap.py index 55da8f085..2dbfcea26 100644 --- a/activitysim/abm/models/util/test/test_cdap.py +++ b/activitysim/abm/models/util/test/test_cdap.py @@ -2,7 +2,6 @@ # See full license in LICENSE.txt. import os.path -from itertools import product import pandas as pd import pandas.util.testing as pdt @@ -10,8 +9,7 @@ from .. import cdap -from activitysim.core.simulate import read_model_spec -from activitysim.core.simulate import compute_utilities +from activitysim.core import simulate @pytest.fixture(scope='module') @@ -19,6 +17,11 @@ def data_dir(): return os.path.join(os.path.dirname(__file__), 'data') +@pytest.fixture(scope='module') +def configs_dir(): + return os.path.join(os.path.dirname(__file__), 'configs') + + @pytest.fixture(scope='module') def people(data_dir): return pd.read_csv( @@ -27,13 +30,13 @@ def people(data_dir): @pytest.fixture(scope='module') -def cdap_indiv_and_hhsize1(data_dir): - return read_model_spec(data_dir, 'cdap_indiv_and_hhsize1.csv') +def cdap_indiv_and_hhsize1(configs_dir): + return simulate.read_model_spec(file_name='cdap_indiv_and_hhsize1.csv', spec_dir=configs_dir) @pytest.fixture(scope='module') -def cdap_interaction_coefficients(data_dir): - f = os.path.join(data_dir, 'cdap_interaction_coefficients.csv') +def cdap_interaction_coefficients(configs_dir): + f = os.path.join(configs_dir, 'cdap_interaction_coefficients.csv') coefficients = pd.read_csv(f, comment='#') coefficients = cdap.preprocess_interaction_coefficients(coefficients) return coefficients @@ -45,21 +48,9 @@ def individual_utils( return cdap.individual_utilities(people, cdap_indiv_and_hhsize1, locals_d=None) -# @pytest.fixture -# def hh_utils(individual_utils, people, hh_id_col): -# hh_utils = cdap.initial_household_utilities( -# individual_utils, people, hh_id_col) -# return hh_utils -# -# -# @pytest.fixture -# def hh_choices(random_seed, hh_utils): -# return cdap.make_household_choices(hh_utils) - - -def test_bad_coefficients(data_dir): +def test_bad_coefficients(configs_dir): - f = os.path.join(data_dir, 'cdap_interaction_coefficients.csv') + f = os.path.join(configs_dir, 'cdap_interaction_coefficients.csv') coefficients = pd.read_csv(f, comment='#') coefficients.loc[2, 'activity'] = 'AA' @@ -123,11 +114,11 @@ def test_build_cdap_spec_hhsize2(people, cdap_indiv_and_hhsize1, cdap_interactio choosers = cdap.hh_choosers(indiv_utils, hhsize=hhsize) - spec = cdap.build_cdap_spec(cdap_interaction_coefficients, hhsize=hhsize) + spec = cdap.build_cdap_spec(cdap_interaction_coefficients, hhsize=hhsize, cache=False) - vars = cdap.eval_variables(spec.index, choosers) + vars = simulate.eval_variables(spec.index, choosers) - utils = compute_utilities(vars, spec) + utils = simulate.compute_utilities(vars, spec) expected = pd.DataFrame([ [0, 3, 0, 3, 7, 3, 0, 3, 0], # household 3 diff --git a/activitysim/abm/models/util/test/test_non_mandatory_tour_frequency.py b/activitysim/abm/models/util/test/test_non_mandatory_tour_frequency.py index 6b1951a13..b9ca04bf8 100644 --- a/activitysim/abm/models/util/test/test_non_mandatory_tour_frequency.py +++ b/activitysim/abm/models/util/test/test_non_mandatory_tour_frequency.py @@ -29,8 +29,11 @@ def test_nmtf(): index=[0, 1, 2, 3] ) - nmt = process_non_mandatory_tours(persons, - non_mandatory_tour_frequency_alts) + tour_counts = non_mandatory_tour_frequency_alts.loc[persons.non_mandatory_tour_frequency] + tour_counts.index = persons.index # assign person ids to the index + + # - create the non_mandatory tours + nmt = process_non_mandatory_tours(persons, tour_counts) idx = nmt.index diff --git a/activitysim/abm/models/util/test/test_vectorize_tour_scheduling.py b/activitysim/abm/models/util/test/test_vectorize_tour_scheduling.py index 18c051413..f507e3f59 100644 --- a/activitysim/abm/models/util/test/test_vectorize_tour_scheduling.py +++ b/activitysim/abm/models/util/test/test_vectorize_tour_scheduling.py @@ -5,7 +5,6 @@ import pytest import pandas as pd import numpy as np -import orca import pandas.util.testing as pdt @@ -17,7 +16,7 @@ def test_vts(): - orca.add_injectable("settings", {}) + inject.add_injectable("settings", {}) # note: need 0 duration tour on one end of day to guarantee at least one available tour alts = pd.DataFrame({ @@ -25,7 +24,7 @@ def test_vts(): "end": [1, 4, 5, 6] }) alts['duration'] = alts.end - alts.start - orca.add_injectable("tdd_alts", alts) + inject.add_injectable("tdd_alts", alts) current_tour_person_ids = pd.Series(['b', 'c'], index=['d', 'e']) @@ -54,15 +53,20 @@ def test_vts(): persons = pd.DataFrame({ "income": [20, 30, 25] }, index=[1, 2, 3]) - orca.add_table('persons', persons) + + inject.add_table('persons', persons) spec = pd.DataFrame({"Coefficient": [1.2]}, index=["income"]) spec.index.name = "Expression" + segment_col = None # no segmentation of model_spec - orca.add_injectable("check_for_variability", True) + inject.add_injectable("check_for_variability", True) - tdd_choices = vectorize_tour_scheduling(tours, persons, alts, spec) + tdd_choices, timetable = vectorize_tour_scheduling( + tours, persons, alts, spec, segment_col, + model_settings={}, + chunk_size=0, trace_label='test_vts') # FIXME - dead reckoning regression # there's no real logic here - this is just what came out of the monte carlo diff --git a/activitysim/abm/models/util/tour_destination.py b/activitysim/abm/models/util/tour_destination.py index 8a42b85fc..17d82e7c8 100644 --- a/activitysim/abm/models/util/tour_destination.py +++ b/activitysim/abm/models/util/tour_destination.py @@ -1,93 +1,307 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging -import numpy as np import pandas as pd +from activitysim.core import tracing +from activitysim.core import config +from activitysim.core import pipeline +from activitysim.core import simulate +from activitysim.core import inject + +from activitysim.core.util import reindex + +from activitysim.core.interaction_sample_simulate import interaction_sample_simulate +from activitysim.core.interaction_sample import interaction_sample + +from activitysim.core.mem import force_garbage_collect + + +from . import logsums as logsum +from activitysim.abm.tables.size_terms import tour_destination_size_terms logger = logging.getLogger(__name__) +DUMP = False -def size_term(land_use, destination_choice_coeffs): +class SizeTermCalculator(object): """ - This method takes the land use data and multiplies various columns of the - land use data by coefficients from the spec table in order - to yield a size term (a linear combination of land use variables). - - Parameters - ---------- - land_use : DataFrame - A dataframe of land use attributes - the column names should match - the index of destination_choice_coeffs - destination_choice_coeffs : Series - A series of coefficients for the land use attributes - the index - describes the link to the land use table, and the values are floating - points numbers used to do the linear combination - - Returns - ------- - values : Series - The index will be the same as land use, and the values will the - linear combination of the land use table columns specified by the - coefficients series. + convenience object to provide size_terms for a selector (e.g. non_mandatory) + for various segments (e.g. tour_type or purpose) + returns size terms for specified segment in df or series form """ - coeffs = destination_choice_coeffs - # first check for missing column in the land_use table - missing = coeffs[~coeffs.index.isin(land_use.columns)] + def __init__(self, size_term_selector): + + # do this once so they can request siae_terms for various segments (tour_type or purpose) + land_use = inject.get_table('land_use') + size_terms = inject.get_injectable('size_terms') + self.destination_size_terms = \ + tour_destination_size_terms(land_use, size_terms, size_term_selector) + + def dest_size_terms_df(self, segment_name): + # return size terms as df with one column named 'size_term' + # convenient if creating or merging with alts + + size_terms = self.destination_size_terms[[segment_name]].copy() + size_terms.columns = ['size_term'] + return size_terms + + def dest_size_terms_series(self, segment_name): + # return size terms as as series + # convenient (and no copy overhead) if reindexing and assigning into alts column + return self.destination_size_terms[segment_name] + + +def run_destination_sample( + spec_segment_name, + tours, + persons_merged, + model_settings, + skim_dict, + destination_size_terms, + chunk_size, trace_label): + + model_spec_file_name = model_settings['SAMPLE_SPEC'] + model_spec = simulate.read_model_spec(file_name=model_spec_file_name) + model_spec = model_spec[[spec_segment_name]] - if len(missing) > 0: - logger.warn("%s missing columns in land use" % len(missing.index)) - for v in missing.index.values: - logger.warn("missing: %s" % v) + # merge persons into tours + choosers = pd.merge(tours, persons_merged, left_on='person_id', right_index=True, how='left') + # FIXME - MEMORY HACK - only include columns actually used in spec + chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] + choosers = choosers[chooser_columns] - return land_use[coeffs.index].dot(coeffs) + constants = config.get_model_constants(model_settings) + sample_size = model_settings["SAMPLE_SIZE"] + alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] -def tour_destination_size_terms(land_use, size_terms, selector): + logger.info("running %s with %d tours", trace_label, len(choosers)) + + # create wrapper with keys for this lookup - in this case there is a workplace_taz + # in the choosers and a TAZ in the alternatives which get merged during interaction + # (logit.interaction_dataset suffixes duplicate chooser column with '_chooser') + # the skims will be available under the name "skims" for any @ expressions + origin_col_name = model_settings['CHOOSER_ORIG_COL_NAME'] + if origin_col_name == 'TAZ': + origin_col_name = 'TAZ_chooser' + skims = skim_dict.wrap(origin_col_name, 'TAZ') + + locals_d = { + 'skims': skims + } + if constants is not None: + locals_d.update(constants) + + choices = interaction_sample( + choosers, + alternatives=destination_size_terms, + sample_size=sample_size, + alt_col_name=alt_dest_col_name, + spec=model_spec, + skims=skims, + locals_d=locals_d, + chunk_size=chunk_size, + trace_label=trace_label) + + # remember person_id in chosen alts so we can merge with persons in subsequent steps + # (broadcasts person_id onto all alternatives sharing the same tour_id index value) + choices['person_id'] = choosers.person_id + + return choices + + +def run_destination_logsums( + tour_purpose, + persons_merged, + destination_sample, + model_settings, + skim_dict, skim_stack, + chunk_size, trace_hh_id, trace_label): + """ + add logsum column to existing tour_destination_sample table + + logsum is calculated by running the mode_choice model for each sample (person, dest_taz) pair + in destination_sample, and computing the logsum of all the utilities """ - Parameters - ---------- - land_use - pipeline table - size_terms - pipeline table - selector - str + logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) + + # FIXME - MEMORY HACK - only include columns actually used in spec + persons_merged = logsum.filter_chooser_columns(persons_merged, logsum_settings, model_settings) + + # merge persons into tours + choosers = pd.merge(destination_sample, + persons_merged, + left_on='person_id', + right_index=True, + how="left") + + logger.info("Running %s with %s rows", trace_label, len(choosers)) - Returns - ------- + tracing.dump_df(DUMP, persons_merged, trace_label, 'persons_merged') + tracing.dump_df(DUMP, choosers, trace_label, 'choosers') - :: + logsums = logsum.compute_logsums( + choosers, + tour_purpose, + logsum_settings, model_settings, + skim_dict, skim_stack, + chunk_size, trace_hh_id, + trace_label) - pandas.dataframe - one column per selector segment with index of land_use - e.g. for selector 'work', columns will be work_low, work_med, work_high, work_veryhigh - and for selector 'trip', columns will be eatout, escort, othdiscr, othmaint, ... + destination_sample['mode_choice_logsum'] = logsums - work_low work_med work_high work_veryhigh - TAZ ... - 1 1267.00000 522.000 1108.000 1540.0000 ... - 2 1991.00000 824.500 1759.000 2420.0000 ... - ... + return destination_sample + + +def run_destination_simulate( + spec_segment_name, + tours, + persons_merged, + destination_sample, + model_settings, + skim_dict, + destination_size_terms, + chunk_size, trace_label): """ + run destination_simulate on tour_destination_sample + annotated with mode_choice logsum to select a destination from sample alternatives + """ + + model_spec_file_name = model_settings['SPEC'] + model_spec = simulate.read_model_spec(file_name=model_spec_file_name) + model_spec = model_spec[[spec_segment_name]] + + # merge persons into tours + choosers = pd.merge(tours, + persons_merged, + left_on='person_id', right_index=True, how='left') + # FIXME - MEMORY HACK - only include columns actually used in spec + chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] + choosers = choosers[chooser_columns] + + alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] + origin_col_name = model_settings['CHOOSER_ORIG_COL_NAME'] + + # alternatives are pre-sampled and annotated with logsums and pick_count + # but we have to merge size_terms column into alt sample list + destination_sample['size_term'] = \ + reindex(destination_size_terms.size_term, destination_sample[alt_dest_col_name]) + + tracing.dump_df(DUMP, destination_sample, trace_label, 'alternatives') + + constants = config.get_model_constants(model_settings) + + logger.info("Running tour_destination_simulate with %d persons", len(choosers)) + + # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers + # and a TAZ in the alternatives which get merged during interaction + # the skims will be available under the name "skims" for any @ expressions + skims = skim_dict.wrap(origin_col_name, alt_dest_col_name) + + locals_d = { + 'skims': skims, + } + if constants is not None: + locals_d.update(constants) + + tracing.dump_df(DUMP, choosers, trace_label, 'choosers') + + choices = interaction_sample_simulate( + choosers, + destination_sample, + spec=model_spec, + choice_column=alt_dest_col_name, + skims=skims, + locals_d=locals_d, + chunk_size=chunk_size, + trace_label=trace_label, + trace_choice_name='destination') + + return choices + + +def run_tour_destination( + tours, + persons_merged, + model_settings, + skim_dict, + skim_stack, + chunk_size, trace_hh_id, trace_label): + + size_term_calculator = SizeTermCalculator(model_settings['SIZE_TERM_SELECTOR']) + + chooser_segment_column = model_settings['CHOOSER_SEGMENT_COLUMN_NAME'] + + # maps segment names to compact (integer) ids + segments = model_settings['SEGMENTS'] + + # interaction_sample_simulate insists choosers appear in same order as alts + tours = tours.sort_index() + + choices_list = [] + for segment_name in segments: + + choosers = tours[tours[chooser_segment_column] == segment_name] + + # size_term segment is segment_name + segment_destination_size_terms = size_term_calculator.dest_size_terms_df(segment_name) + + if choosers.shape[0] == 0: + logger.info("%s skipping segment %s: no choosers", trace_label, segment_name) + continue - land_use = land_use.to_frame() - size_terms = size_terms.to_frame() + # - destination_sample + spec_segment_name = segment_name # spec_segment_name is segment_name + location_sample_df = \ + run_destination_sample( + spec_segment_name, + choosers, + persons_merged, + model_settings, + skim_dict, + segment_destination_size_terms, + chunk_size, + tracing.extend_trace_label(trace_label, 'sample.%s' % segment_name)) - size_terms = size_terms[size_terms.selector == selector].copy() - del size_terms['selector'] + # - destination_logsums + tour_purpose = segment_name # tour_purpose is segment_name + location_sample_df = \ + run_destination_logsums( + tour_purpose, + persons_merged, + location_sample_df, + model_settings, + skim_dict, skim_stack, + chunk_size, trace_hh_id, + tracing.extend_trace_label(trace_label, 'logsums.%s' % segment_name)) - df = pd.DataFrame({key: size_term(land_use, row) for key, row in size_terms.iterrows()}, - index=land_use.index) - df.index.name = 'TAZ' + # - destination_simulate + spec_segment_name = segment_name # spec_segment_name is segment_name + choices = \ + run_destination_simulate( + spec_segment_name, + choosers, + persons_merged, + location_sample_df, + model_settings, + skim_dict, + segment_destination_size_terms, + chunk_size, + tracing.extend_trace_label(trace_label, 'simulate.%s' % segment_name)) - if not (df.dtypes == 'float64').all(): - logger.warn('Surprised to find that not all size_terms were float64!') + choices_list.append(choices) - # - #NARROW - # float16 has 3.3 decimal digits of precision, float32 has 7.2 - df = df.astype(np.float16, errors='raise') + # FIXME - want to do this here? + del location_sample_df + force_garbage_collect() - return df + return pd.concat(choices_list) if len(choices_list) > 0 else pd.Series() diff --git a/activitysim/abm/models/util/tour_frequency.py b/activitysim/abm/models/util/tour_frequency.py index ec5813ecb..5a5471002 100644 --- a/activitysim/abm/models/util/tour_frequency.py +++ b/activitysim/abm/models/util/tour_frequency.py @@ -1,6 +1,12 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from future.utils import iteritems + import logging import numpy as np @@ -16,7 +22,7 @@ def enumerate_tour_types(tour_flavors): # tour_flavors: {'eat': 1, 'business': 2, 'maint': 1} # channels: ['eat1', 'business1', 'business2', 'maint1'] channels = [tour_type + str(tour_num) - for tour_type, max_count in tour_flavors.iteritems() + for tour_type, max_count in iteritems(tour_flavors) for tour_num in range(1, max_count + 1)] return channels @@ -36,8 +42,13 @@ def canonical_tours(): # non_mandatory_tour_flavors = {c : alts[c].max() for c in alts.columns} # - non_mandatory_channels - non_mandatory_tour_flavors = {'escort': 2, 'shopping': 1, 'othmaint': 1, 'othdiscr': 1, - 'eatout': 1, 'social': 1} + MAX_EXTENSION = 2 + non_mandatory_tour_flavors = {'escort': 2 + MAX_EXTENSION, + 'shopping': 1 + MAX_EXTENSION, + 'othmaint': 1 + MAX_EXTENSION, + 'othdiscr': 1 + MAX_EXTENSION, + 'eatout': 1 + MAX_EXTENSION, + 'social': 1 + MAX_EXTENSION} non_mandatory_channels = enumerate_tour_types(non_mandatory_tour_flavors) # - mandatory_channels @@ -110,7 +121,7 @@ def set_tour_index(tours, parent_tour_num_col=None, is_joint=False): # map recognized strings to ints tours.tour_id = tours.tour_id.replace(to_replace=possible_tours, - value=range(possible_tours_count)) + value=list(range(possible_tours_count))) # convert to numeric - shouldn't be any NaNs - this will raise error if there are tours.tour_id = pd.to_numeric(tours.tour_id, errors='coerce').astype(int) @@ -124,7 +135,7 @@ def set_tour_index(tours, parent_tour_num_col=None, is_joint=False): tours.set_index('tour_id', inplace=True, verify_integrity=True) -def process_tours(tour_frequency, tour_frequency_alts, tour_category, parent_col='person_id'): +def create_tours(tour_counts, tour_category, parent_col='person_id'): """ This method processes the tour_frequency column that comes out of the model of the same name and turns into a DataFrame that @@ -132,55 +143,40 @@ def process_tours(tour_frequency, tour_frequency_alts, tour_category, parent_col Parameters ---------- - tour_frequency: Series - A series which has person id as the index and the chosen alternative - index as the value - tour_frequency_alts: DataFrame - A DataFrame which has as a unique index which relates to the values - in the series above typically includes columns which are named for trip - purposes with values which are counts for that trip purpose. Example - trip purposes include escort, shopping, othmaint, othdiscr, eatout, - social, etc. A row would be an alternative which might be to take - one shopping trip and zero trips of other purposes, etc. + tour_counts: DataFrame + table specifying how many tours of each type to create + one row per person (or parent_tour for atwork subtours) + one (int) column per tour_type, with number of tours to create tour_category : str one of 'mandatory', 'non_mandatory', 'atwork', or 'joint' - to add consistent tour_category columns - or None (as in the case of joint tours) if no tour_category fields should be added to tours Returns ------- - tours : DataFrame + tours : pandas.DataFrame An example of a tours DataFrame is supplied as a comment in the source code - it has an index which is a unique tour identifier, a person_id column, and a tour type column which comes from the column names of the alternatives DataFrame supplied above. - tours.tour_type - tour type (e.g. school, work, shopping, eat) - tours.tour_type_num - if there are two 'school' type tours, they will be numbered 1 and 2 - tours.tour_type_count - number of tours of tour_type parent has (parent's max tour_type_num) - tours.tour_num - index of tour (of any type) for parent - tours.tour_count - number of tours of any type) for parent (parent's max tour_num) + tours.tour_type - tour type (e.g. school, work, shopping, eat) + tours.tour_type_num - if there are two 'school' type tours, they will be numbered 1 and 2 + tours.tour_type_count - number of tours of tour_type parent has (parent's max tour_type_num) + tours.tour_num - index of tour (of any type) for parent + tours.tour_count - number of tours of any type) for parent (parent's max tour_num) + tours.tour_category - one of 'mandatory', 'non_mandatory', 'atwork', or 'joint' """ # FIXME - document requirement to ensure adjacent tour_type_nums in tour_num order - # get the actual alternatives for each person - have to go back to the - # non_mandatory_tour_frequency_alts dataframe to get this - the choice - # above just stored the index values for the chosen alts - tours = tour_frequency_alts.loc[tour_frequency] - - # assign person ids to the index - tours.index = tour_frequency.index - """ alt1 alt2 alt3 - PERID + 2588676 2 0 0 2588677 1 1 0 """ # reformat with the columns given below - tours = tours.stack().reset_index() + tours = tour_counts.stack().reset_index() tours.columns = [parent_col, "tour_type", "tour_type_count"] """ @@ -219,8 +215,6 @@ def process_tours(tour_frequency, tour_frequency_alts, tour_category, parent_col # set these here to ensure consistency across different tour categories assert tour_category in ['mandatory', 'non_mandatory', 'atwork', 'joint'] - # tours['mandatory'] = (tour_category == 'mandatory') - # tours['non_mandatory'] = (tour_category == 'non_mandatory') tours['tour_category'] = tour_category # for joint tours, the correct number will be filled in after participation step @@ -229,6 +223,67 @@ def process_tours(tour_frequency, tour_frequency_alts, tour_category, parent_col return tours +def process_tours(tour_frequency, tour_frequency_alts, tour_category, parent_col='person_id'): + """ + This method processes the tour_frequency column that comes + out of the model of the same name and turns into a DataFrame that + represents the tours that were generated + + Parameters + ---------- + tour_frequency: Series + A series which has as the index and the chosen alternative + index as the value + tour_frequency_alts: DataFrame + A DataFrame which has as a unique index which relates to the values + in the series above typically includes columns which are named for trip + purposes with values which are counts for that trip purpose. Example + trip purposes include escort, shopping, othmaint, othdiscr, eatout, + social, etc. A row would be an alternative which might be to take + one shopping trip and zero trips of other purposes, etc. + tour_category : str + one of 'mandatory', 'non_mandatory', 'atwork', or 'joint' + parent_col: str + the name of the index (parent_tour_id for atwork subtours, otherwise person_id) + + Returns + ------- + tours : pandas.DataFrame + An example of a tours DataFrame is supplied as a comment in the + source code - it has an index which is a unique tour identifier, + a person_id column, and a tour type column which comes from the + column names of the alternatives DataFrame supplied above. + + tours.tour_type - tour type (e.g. school, work, shopping, eat) + tours.tour_type_num - if there are two 'school' type tours, they will be numbered 1 and 2 + tours.tour_type_count - number of tours of tour_type parent has (parent's max tour_type_num) + tours.tour_num - index of tour (of any type) for parent + tours.tour_count - number of tours of any type) for parent (parent's max tour_num) + tours.tour_category - one of 'mandatory', 'non_mandatory', 'atwork', or 'joint' + """ + + # FIXME - document requirement to ensure adjacent tour_type_nums in tour_num order + + # get the actual alternatives for each person - have to go back to the + # non_mandatory_tour_frequency_alts dataframe to get this - the choice + # above just stored the index values for the chosen alts + tour_counts = tour_frequency_alts.loc[tour_frequency] + + # assign person ids to the index + tour_counts.index = tour_frequency.index + + """ + alt1 alt2 alt3 + + 2588676 2 0 0 + 2588677 1 1 0 + """ + + tours = create_tours(tour_counts, tour_category, parent_col) + + return tours + + def process_mandatory_tours(persons, mandatory_tour_frequency_alts): """ This method processes the mandatory_tour_frequency column that comes out of @@ -257,7 +312,7 @@ def process_mandatory_tours(persons, mandatory_tour_frequency_alts): depends on the is_worker column: work tours first for workers, second for non-workers """ - PERSON_COLUMNS = ['mandatory_tour_frequency', 'is_worker', + person_columns = ['mandatory_tour_frequency', 'is_worker', 'school_taz', 'workplace_taz', 'home_taz', 'household_id'] assert not persons.mandatory_tour_frequency.isnull().any() @@ -266,7 +321,7 @@ def process_mandatory_tours(persons, mandatory_tour_frequency_alts): tour_category='mandatory') tours_merged = pd.merge(tours[['person_id', 'tour_type']], - persons[PERSON_COLUMNS], + persons[person_columns], left_on='person_id', right_index=True) # by default work tours are first for work_and_school tours @@ -305,8 +360,7 @@ def process_mandatory_tours(persons, mandatory_tour_frequency_alts): return tours -def process_non_mandatory_tours(persons, - non_mandatory_tour_frequency_alts): +def process_non_mandatory_tours(persons, tour_counts): """ This method processes the non_mandatory_tour_frequency column that comes out of the model of the same name and turns into a DataFrame that @@ -333,9 +387,8 @@ def process_non_mandatory_tours(persons, a person_id column, and a tour type column which comes from the column names of the alternatives DataFrame supplied above. """ - tours = process_tours(persons.non_mandatory_tour_frequency.dropna(), - non_mandatory_tour_frequency_alts, - tour_category='non_mandatory') + + tours = create_tours(tour_counts, tour_category='non_mandatory') tours['household_id'] = reindex(persons.household_id, tours.person_id) tours['origin'] = reindex(persons.home_taz, tours.person_id) @@ -488,7 +541,7 @@ def process_joint_tours(joint_tour_frequency, joint_tour_frequency_alts, point_p """ household_id tour_type tour_type_count tour_type_num tour_num tour_count - joint_tour_id + tour_id 3209530 320953 disc 1 1 1 2 3209531 320953 disc 2 2 2 2 23267026 2326702 shop 1 1 1 1 diff --git a/activitysim/abm/models/util/trip.py b/activitysim/abm/models/util/trip.py index 18f25ff85..0f6400365 100644 --- a/activitysim/abm/models/util/trip.py +++ b/activitysim/abm/models/util/trip.py @@ -1,5 +1,8 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 import logging @@ -54,7 +57,7 @@ def cleanup_failed_trips(trips): """ if trips.failed.any(): - logger.info("cleanup_failed_trips dropping %s sidelined failed trips" % trips.failed.sum()) + logger.warning("cleanup_failed_trips dropping %s failed trips" % trips.failed.sum()) trips['patch'] = False flag_failed_trip_leg_mates(trips, 'patch') diff --git a/activitysim/abm/models/util/trip_mode.py b/activitysim/abm/models/util/trip_mode.py deleted file mode 100644 index 6a74a6eb3..000000000 --- a/activitysim/abm/models/util/trip_mode.py +++ /dev/null @@ -1,31 +0,0 @@ -# ActivitySim -# See full license in LICENSE.txt. - -import os -import pandas as pd -import numpy as np - -from activitysim.core import tracing -from activitysim.core import simulate -from activitysim.core import inject - -from activitysim.core.util import assign_in_place - -import expressions - - -def trip_mode_choice_spec(model_settings): - - configs_dir = inject.get_injectable('configs_dir') - - assert 'SPEC' in model_settings - return simulate.read_model_spec(configs_dir, model_settings['SPEC']) - - -def trip_mode_choice_coeffecients_spec(model_settings): - - configs_dir = inject.get_injectable('configs_dir') - - assert 'COEFFS' in model_settings - with open(os.path.join(configs_dir, model_settings['COEFFS'])) as f: - return pd.read_csv(f, comment='#', index_col='Expression') diff --git a/activitysim/abm/models/util/vectorize_tour_scheduling.py b/activitysim/abm/models/util/vectorize_tour_scheduling.py index b240f3158..6913455f8 100644 --- a/activitysim/abm/models/util/vectorize_tour_scheduling.py +++ b/activitysim/abm/models/util/vectorize_tour_scheduling.py @@ -1,5 +1,8 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 import logging @@ -7,21 +10,159 @@ import pandas as pd from activitysim.core.interaction_sample_simulate import interaction_sample_simulate +from activitysim.core import config from activitysim.core import tracing from activitysim.core import inject +from activitysim.core import mem + +from activitysim.core import chunk +from activitysim.core import simulate +from activitysim.core import assign +from activitysim.core import logit from activitysim.core import timetable as tt -from activitysim.core.util import memory_info -from activitysim.core.util import df_size -from activitysim.core.util import force_garbage_collect from activitysim.core.util import reindex -from activitysim.core import chunk +from . import expressions +from . import mode logger = logging.getLogger(__name__) +def get_logsum_spec(model_settings): + + return mode.tour_mode_choice_spec(model_settings) + + +def get_coeffecients_spec(model_settings): + return mode.tour_mode_choice_coeffecients_spec(model_settings) + + +def _compute_logsums(alt_tdd, tours_merged, tour_purpose, model_settings, trace_label): + """ + compute logsums for tours using skims for alt_tdd out_period and in_period + """ + + trace_label = tracing.extend_trace_label(trace_label, 'logsums') + + logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) + + choosers = alt_tdd.join(tours_merged, how='left', rsuffix='_chooser') + logger.info("%s compute_logsums for %d choosers%s alts" % + (trace_label, choosers.shape[0], alt_tdd.shape[0])) + + # - setup skims + + skim_dict = inject.get_injectable('skim_dict') + skim_stack = inject.get_injectable('skim_stack') + + orig_col_name = 'TAZ' + dest_col_name = model_settings.get('DESTINATION_FOR_TOUR_PURPOSE').get(tour_purpose) + + odt_skim_stack_wrapper = skim_stack.wrap(left_key=orig_col_name, right_key=dest_col_name, + skim_key='out_period') + dot_skim_stack_wrapper = skim_stack.wrap(left_key=dest_col_name, right_key=orig_col_name, + skim_key='in_period') + od_skim_stack_wrapper = skim_dict.wrap(orig_col_name, dest_col_name) + + skims = { + "odt_skims": odt_skim_stack_wrapper, + "dot_skims": dot_skim_stack_wrapper, + "od_skims": od_skim_stack_wrapper, + 'orig_col_name': orig_col_name, + 'dest_col_name': dest_col_name, + } + + # - locals_dict + constants = config.get_model_constants(logsum_settings) + + omnibus_coefficient_spec = get_coeffecients_spec(logsum_settings) + coefficient_spec = omnibus_coefficient_spec[tour_purpose] + coefficients = assign.evaluate_constants(coefficient_spec, constants=constants) + + locals_dict = {} + locals_dict.update(coefficients) + locals_dict.update(constants) + locals_dict.update(skims) + + # - run preprocessor to annotate choosers + # allow specification of alternate preprocessor for nontour choosers + preprocessor = model_settings.get('LOGSUM_PREPROCESSOR', 'preprocessor') + preprocessor_settings = logsum_settings[preprocessor] + + if preprocessor_settings: + + simulate.set_skim_wrapper_targets(choosers, skims) + + expressions.assign_columns( + df=choosers, + model_settings=preprocessor_settings, + locals_dict=locals_dict, + trace_label=trace_label) + + # - compute logsums + logsum_spec = get_logsum_spec(logsum_settings) + nest_spec = config.get_logit_model_settings(logsum_settings) + + logsums = simulate.simple_simulate_logsums( + choosers, + logsum_spec, + nest_spec, + skims=skims, + locals_d=locals_dict, + chunk_size=0, + trace_label=trace_label) + + return logsums + + +def compute_logsums(alt_tdd, tours_merged, tour_purpose, model_settings, trace_label): + """ + Compute logsums for the tour alt_tdds, which will differ based on their different start, stop + times of day, which translate to different odt_skim out_period and in_periods. + + In mtctm1, tdds are hourly, but there are only 5 skim time periods, so some of the tdd_alts + will be the same, once converted to skim time periods. With 5 skim time periods there are + 15 unique out-out period pairs but 190 tdd alternatives. + + For efficiency, rather compute a lot of redundant logsums, we compute logsums for the unique + (out-period, in-period) pairs and then join them back to the alt_tdds. + """ + # - in_period and out_period + assert 'out_period' not in alt_tdd + assert 'in_period' not in alt_tdd + alt_tdd['out_period'] = expressions.skim_time_period_label(alt_tdd['start']) + alt_tdd['in_period'] = expressions.skim_time_period_label(alt_tdd['end']) + alt_tdd['duration'] = alt_tdd['end'] - alt_tdd['start'] + + USE_BRUTE_FORCE = False + if USE_BRUTE_FORCE: + # compute logsums for all the tour alt_tdds (inefficient) + logsums = _compute_logsums(alt_tdd, tours_merged, tour_purpose, model_settings, trace_label) + return logsums + + # - get list of unique (tour_id, out_period, in_period, duration) in alt_tdd_periods + # we can cut the number of alts roughly in half (for mtctm1) by conflating duplicates + index_name = alt_tdd.index.name + alt_tdd_periods = alt_tdd[['out_period', 'in_period', 'duration']]\ + .reset_index().drop_duplicates().set_index(index_name) + + # - compute logsums for the alt_tdd_periods + alt_tdd_periods['logsums'] = \ + _compute_logsums(alt_tdd_periods, tours_merged, tour_purpose, model_settings, trace_label) + + # - join the alt_tdd_period logsums to alt_tdd to get logsums for alt_tdd + logsums = pd.merge( + alt_tdd.reset_index(), + alt_tdd_periods.reset_index(), + on=[index_name, 'out_period', 'in_period', 'duration'], + how='left' + ).set_index(index_name).logsums + + return logsums + + def get_previous_tour_by_tourid(current_tour_window_ids, previous_tour_by_window_id, alts): @@ -64,7 +205,7 @@ def get_previous_tour_by_tourid(current_tour_window_ids, return previous_tour_by_tourid -def tdd_interaction_dataset(tours, alts, timetable, choice_column, window_id_col): +def tdd_interaction_dataset(tours, alts, timetable, choice_column, window_id_col, trace_label): """ interaction_sample_simulate expects alts index same as choosers (e.g. tour_id) @@ -94,16 +235,15 @@ def tdd_interaction_dataset(tours, alts, timetable, choice_column, window_id_col tour_ids = np.repeat(tours.index, len(alts.index)) window_row_ids = np.repeat(tours[window_id_col], len(alts.index)) - alt_tdd = alts.take(alts_ids).copy() + alt_tdd = alts.take(alts_ids) + alt_tdd.index = tour_ids alt_tdd[window_id_col] = window_row_ids alt_tdd[choice_column] = alts_ids # slice out all non-available tours available = timetable.tour_available(alt_tdd[window_id_col], alt_tdd[choice_column]) - assert available.any() - alt_tdd = alt_tdd[available] # FIXME - don't need this any more after slicing @@ -113,7 +253,9 @@ def tdd_interaction_dataset(tours, alts, timetable, choice_column, window_id_col def _schedule_tours( - tours, persons_merged, alts, spec, constants, + tours, persons_merged, alts, + spec, logsum_tour_purpose, + model_settings, timetable, window_id_col, previous_tour, tour_owner_id_col, tour_trace_label): @@ -140,14 +282,14 @@ def _schedule_tours( unavailable alternatives spec : DataFrame The spec which will be passed to interaction_simulate. - constants : dict - dict of model-specific constants for eval + model_settings : dict timetable : TimeTable timetable of timewidows for person (or subtour) with rows for tours[window_id_col] window_id_col : str column name from tours that identifies timetable owner (or None if tours index) - person_id for non/mandatory tours, parent_tour_id for subtours, - None (tours index) for joint_tours since every tour potentially has different participants) + - person_id for non/mandatory tours + - parent_tour_id for subtours, + - None (tours index) for joint_tours since every tour may have different participants) previous_tour: Series series with value of tdd_alt choice for last previous tour scheduled for tour_owner_id_col : str @@ -167,8 +309,11 @@ def _schedule_tours( # avoid dual suffix for redundant columns names (e.g. household_id) that appear in both tours = pd.merge(tours, persons_merged, left_on='person_id', right_index=True, suffixes=('', '_y')) + chunk.log_df(tour_trace_label, "tours", tours) + # - add explicit window_id_col for timetable owner if it is index # if no timetable window_id_col specified, then add index as an explicit column + # (this is not strictly necessary but its presence makes code simpler in several places) if window_id_col is None: window_id_col = tours.index.name tours[window_id_col] = tours.index @@ -176,19 +321,33 @@ def _schedule_tours( # timetable can't handle multiple tours per window_id assert not tours[window_id_col].duplicated().any() - # merge previous tour columns (join on index) - previous_tour_info = get_previous_tour_by_tourid(tours[tour_owner_id_col], previous_tour, alts) - tours = tours.join(previous_tour_info) - - # build interaction dataset filtered to include only available tdd alts + # - build interaction dataset filtered to include only available tdd alts # dataframe columns start, end , duration, person_id, tdd # indexed (not unique) on tour_id choice_column = 'tdd' - alt_tdd = tdd_interaction_dataset(tours, alts, timetable, choice_column, window_id_col) + alt_tdd = tdd_interaction_dataset(tours, alts, timetable, choice_column, window_id_col, + tour_trace_label) + chunk.log_df(tour_trace_label, "alt_tdd", alt_tdd) + + # - add logsums + if logsum_tour_purpose: + logsums = \ + compute_logsums(alt_tdd, tours, logsum_tour_purpose, model_settings, tour_trace_label) + else: + logsums = 0 + alt_tdd['mode_choice_logsum'] = logsums + + # - merge in previous tour columns + # adds start_previous and end_previous, joins on index + tours = \ + tours.join(get_previous_tour_by_tourid(tours[tour_owner_id_col], previous_tour, alts)) + chunk.log_df(tour_trace_label, "tours", tours) + # - make choices locals_d = { 'tt': timetable } + constants = config.get_model_constants(model_settings) if constants is not None: locals_d.update(constants) @@ -202,14 +361,14 @@ def _schedule_tours( trace_label=tour_trace_label ) + # - update previous_tour and timetable parameters + + # update previous_tour (series with most recent previous tdd choices) with latest values previous_tour.loc[tours[tour_owner_id_col]] = choices.values + # update timetable with chosen tdd footprints timetable.assign(tours[window_id_col], choices) - cum_size = chunk.log_df_size(tour_trace_label, "tours", tours, cum_size=None) - cum_size = chunk.log_df_size(tour_trace_label, "alt_tdd", alt_tdd, cum_size) - chunk.log_chunk_size(tour_trace_label, cum_size) - return choices @@ -218,8 +377,8 @@ def calc_rows_per_chunk(chunk_size, tours, persons_merged, alternatives, trace_ num_choosers = len(tours.index) # if not chunking, then return num_choosers - if chunk_size == 0: - return num_choosers + # if chunk_size == 0: + # return num_choosers, 0 chooser_row_size = tours.shape[1] sample_size = alternatives.shape[0] @@ -241,7 +400,9 @@ def calc_rows_per_chunk(chunk_size, tours, persons_merged, alternatives, trace_ def schedule_tours( - tours, persons_merged, alts, spec, constants, + tours, persons_merged, alts, + spec, logsum_tour_purpose, + model_settings, timetable, timetable_window_id_col, previous_tour, tour_owner_id_col, chunk_size, tour_trace_label): @@ -267,14 +428,9 @@ def schedule_tours( else: assert not tours[timetable_window_id_col].duplicated().any() - # persons_merged columns plus 2 previous tour columns - extra_chooser_columns = persons_merged.shape[1] + 2 - - rows_per_chunk = \ + rows_per_chunk, effective_chunk_size = \ calc_rows_per_chunk(chunk_size, tours, persons_merged, alts, trace_label=tour_trace_label) - logger.info("chunk_size %s rows_per_chunk %s" % (chunk_size, rows_per_chunk)) - result_list = [] for i, num_chunks, chooser_chunk \ in chunk.chunked_choosers(tours, rows_per_chunk): @@ -284,15 +440,19 @@ def schedule_tours( chunk_trace_label = tracing.extend_trace_label(tour_trace_label, 'chunk_%s' % i) \ if num_chunks > 1 else tour_trace_label + chunk.log_open(chunk_trace_label, chunk_size, effective_chunk_size) choices = _schedule_tours(chooser_chunk, persons_merged, - alts, spec, constants, + alts, spec, logsum_tour_purpose, + model_settings, timetable, timetable_window_id_col, previous_tour, tour_owner_id_col, tour_trace_label=chunk_trace_label) + chunk.log_close(chunk_trace_label) + result_list.append(choices) - force_garbage_collect() + mem.force_garbage_collect() # FIXME: this will require 2X RAM # if necessary, could append to hdf5 store on disk: @@ -305,8 +465,9 @@ def schedule_tours( return choices -def vectorize_tour_scheduling(tours, persons_merged, alts, spec, - constants={}, +def vectorize_tour_scheduling(tours, persons_merged, alts, + spec, segment_col, + model_settings, chunk_size=0, trace_label=None): """ The purpose of this method is fairly straightforward - it takes tours @@ -322,6 +483,9 @@ def vectorize_tour_scheduling(tours, persons_merged, alts, spec, start_previous and end_previous are undefined, so make sure to protect with a tour_num >= 2 in the variable computation. + + + Parameters ---------- tours : DataFrame @@ -335,13 +499,15 @@ def vectorize_tour_scheduling(tours, persons_merged, alts, spec, spec : DataFrame The spec which will be passed to interaction_simulate. (or dict of specs keyed on tour_type if tour_types is not None) - constants : dict - dict of model-specific constants for eval + model_settings : dict + Returns ------- choices : Series A Series of choices where the index is the index of the tours DataFrame and the values are the index of the alts DataFrame. + timetable : TimeTable + persons timetable updated with tours (caller should replace_table for it to persist) """ trace_label = tracing.extend_trace_label(trace_label, 'vectorize_tour_scheduling') @@ -361,6 +527,9 @@ def vectorize_tour_scheduling(tours, persons_merged, alts, spec, # initialize with first trip from alts previous_tour_by_personid = pd.Series(alts.index[0], index=tours.person_id.unique()) + timetable_window_id_col = 'person_id' + tour_owner_id_col = 'person_id' + # no more than one tour per person per call to schedule_tours # tours must be scheduled in increasing trip_num order # second trip of type must be in group immediately following first @@ -372,47 +541,73 @@ def vectorize_tour_scheduling(tours, persons_merged, alts, spec, if isinstance(spec, dict): - for tour_type in spec: + assert segment_col is not None + + for spec_segment in spec: + + segment_trace_label = tracing.extend_trace_label(tour_trace_label, spec_segment) - if (nth_tours.tour_type == tour_type).any(): - choices = \ - schedule_tours(nth_tours[nth_tours.tour_type == tour_type], - persons_merged, alts, - spec[tour_type], constants, - timetable, 'person_id', - previous_tour_by_personid, 'person_id', - chunk_size, - tracing.extend_trace_label(tour_trace_label, tour_type)) + in_segment = nth_tours[segment_col] == spec_segment - choice_list.append(choices) + if not in_segment.any(): + logger.info("skipping empty segment %s") + continue + + # assume segmentation of spec and logsum coefficients are aligned + logsum_tour_purpose = spec_segment + + choices = \ + schedule_tours(nth_tours[in_segment], + persons_merged, alts, + spec[spec_segment], logsum_tour_purpose, + model_settings, + timetable, timetable_window_id_col, + previous_tour_by_personid, tour_owner_id_col, + chunk_size, + segment_trace_label) + + choice_list.append(choices) else: + # unsegmented spec dict indicates no logsums + # caller could use single-element spec dict if logsum support desired, + # but this case nor required for mtctm1 + assert segment_col is None + logsum_segment = None + choices = \ schedule_tours(nth_tours, persons_merged, alts, - spec, constants, - timetable, 'person_id', - previous_tour_by_personid, 'person_id', - chunk_size, tour_trace_label) + spec, logsum_segment, + model_settings, + timetable, timetable_window_id_col, + previous_tour_by_personid, tour_owner_id_col, + chunk_size, + tour_trace_label) choice_list.append(choices) choices = pd.concat(choice_list) # add the start, end, and duration from tdd_alts - tdd = alts.loc[choices] - tdd.index = choices.index + # use np instead of (slower) loc[] since alts has rangeindex + tdd = pd.DataFrame(data=alts.values[choices.values], + columns=alts.columns, + index=choices.index) + + # tdd = alts.loc[choices] + # tdd.index = choices.index + # include the index of the choice in the tdd alts table tdd['tdd'] = choices - timetable.replace_table() - - return tdd + return tdd, timetable def vectorize_subtour_scheduling(parent_tours, subtours, persons_merged, alts, spec, - constants, chunk_size=0, trace_label=None): + model_settings, + chunk_size=0, trace_label=None): """ Like vectorize_tour_scheduling but specifically for atwork subtours @@ -437,8 +632,8 @@ def vectorize_subtour_scheduling(parent_tours, subtours, persons_merged, alts, s spec : DataFrame The spec which will be passed to interaction_simulate. (all subtours share same spec regardless of subtour type) - constants : dict - dict of model-specific constants for eval chunk_size + model_settings : dict + chunk_size trace_label Returns @@ -454,6 +649,10 @@ def vectorize_subtour_scheduling(parent_tours, subtours, persons_merged, alts, s assert 'tour_num' in subtours.columns assert 'tour_type' in subtours.columns + timetable_window_id_col = 'parent_tour_id' + tour_owner_id_col = 'parent_tour_id' + segment = None + # timetable with a window for each parent tour parent_tour_windows = tt.create_timetable_windows(parent_tours, alts) timetable = tt.TimeTable(parent_tour_windows, alts) @@ -490,9 +689,10 @@ def vectorize_subtour_scheduling(parent_tours, subtours, persons_merged, alts, s choices = \ schedule_tours(nth_tours, persons_merged, alts, - spec, constants, - timetable, 'parent_tour_id', - previous_tour_by_parent_tour_id, 'parent_tour_id', + spec, segment, + model_settings, + timetable, timetable_window_id_col, + previous_tour_by_parent_tour_id, tour_owner_id_col, chunk_size, tour_trace_label) choice_list.append(choices) @@ -500,8 +700,14 @@ def vectorize_subtour_scheduling(parent_tours, subtours, persons_merged, alts, s choices = pd.concat(choice_list) # add the start, end, and duration from tdd_alts - tdd = alts.loc[choices] - tdd.index = choices.index + # assert (alts.index == list(range(alts.shape[0]))).all() + tdd = pd.DataFrame(data=alts.values[choices.values], + columns=alts.columns, + index=choices.index) + + # tdd = alts.loc[choices] + # tdd.index = choices.index + # include the index of the choice in the tdd alts table tdd['tdd'] = choices @@ -540,7 +746,7 @@ def build_joint_tour_timetables(joint_tours, joint_tour_participants, persons_ti def vectorize_joint_tour_scheduling( joint_tours, joint_tour_participants, persons_merged, alts, spec, - constants={}, + model_settings, chunk_size=0, trace_label=None): """ Like vectorize_tour_scheduling but specifically for joint tours @@ -562,13 +768,15 @@ def vectorize_joint_tour_scheduling( spec : DataFrame The spec which will be passed to interaction_simulate. (or dict of specs keyed on tour_type if tour_types is not None) - constants : dict - dict of model-specific constants for eval + model_settings : dict + Returns ------- choices : Series A Series of choices where the index is the index of the tours DataFrame and the values are the index of the alts DataFrame. + persons_timetable : TimeTable + timetable updated with joint tours (caller should replace_table for it to persist) """ trace_label = tracing.extend_trace_label(trace_label, 'vectorize_joint_tour_scheduling') @@ -577,6 +785,10 @@ def vectorize_joint_tour_scheduling( assert 'tour_num' in joint_tours.columns assert 'tour_type' in joint_tours.columns + timetable_window_id_col = None + tour_owner_id_col = 'household_id' + segment = None + persons_timetable = inject.get_injectable("timetable") choice_list = [] @@ -608,9 +820,10 @@ def vectorize_joint_tour_scheduling( choices = \ schedule_tours(nth_tours, persons_merged, alts, - spec, constants, - timetable, None, - previous_tour_by_householdid, 'household_id', + spec, segment, + model_settings, + timetable, timetable_window_id_col, + previous_tour_by_householdid, tour_owner_id_col, chunk_size, tour_trace_label) # - update timetables of all joint tour participants @@ -623,14 +836,19 @@ def vectorize_joint_tour_scheduling( choices = pd.concat(choice_list) # add the start, end, and duration from tdd_alts - tdd = alts.loc[choices] + # assert (alts.index == list(range(alts.shape[0]))).all() + tdd = pd.DataFrame(data=alts.values[choices.values], + columns=alts.columns, + index=choices.index) + + # tdd = alts.loc[choices] + # tdd.index = choices.index + tdd.index = choices.index # include the index of the choice in the tdd alts table tdd['tdd'] = choices - persons_timetable.replace_table() - # print "participant windows after scheduling\n", \ # persons_timetable.slice_windows_by_row_id(joint_tour_participants.person_id) - return tdd + return tdd, persons_timetable diff --git a/activitysim/abm/models/workplace_location.py b/activitysim/abm/models/workplace_location.py deleted file mode 100644 index b0a9ac806..000000000 --- a/activitysim/abm/models/workplace_location.py +++ /dev/null @@ -1,268 +0,0 @@ -# ActivitySim -# See full license in LICENSE.txt. - -import os -import logging - -import pandas as pd - -from activitysim.core import tracing -from activitysim.core import config -from activitysim.core import pipeline -from activitysim.core import simulate -from activitysim.core import inject - -from activitysim.core.interaction_sample_simulate import interaction_sample_simulate -from activitysim.core.interaction_sample import interaction_sample - -from activitysim.core.util import reindex - -from .util import expressions -from .util.logsums import compute_logsums -from .util.expressions import skim_time_period_label - -from .util import logsums as logsum - -from .util.tour_destination import tour_destination_size_terms - - -""" -The workplace location model predicts the zones in which various people will -work. - -for now we generate a workplace location for everyone - -presumably it will not get used in downstream models for everyone - -it should depend on CDAP and mandatory tour generation as to whether -it gets used -""" - -logger = logging.getLogger(__name__) - - -@inject.injectable() -def workplace_location_sample_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'workplace_location_sample.csv') - - -@inject.step() -def workplace_location_sample(persons_merged, - workplace_location_sample_spec, - skim_dict, - land_use, size_terms, - chunk_size, trace_hh_id): - """ - build a table of workers * all zones in order to select a sample of alternative work locations. - - PERID, dest_TAZ, rand, pick_count - 23750, 14, 0.565502716034, 4 - 23750, 16, 0.711135838871, 6 - ... - 23751, 12, 0.408038878552, 1 - 23751, 14, 0.972732479292, 2 - """ - - trace_label = 'workplace_location_sample' - model_settings = config.read_model_settings('workplace_location.yaml') - - # FIXME - only choose workplace_location of workers? is this the right criteria? - choosers = persons_merged.to_frame() - choosers = choosers[choosers.is_worker] - - if choosers.shape[0] == 0: - logger.info("Skipping %s: no workers" % trace_label) - inject.add_table('workplace_location_sample', pd.DataFrame()) - return - - # FIXME - MEMORY HACK - only include columns actually used in spec - chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] - choosers = choosers[chooser_columns] - - alternatives = tour_destination_size_terms(land_use, size_terms, 'work') - - sample_size = model_settings["SAMPLE_SIZE"] - alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] - - logger.info("Running workplace_location_sample with %d persons" % len(choosers)) - - # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers - # and a TAZ in the alternatives which get merged during interaction - # the skims will be available under the name "skims" for any @ expressions - skims = skim_dict.wrap("TAZ", "TAZ_r") - - locals_d = { - 'skims': skims - } - constants = config.get_model_constants(model_settings) - if constants is not None: - locals_d.update(constants) - - choices = interaction_sample( - choosers, - alternatives, - sample_size=sample_size, - alt_col_name=alt_dest_col_name, - spec=workplace_location_sample_spec, - skims=skims, - locals_d=locals_d, - chunk_size=chunk_size, - trace_label=trace_label) - - inject.add_table('workplace_location_sample', choices) - - -@inject.step() -def workplace_location_logsums(persons_merged, - skim_dict, skim_stack, - workplace_location_sample, - configs_dir, chunk_size, trace_hh_id): - """ - add logsum column to existing workplace_location_sample able - - logsum is calculated by running the mode_choice model for each sample (person, dest_taz) pair - in workplace_location_sample, and computing the logsum of all the utilities - - +-------+--------------+----------------+------------+----------------+ - | PERID | dest_TAZ | rand | pick_count | logsum (added) | - +=======+==============+================+============+================+ - | 23750 | 14 | 0.565502716034 | 4 | 1.85659498857 | - +-------+--------------+----------------+------------+----------------+ - + 23750 | 16 | 0.711135838871 | 6 | 1.92315598631 | - +-------+--------------+----------------+------------+----------------+ - + ... | | | | | - +-------+--------------+----------------+------------+----------------+ - | 23751 | 12 | 0.408038878552 | 1 | 2.40612135416 | - +-------+--------------+----------------+------------+----------------+ - | 23751 | 14 | 0.972732479292 | 2 | 1.44009018355 | - +-------+--------------+----------------+------------+----------------+ - """ - - trace_label = 'workplace_location_logsums' - - location_sample = workplace_location_sample.to_frame() - if location_sample.shape[0] == 0: - tracing.no_results(trace_label) - return - - model_settings = config.read_model_settings('workplace_location.yaml') - logsum_settings = config.read_model_settings(model_settings['LOGSUM_SETTINGS']) - - persons_merged = persons_merged.to_frame() - # FIXME - MEMORY HACK - only include columns actually used in spec - persons_merged = logsum.filter_chooser_columns(persons_merged, logsum_settings, model_settings) - - logger.info("Running workplace_location_logsums with %s rows" % len(location_sample)) - - choosers = pd.merge(location_sample, - persons_merged, - left_index=True, - right_index=True, - how="left") - - tour_purpose = 'work' - logsums = logsum.compute_logsums( - choosers, - tour_purpose, - logsum_settings, model_settings, - skim_dict, skim_stack, - chunk_size, trace_hh_id, - trace_label) - - # "add_column series should have an index matching the table to which it is being added" - # when the index has duplicates, however, in the special case that the series index exactly - # matches the table index, then the series value order is preserved - # logsums now does, since workplace_location_sample was on left side of merge de-dup merge - inject.add_column('workplace_location_sample', 'mode_choice_logsum', logsums) - - -@inject.injectable() -def workplace_location_spec(configs_dir): - return simulate.read_model_spec(configs_dir, 'workplace_location.csv') - - -@inject.step() -def workplace_location_simulate(persons_merged, persons, - workplace_location_sample, - workplace_location_spec, - skim_dict, - land_use, size_terms, - configs_dir, chunk_size, trace_hh_id): - """ - Workplace location model on workplace_location_sample annotated with mode_choice logsum - to select a work_taz from sample alternatives - """ - - trace_label = 'workplace_location_simulate' - model_settings = config.read_model_settings('workplace_location.yaml') - NO_WORKPLACE_TAZ = -1 - - location_sample = workplace_location_sample.to_frame() - persons = persons.to_frame() - - if location_sample.shape[0] > 0: - - choosers = persons_merged.to_frame() - choosers = choosers[choosers.is_worker] - - # FIXME - MEMORY HACK - only include columns actually used in spec - chooser_columns = model_settings['SIMULATE_CHOOSER_COLUMNS'] - choosers = choosers[chooser_columns] - - alt_dest_col_name = model_settings["ALT_DEST_COL_NAME"] - - # alternatives are pre-sampled and annotated with logsums and pick_count - # but we have to merge additional alt columns into alt sample list - location_sample = workplace_location_sample.to_frame() - destination_size_terms = tour_destination_size_terms(land_use, size_terms, 'work') - - alternatives = \ - pd.merge(location_sample, destination_size_terms, - left_on=alt_dest_col_name, right_index=True, how="left") - - logger.info("Running workplace_location_simulate with %d persons" % len(choosers)) - - # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers - # and a TAZ in the alternatives which get merged during interaction - # the skims will be available under the name "skims" for any @ expressions - skims = skim_dict.wrap("TAZ", alt_dest_col_name) - - locals_d = { - 'skims': skims, - } - constants = config.get_model_constants(model_settings) - if constants is not None: - locals_d.update(constants) - - choices = interaction_sample_simulate( - choosers, - alternatives, - spec=workplace_location_spec, - choice_column=alt_dest_col_name, - skims=skims, - locals_d=locals_d, - chunk_size=chunk_size, - trace_label=trace_label, - trace_choice_name='workplace_location') - - persons['workplace_taz'] = \ - choices.reindex(persons.index).fillna(NO_WORKPLACE_TAZ).astype(int) - - else: - - # no workers (but we still want to annotate persons) - persons['workplace_taz'] = NO_WORKPLACE_TAZ - - expressions.assign_columns( - df=persons, - model_settings=model_settings.get('annotate_persons'), - trace_label=tracing.extend_trace_label(trace_label, 'annotate_persons')) - - pipeline.replace_table("persons", persons) - - pipeline.drop_table('workplace_location_sample') - - tracing.print_summary('workplace_taz', persons.workplace_taz, describe=True) - - if trace_hh_id: - tracing.trace_df(persons, - label="workplace_location", - warn_if_empty=True) diff --git a/activitysim/abm/tables/__init__.py b/activitysim/abm/tables/__init__.py index 177e781b4..8dac5ca9e 100644 --- a/activitysim/abm/tables/__init__.py +++ b/activitysim/abm/tables/__init__.py @@ -1,14 +1,19 @@ # ActivitySim # See full license in LICENSE.txt. -import households -import persons -import landuse -import skims -import tours -import size_terms -import trips -import time_windows - -import constants -import random_channels +from __future__ import absolute_import + +from . import input_store + +from . import households +from . import persons +from . import landuse +from . import skims +from . import tours +from . import size_terms +from . import trips +from . import time_windows +from . import shadow_pricing + +from . import constants +from . import table_dict diff --git a/activitysim/abm/tables/constants.py b/activitysim/abm/tables/constants.py index a592dea7a..767147c31 100644 --- a/activitysim/abm/tables/constants.py +++ b/activitysim/abm/tables/constants.py @@ -1,4 +1,9 @@ +# ActivitySim +# See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 HHT_NONE = 0 HHT_FAMILY_MARRIED = 1 @@ -17,6 +22,19 @@ PSTUDENT_UNIVERSITY = 2 PSTUDENT_NOT = 3 +GRADE_SCHOOL_MAX_AGE = 14 +GRADE_SCHOOL_MIN_AGE = 5 + +SCHOOL_SEGMENT_NONE = 0 +SCHOOL_SEGMENT_GRADE = 1 +SCHOOL_SEGMENT_HIGH = 2 +SCHOOL_SEGMENT_UNIV = 3 + +INCOME_SEGMENT_LOW = 1 +INCOME_SEGMENT_MED = 2 +INCOME_SEGMENT_HIGH = 3 +INCOME_SEGMENT_VERYHIGH = 4 + PEMPLOY_FULL = 1 PEMPLOY_PART = 2 PEMPLOY_NOT = 3 diff --git a/activitysim/abm/tables/households.py b/activitysim/abm/tables/households.py index 245a1d87f..da7fdd450 100644 --- a/activitysim/abm/tables/households.py +++ b/activitysim/abm/tables/households.py @@ -1,24 +1,32 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import range + import logging -import os import pandas as pd +import numpy as np -from activitysim.core import simulate as asim from activitysim.core import tracing from activitysim.core import pipeline - from activitysim.core import inject +from .input_store import read_input_table + logger = logging.getLogger(__name__) @inject.table() -def households(store, households_sample_size, trace_hh_id, override_hh_ids): +def households(households_sample_size, override_hh_ids, trace_hh_id): + + df_full = read_input_table("households") + households_sliced = False - df_full = store["households"] + logger.info("full household list contains %s households" % df_full.shape[0]) # only using households listed in override_hh_ids if override_hh_ids is not None: @@ -27,6 +35,7 @@ def households(store, households_sample_size, trace_hh_id, override_hh_ids): logger.info("override household list containing %s households" % len(override_hh_ids)) df = df_full[df_full.index.isin(override_hh_ids)] + households_sliced = True if df.shape[0] < len(override_hh_ids): logger.info("found %s of %s households in override household list" % @@ -40,40 +49,57 @@ def households(store, households_sample_size, trace_hh_id, override_hh_ids): # df contains only trace_hh (or empty if not in full store) df = tracing.slice_ids(df_full, trace_hh_id) + households_sliced = True # if we need a subset of full store elif households_sample_size > 0 and df_full.shape[0] > households_sample_size: logger.info("sampling %s of %s households" % (households_sample_size, df_full.shape[0])) - # take the requested random sample - df = asim.random_rows(df_full, households_sample_size) + """ + Because random seed is set differently for each step, sampling of households using + Random.global_rng would sample differently depending upon which step it was called from. + We use a one-off rng seeded with the pseudo step name 'sample_households' to provide + repeatable sampling no matter when the table is loaded. + + Note that the external_rng is also seeded with base_seed so the sample will (rightly) change + if the pipeline rng's base_seed is changed + """ + + prng = pipeline.get_rn_generator().get_external_rng('sample_households') + df = df_full.take(prng.choice(len(df_full), size=households_sample_size, replace=False)) + households_sliced = True # if tracing and we missed trace_hh in sample, but it is in full store if trace_hh_id and trace_hh_id not in df.index and trace_hh_id in df_full.index: - # replace first hh in sample with trace_hh - logger.debug("replacing household %s with %s in household sample" % - (df.index[0], trace_hh_id)) - df_hh = tracing.slice_ids(df_full, trace_hh_id) - df = pd.concat([df_hh, df[1:]]) + # replace first hh in sample with trace_hh + logger.debug("replacing household %s with %s in household sample" % + (df.index[0], trace_hh_id)) + df_hh = df_full.loc[[trace_hh_id]] + df = pd.concat([df_hh, df[1:]]) else: df = df_full + # persons table + inject.add_injectable('households_sliced', households_sliced) + logger.info("loaded households %s" % (df.shape,)) + df.index.name = 'household_id' + # FIXME - pathological knowledge of name of chunk_id column used by chunked_choosers_by_chunk_id assert 'chunk_id' not in df.columns - df['chunk_id'] = pd.Series(range(len(df)), df.index) + df['chunk_id'] = pd.Series(list(range(len(df))), df.index) # replace table function with dataframe inject.add_table('households', df) - pipeline.get_rn_generator().add_channel(df, 'households') + pipeline.get_rn_generator().add_channel('households', df) if trace_hh_id: tracing.register_traceable_table('households', df) - tracing.trace_df(df, "households", warn_if_empty=True) + tracing.trace_df(df, "raw.households", warn_if_empty=True) return df diff --git a/activitysim/abm/tables/input_store.py b/activitysim/abm/tables/input_store.py new file mode 100644 index 000000000..b72c5c60e --- /dev/null +++ b/activitysim/abm/tables/input_store.py @@ -0,0 +1,39 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +import os +import logging + +import pandas as pd + +from activitysim.core import config +from activitysim.core.config import setting + +# FIXME +# warnings.filterwarnings('ignore', category=pd.io.pytables.PerformanceWarning) +pd.options.mode.chained_assignment = None + +logger = logging.getLogger(__name__) + + +def read_input_table(table_name): + + filename = setting('input_store', None) + + if not filename: + logger.error("input store file name not specified in settings") + raise RuntimeError("store file name not specified in settings") + + input_store_path = config.data_file_path(filename) + + if not os.path.exists(input_store_path): + logger.error("store file not found: %s" % input_store_path) + raise RuntimeError("store file not found: %s" % input_store_path) + + df = pd.read_hdf(input_store_path, table_name) + + return df diff --git a/activitysim/abm/tables/landuse.py b/activitysim/abm/tables/landuse.py index 36001c999..85a1df875 100644 --- a/activitysim/abm/tables/landuse.py +++ b/activitysim/abm/tables/landuse.py @@ -1,20 +1,27 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging from activitysim.core import inject +from .input_store import read_input_table logger = logging.getLogger(__name__) @inject.table() -def land_use(store): +def land_use(): - df = store["land_use/taz_data"] + df = read_input_table("land_use_taz") logger.info("loaded land_use %s" % (df.shape,)) + df.index.name = 'TAZ' + # replace table function with dataframe inject.add_table('land_use', df) diff --git a/activitysim/abm/tables/persons.py b/activitysim/abm/tables/persons.py index 8f3fffc4e..1d9a8a592 100644 --- a/activitysim/abm/tables/persons.py +++ b/activitysim/abm/tables/persons.py @@ -1,39 +1,49 @@ # ActivitySim # See full license in LICENSE.txt. -import logging +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 -import pandas as pd +import logging from activitysim.core import pipeline from activitysim.core import inject from activitysim.core import tracing -from activitysim.core.util import other_than, reindex -from constants import * +from .input_store import read_input_table logger = logging.getLogger(__name__) -@inject.table() -def persons(store, households_sample_size, households, trace_hh_id): +def read_raw_persons(households): - df = store["persons"] + df = read_input_table("persons") - if households_sample_size > 0: + if inject.get_injectable('households_sliced', False): # keep all persons in the sampled households df = df[df.household_id.isin(households.index)] + return df + + +@inject.table() +def persons(households, trace_hh_id): + + df = read_raw_persons(households) + logger.info("loaded persons %s" % (df.shape,)) + df.index.name = 'person_id' + # replace table function with dataframe inject.add_table('persons', df) - pipeline.get_rn_generator().add_channel(df, 'persons') + pipeline.get_rn_generator().add_channel('persons', df) if trace_hh_id: tracing.register_traceable_table('persons', df) - tracing.trace_df(df, "persons", warn_if_empty=True) + tracing.trace_df(df, "raw.persons", warn_if_empty=True) return df diff --git a/activitysim/abm/tables/random_channels.py b/activitysim/abm/tables/random_channels.py deleted file mode 100644 index b5c98b118..000000000 --- a/activitysim/abm/tables/random_channels.py +++ /dev/null @@ -1,41 +0,0 @@ -# ActivitySim -# See full license in LICENSE.txt. - -import logging - -from activitysim.core import inject - - -logger = logging.getLogger(__name__) - -""" -We expect that the random number channel can be determined by the name of the index of the -dataframe accompanying the request. - -channel_info is a dict with keys and value of the form: - -:: - - : - - -channel_name: str - The channel name is just the table name used by the pipeline and inject. -table_index_name: str - name of the table index (so we can deduce the channel for a dataframe by index name) - -""" - -CHANNEL_INFO = { - 'households': 'HHID', - 'persons': 'PERID', - 'tours': 'tour_id', - 'joint_tour_participants': 'participant_id', - 'trips': 'trip_id', -} - - -@inject.injectable() -def channel_info(): - - return CHANNEL_INFO diff --git a/activitysim/abm/tables/shadow_pricing.py b/activitysim/abm/tables/shadow_pricing.py new file mode 100644 index 000000000..b751fa2ba --- /dev/null +++ b/activitysim/abm/tables/shadow_pricing.py @@ -0,0 +1,841 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from future.utils import iteritems + +import logging +import time +import multiprocessing +import ctypes + +from collections import OrderedDict + +import numpy as np +import pandas as pd + +from activitysim.core import inject +from activitysim.core import util +from activitysim.core import config +from activitysim.core import tracing + +from activitysim.abm.tables.size_terms import tour_destination_size_terms + + +logger = logging.getLogger(__name__) + +""" +ShadowPriceCalculator and associated utility methods + +See docstrings for documentation on: + +update_shadow_prices how shadow_price coefficients are calculated +synchronize_choices interprocess communication to compute aggregate modeled_size +check_fit convergence criteria for shadow_pric iteration + +Import concepts and variables: + +model_selector: str + Identifies a specific location choice model (e.g. 'school', 'workplace') + The various models work similarly, but use different expression files, model settings, etc. + +segment: str + Identifies a specific demographic segment of a model (e.g. 'elementary' segment of 'school') + Models can have different size term coefficients (in destinatin_choice_size_terms file) and + different utility coefficients in models's location and location_sample csv expression files + +size_table: pandas.DataFrame + + +""" + + +""" +Artisanal reverse semaphores to synchronize concurrent access to shared data buffer + +we use the first two rows of the final column in numpy-wrapped shared data as 'reverse semaphores' +(they synchronize concurrent access to shared data resource rather than throttling access) + +ShadowPriceCalculator.synchronize_choices coordinates access to the global aggregate zone counts +(local_modeled_size summed across all sub-processes) using these two semaphores +(which are really only tuples of indexes of locations in the shared data array. +""" +TALLY_CHECKIN = (0, -1) +TALLY_CHECKOUT = (1, -1) + + +def size_table_name(model_selector): + """ + Returns canonical name of injected destination desired_size table + + Parameters + ---------- + model_selector : str + e.g. school or workplace + + Returns + ------- + table_name : str + """ + return "%s_destination_size" % model_selector + + +class ShadowPriceCalculator(object): + + def __init__(self, model_settings, num_processes, shared_data=None, shared_data_lock=None): + """ + + Presence of shared_data is used as a flag for multiprocessing + If we are multiprocessing, shared_data should be a multiprocessing.RawArray buffer + to aggregate modeled_size across all sub-processes, and shared_data_lock should be + a multiprocessing.Lock object to coordinate access to that buffer. + + Optionally load saved shadow_prices from data_dir if config setting use_shadow_pricing + and shadow_setting LOAD_SAVED_SHADOW_PRICES are both True + + Parameters + ---------- + model_settings : dict + shared_data : multiprocessing.Array or None (if single process) + shared_data_lock : numpy array wrapping multiprocessing.RawArray or None (if single process) + """ + + self.num_processes = num_processes + self.use_shadow_pricing = bool(config.setting('use_shadow_pricing')) + self.saved_shadow_price_file_path = None # set by read_saved_shadow_prices if loaded + + self.model_selector = model_settings['MODEL_SELECTOR'] + + full_model_run = config.setting('households_sample_size') == 0 + if self.use_shadow_pricing and not full_model_run: + logging.warning("deprecated combination of use_shadow_pricing and not full_model_run") + + self.segment_ids = model_settings['SEGMENT_IDS'] + + # - modeled_size (set by call to set_choices/synchronize_choices) + self.modeled_size = None + + if self.use_shadow_pricing: + self.shadow_settings = config.read_model_settings('shadow_pricing.yaml') + + for k in self.shadow_settings: + logger.debug("shadow_settings %s: %s" % (k, self.shadow_settings.get(k))) + + # - destination_size_table (desired_size) + self.desired_size = inject.get_table(size_table_name(self.model_selector)).to_frame() + + # - shared_data + if shared_data is not None: + assert shared_data.shape[0] == self.desired_size.shape[0] + assert shared_data.shape[1] == self.desired_size.shape[1] + 1 # tally column + assert shared_data_lock is not None + self.shared_data = shared_data + self.shared_data_lock = shared_data_lock + + # - load saved shadow_prices (if available) and set max_iterations accordingly + if self.use_shadow_pricing: + self.shadow_prices = None + self.shadow_price_method = self.shadow_settings['SHADOW_PRICE_METHOD'] + assert self.shadow_price_method in ['daysim', 'ctramp'] + + if self.shadow_settings['LOAD_SAVED_SHADOW_PRICES']: + # read_saved_shadow_prices logs error and returns None if file not found + self.shadow_prices = self.read_saved_shadow_prices(model_settings) + + if self.shadow_prices is None: + self.max_iterations = self.shadow_settings.get('MAX_ITERATIONS', 5) + else: + self.max_iterations = self.shadow_settings.get('MAX_ITERATIONS_SAVED', 1) + + # initial_shadow_price if we did not load + if self.shadow_prices is None: + # initial value depends on method + initial_shadow_price = 1.0 if self.shadow_price_method == 'ctramp' else 0.0 + self.shadow_prices = \ + pd.DataFrame(data=initial_shadow_price, + columns=self.desired_size.columns, + index=self.desired_size.index) + else: + self.max_iterations = 1 + + self.num_fail = pd.DataFrame(index=self.desired_size.columns) + self.max_abs_diff = pd.DataFrame(index=self.desired_size.columns) + self.max_rel_diff = pd.DataFrame(index=self.desired_size.columns) + + def read_saved_shadow_prices(self, model_settings): + """ + Read saved shadow_prices from csv file in data_dir (so-called warm start) + returns None if no saved shadow price file name specified or named file not found + + Parameters + ---------- + model_settings : dict + + Returns + ------- + shadow_prices : pandas.DataFrame or None + """ + + shadow_prices = None + + # - load saved shadow_prices + saved_shadow_price_file_name = model_settings.get('SAVED_SHADOW_PRICE_TABLE_NAME') + if saved_shadow_price_file_name: + # FIXME - where should we look for this file? + file_path = config.data_file_path(saved_shadow_price_file_name, mandatory=False) + if file_path: + shadow_prices = pd.read_csv(file_path, index_col=0) + self.saved_shadow_price_file_path = file_path # informational + logging.info("loaded saved_shadow_prices from %s" % file_path) + else: + logging.warning("Could not find saved_shadow_prices file %s" % file_path) + + return shadow_prices + + def synchronize_choices(self, local_modeled_size): + """ + We have to wait until all processes have computed choices and aggregated them by segment + and zone before we can compute global aggregate zone counts (by segment). Since the global + zone counts are in shared data, we have to coordinate access to the data structure across + sub-processes. + + Note that all access to self.shared_data has to be protected by acquiring shared_data_lock + + ShadowPriceCalculator.synchronize_choices coordinates access to the global aggregate + zone counts (local_modeled_size summed across all sub-processes). + + * All processes wait (in case we are iterating) until any stragglers from the previous + iteration have exited the building. (TALLY_CHECKOUT goes to zero) + + * Processes then add their local counts into the shared_data and increment TALLY_CHECKIN + + * All processes wait until everybody has checked in (TALLY_CHECKIN == num_processes) + + * Processes make local copy of shared_data and check out (increment TALLY_CHECKOUT) + + * first_in process waits until all processes have checked out, then zeros shared_data + and clears semaphores + + Parameters + ---------- + local_modeled_size : pandas DataFrame + + + Returns + ------- + global_modeled_size_df : pandas DataFrame + local copy of shared global_modeled_size data as dataframe + with same shape and columns as local_modeled_size + """ + + # shouldn't be called if we are not multiprocessing + assert self.shared_data is not None + assert self.num_processes > 1 + + def get_tally(t): + with self.shared_data_lock: + return self.shared_data[t] + + def wait(tally, target): + while get_tally(tally) != target: + time.sleep(1) + + # - nobody checks in until checkout clears + wait(TALLY_CHECKOUT, 0) + + # - add local_modeled_size data, increment TALLY_CHECKIN + with self.shared_data_lock: + first_in = self.shared_data[TALLY_CHECKIN] == 0 + # add local data from df to shared data buffer + # final column is used for tallys, hence the negative index + self.shared_data[..., 0:-1] += local_modeled_size.values + self.shared_data[TALLY_CHECKIN] += 1 + + # - wait until everybody else has checked in + wait(TALLY_CHECKIN, self.num_processes) + + # - copy shared data, increment TALLY_CHECKIN + with self.shared_data_lock: + logger.info("copy shared_data") + # numpy array with sum of local_modeled_size.values from all processes + global_modeled_size_array = self.shared_data[..., 0:-1].copy() + self.shared_data[TALLY_CHECKOUT] += 1 + + # - first in waits until all other processes have checked out, and cleans tub + if first_in: + wait(TALLY_CHECKOUT, self.num_processes) + with self.shared_data_lock: + # zero shared_data, clear TALLY_CHECKIN, and TALLY_CHECKOUT semaphores + self.shared_data[:] = 0 + logger.info("first_in clearing shared_data") + + # convert summed numpy array data to conform to original dataframe + global_modeled_size_df = \ + pd.DataFrame(data=global_modeled_size_array, + index=local_modeled_size.index, + columns=local_modeled_size.columns) + + return global_modeled_size_df + + def set_choices(self, choices_df): + """ + aggregate individual location choices to modeled_size by zone and segment + + Parameters + ---------- + choices_df : pandas.DataFrame + dataframe with disaggregate location choices and at least two columns: + segment_id : segment id tag for this individual + dest_choice : zone id of location choice + Returns + ------- + updates self.modeled_size + """ + + assert 'dest_choice' in choices_df + + modeled_size = pd.DataFrame(index=self.desired_size.index) + for c in self.desired_size: + segment_choices = \ + choices_df[choices_df['segment_id'] == self.segment_ids[c]] + modeled_size[c] = segment_choices.groupby('dest_choice').size() + modeled_size = modeled_size.fillna(0).astype(int) + + if self.num_processes == 1: + # - not multiprocessing + self.modeled_size = modeled_size + else: + # - if we are multiprocessing, we have to aggregate across sub-processes + self.modeled_size = self.synchronize_choices(modeled_size) + + def check_fit(self, iteration): + """ + Check convergence criteria fit of modeled_size to target desired_size + (For multiprocessing, this is global modeled_size summed across processes, + so each process will independently calculate the same result.) + + Parameters + ---------- + iteration: int + iteration number (informational, for num_failand max_diff history columns) + + Returns + ------- + converged: boolean + + """ + + # fixme + + if not self.use_shadow_pricing: + return False + + assert self.modeled_size is not None + assert self.desired_size is not None + + # - convergence criteria for check_fit + # ignore convergence criteria for zones smaller than size_threshold + size_threshold = self.shadow_settings['SIZE_THRESHOLD'] + # zone passes if modeled is within percent_tolerance of desired_size + percent_tolerance = self.shadow_settings['PERCENT_TOLERANCE'] + # max percentage of zones allowed to fail + fail_threshold = self.shadow_settings['FAIL_THRESHOLD'] + + modeled_size = self.modeled_size + desired_size = self.desired_size + + abs_diff = (desired_size - modeled_size).abs() + + rel_diff = abs_diff / modeled_size + + # ignore zones where desired_size < threshold + rel_diff.where(desired_size >= size_threshold, 0, inplace=True) + + # ignore zones where rel_diff < percent_tolerance + rel_diff.where(rel_diff > (percent_tolerance / 100.0), 0, inplace=True) + + self.num_fail['iter%s' % iteration] = (rel_diff > 0).sum() + self.max_abs_diff['iter%s' % iteration] = abs_diff.max() + self.max_rel_diff['iter%s' % iteration] = rel_diff.max() + + total_fails = (rel_diff > 0).values.sum() + + # FIXME - should not count zones where desired_size < threshold? (could calc in init) + max_fail = (fail_threshold / 100.0) * np.prod(desired_size.shape) + + converged = (total_fails <= max_fail) + + # for c in desired_size: + # print("check_fit %s segment %s" % (self.model_selector, c)) + # print(" modeled %s" % (modeled_size[c].sum())) + # print(" desired %s" % (desired_size[c].sum())) + # print(" max abs diff %s" % (abs_diff[c].max())) + # print(" max rel diff %s" % (rel_diff[c].max())) + + logging.info("check_fit %s iteration: %s converged: %s max_fail: %s total_fails: %s" % + (self.model_selector, iteration, converged, max_fail, total_fails)) + + # - convergence stats + if converged or iteration == self.max_iterations: + logging.info("\nshadow_pricing max_abs_diff\n%s" % self.max_abs_diff) + logging.info("\nshadow_pricing max_rel_diff\n%s" % self.max_rel_diff) + logging.info("\nshadow_pricing num_fail\n%s" % self.num_fail) + + return converged + + def update_shadow_prices(self): + """ + Adjust shadow_prices based on relative values of modeled_size and desired_size. + + This is the heart of the shadow pricing algorithm. + + The presumption is that shadow_price_adjusted_desired_size (along with other attractors) + is being used in a utility expression in a location choice model. The goal is to get the + aggregate location modeled size (choice aggregated by model_selector segment and zone) to + match desired_size. Since the location choice model may not achieve that goal initially, + we create a 'shadow price' that tweaks the size_term to encourage the aggregate choices to + approach the desired target desired_sizes. + + shadow_prices is a table of coefficient (for each zone and segment) that is increases or + decreases the size term according to whether the modelled population is less or greater + than the desired_size. If too few total choices are made for a particular zone and + segment, then its shadow_price is increased, if too many, then it is decreased. + + Since the location choice is being made according to a variety of utilities in the + expression file, whose relative weights are unknown to this algorithm, the choice of + how to adjust the shadow_price is not completely straightforward. CTRAMP and Daysim use + different strategies (see below) and there may not be a single method that works best for + all expression files. This would be a nice project for the mathematically inclined. + + Returns + ------- + updates self.shadow_prices + """ + + assert self.use_shadow_pricing + + shadow_price_method = self.shadow_settings['SHADOW_PRICE_METHOD'] + + # can't update_shadow_prices until after first iteration + # modeled_size should have been set by set_choices at end of previous iteration + assert self.modeled_size is not None + assert self.desired_size is not None + assert self.shadow_prices is not None + + if shadow_price_method == 'ctramp': + # - CTRAMP + """ + if ( modeledDestinationLocationsByDestZone > 0 ) + shadowPrice *= ( scaledSize / modeledDestinationLocationsByDestZone ); + // else + // shadowPrice *= scaledSize; + """ + damping_factor = self.shadow_settings['DAMPING_FACTOR'] + assert 0 < damping_factor <= 1 + + new_scale_factor = self.desired_size / self.modeled_size + damped_scale_factor = 1 + (new_scale_factor - 1) * damping_factor + new_shadow_prices = self.shadow_prices * damped_scale_factor + + # following CTRAMP (revised version - with 0 dest zone case lines commented out) + # avoid zero-divide for 0 modeled_size, by leaving shadow_prices unchanged + new_shadow_prices.where(self.modeled_size > 0, self.shadow_prices, inplace=True) + + elif shadow_price_method == 'daysim': + # - Daysim + """ + if modeled > desired: # if modeled is too high, increase shadow price + target = min( + modeled, + desired * (1 + percent_tolerance), + desired + absolute_tolerance) + + if modeled < desired # modeled is too low, decrease shadow price + target = max( + modeled, + desired * (1 - percentTolerance), + desired - absoluteTolerance) + + shadow_price = shadow_price + log(np.maximum(target, 0.01) / np.maximum(modeled, 0.01)) + """ + # FIXME should these be the same as PERCENT_TOLERANCE and FAIL_THRESHOLD above? + absolute_tolerance = self.shadow_settings['DAYSIM_ABSOLUTE_TOLERANCE'] + percent_tolerance = self.shadow_settings['DAYSIM_PERCENT_TOLERANCE'] / 100.0 + assert 0 <= percent_tolerance <= 1 + + target = np.where( + self.modeled_size > self.desired_size, + np.minimum(self.modeled_size, + np.minimum(self.desired_size * (1 + percent_tolerance), + self.desired_size + absolute_tolerance)), + np.maximum(self.modeled_size, + np.maximum(self.desired_size * (1 - percent_tolerance), + self.desired_size - absolute_tolerance))) + + # adjustment = np.log(np.maximum(target, 0.01) / np.maximum(self.modeled_size, 0.01)) + adjustment = np.log(np.maximum(target, 0.01) / np.maximum(self.modeled_size, 1)) + + new_shadow_prices = self.shadow_prices + adjustment + + else: + raise RuntimeError("unknown SHADOW_PRICE_METHOD %s" % shadow_price_method) + + # print("\nself.desired_size\n", self.desired_size.head()) + # print("\nself.modeled_size\n", self.modeled_size.head()) + # print("\nprevious shadow_prices\n", self.shadow_prices.head()) + # print("\nnew_shadow_prices\n", new_shadow_prices.head()) + + self.shadow_prices = new_shadow_prices + + def dest_size_terms(self, segment): + + assert segment in self.segment_ids + + size_term_adjustment = 1 + utility_adjustment = 0 + + if self.use_shadow_pricing: + + shadow_price_method = self.shadow_settings['SHADOW_PRICE_METHOD'] + + if shadow_price_method == 'ctramp': + size_term_adjustment = self.shadow_prices[segment] + elif shadow_price_method == 'daysim': + utility_adjustment = self.shadow_prices[segment] + else: + raise RuntimeError("unknown SHADOW_PRICE_METHOD %s" % shadow_price_method) + + return pd.DataFrame({ + 'size_term': self.desired_size[segment], + 'shadow_price_size_term_adjustment': size_term_adjustment, + 'shadow_price_utility_adjustment': utility_adjustment}, + index=self.desired_size.index) + + def write_trace_files(self, iteration): + """ + Write trace files for this iteration + Writes desired_size, modeled_size, and shadow_prices tables + + Trace file names are tagged with model_selector and iteration number + (e.g. self.desired_size => shadow_price_school_desired_size_1) + + Parameters + ---------- + iteration: int + current iteration to tag trace file + """ + logger.info("write_trace_files iteration %s" % iteration) + if iteration == 1: + # write desired_size only on first iteration, as it doesn't change + tracing.write_csv(self.desired_size, + 'shadow_price_%s_desired_size' % self.model_selector, + transpose=False) + + tracing.write_csv(self.modeled_size, + 'shadow_price_%s_modeled_size_%s' % (self.model_selector, iteration), + transpose=False) + + if self.use_shadow_pricing: + tracing.write_csv(self.shadow_prices, + 'shadow_price_%s_shadow_prices_%s' % (self.model_selector, iteration), + transpose=False) + + +def block_name(model_selector): + """ + return canonical block name for model_selector + + Ordinarily and ideally this would just be model_selector, but since mp_tasks saves all + shared data blocks in a common dict to pass to sub-tasks, we want to be able override + block naming convention to handle any collisions between model_selector names and skim names. + Until and unless that happens, we just use model_selector name. + + Parameters + ---------- + model_selector + + Returns + ------- + block_name : str + canonical block name + """ + return model_selector + + +def get_shadow_pricing_info(): + """ + return dict with info about dtype and shapes of desired and modeled size tables + + block shape is (num_zones, num_segments + 1) + + + Returns + ------- + shadow_pricing_info: dict + dtype: , + block_shapes: dict {: } + """ + + land_use = inject.get_table('land_use') + size_terms = inject.get_injectable('size_terms') + + shadow_settings = config.read_model_settings('shadow_pricing.yaml') + + # shadow_pricing_models is dict of {: } + shadow_pricing_models = shadow_settings['shadow_pricing_models'] + + blocks = OrderedDict() + for model_selector in shadow_pricing_models: + + sp_rows = len(land_use) + sp_cols = len(size_terms[size_terms.model_selector == model_selector]) + + # extra tally column for TALLY_CHECKIN and TALLY_CHECKOUT semaphores + blocks[block_name(model_selector)] = (sp_rows, sp_cols + 1) + + sp_dtype = np.int64 + + shadow_pricing_info = { + 'dtype': sp_dtype, + 'block_shapes': blocks, + } + + for k in shadow_pricing_info: + logger.debug("shadow_pricing_info %s: %s" % (k, shadow_pricing_info.get(k))) + + return shadow_pricing_info + + +def buffers_for_shadow_pricing(shadow_pricing_info): + """ + Allocate shared_data buffers for multiprocess shadow pricing + + Allocates one buffer per model_selector. + Buffer datatype and shape specified by shadow_pricing_info + + buffers are multiprocessing.Array (RawArray protected by a multiprocessing.Lock wrapper) + We don't actually use the wrapped version as it slows access down and doesn't provide + protection for numpy-wrapped arrays, but it does provide a convenient way to bundle + RawArray and an associated lock. (ShadowPriceCalculator uses the lock to coordinate access to + the numpy-wrapped RawArray.) + + Parameters + ---------- + shadow_pricing_info : dict + + Returns + ------- + data_buffers : dict { : } + dict of multiprocessing.Array keyed by model_selector + """ + + dtype = shadow_pricing_info['dtype'] + block_shapes = shadow_pricing_info['block_shapes'] + + data_buffers = {} + for block_key, block_shape in iteritems(block_shapes): + + # buffer_size must be int (or p2.7 long), not np.int64 + buffer_size = int(np.prod(block_shape)) + + csz = buffer_size * np.dtype(dtype).itemsize + logger.info("allocating shared buffer %s %s buffer_size %s bytes %s (%s)" % + (block_key, buffer_size, block_shape, csz, util.GB(csz))) + + if np.issubdtype(dtype, np.int64): + typecode = ctypes.c_int64 + else: + raise RuntimeError("buffer_for_shadow_pricing unrecognized dtype %s" % dtype) + + shared_data_buffer = multiprocessing.Array(typecode, buffer_size) + + logger.info("buffer_for_shadow_pricing added block %s" % block_key) + + data_buffers[block_key] = shared_data_buffer + + return data_buffers + + +def shadow_price_data_from_buffers(data_buffers, shadow_pricing_info, model_selector): + """ + + Parameters + ---------- + data_buffers : dict of { : } + multiprocessing.Array is simply a convenient way to bundle Array and Lock + we extract the lock and wrap the RawArray in a numpy array for convenience in indexing + The shared data buffer has shape ( + 1) + extra column is for reverse semaphores with TALLY_CHECKIN and TALLY_CHECKOUT + shadow_pricing_info : dict + dict of useful info + dtype: sp_dtype, + block_shapes : OrderedDict({: }) + dict mapping model_selector to block shape (including extra column for semaphores) + e.g. {'school': (num_zones, num_segments + 1) + model_selector : str + location type model_selector (e.g. school or workplace) + + Returns + ------- + shared_data, shared_data_lock + shared_data : multiprocessing.Array or None (if single process) + shared_data_lock : numpy array wrapping multiprocessing.RawArray or None (if single process) + """ + + assert type(data_buffers) == dict + + dtype = shadow_pricing_info['dtype'] + block_shapes = shadow_pricing_info['block_shapes'] + + if model_selector not in block_shapes: + raise RuntimeError("Model selector %s not in shadow_pricing_info" % model_selector) + + if block_name(model_selector) not in data_buffers: + raise RuntimeError("Block %s not in data_buffers" % block_name(model_selector)) + + shape = block_shapes[model_selector] + data = data_buffers[block_name(model_selector)] + + return np.frombuffer(data.get_obj(), dtype=dtype).reshape(shape), data.get_lock() + + +def load_shadow_price_calculator(model_settings): + """ + Initialize ShadowPriceCalculator for model_selector (e.g. school or workplace) + + If multiprocessing, get the shared_data buffer to coordinate global_desired_size + calculation across sub-processes + + Parameters + ---------- + model_settings : dict + + Returns + ------- + spc : ShadowPriceCalculator + """ + + num_processes = inject.get_injectable('num_processes', 1) + + model_selector = model_settings['MODEL_SELECTOR'] + + # - get shared_data from data_buffers (if multiprocessing) + data_buffers = inject.get_injectable('data_buffers', None) + if data_buffers is not None: + logger.info('Using existing data_buffers for shadow_price') + + # - shadow_pricing_info + shadow_pricing_info = inject.get_injectable('shadow_pricing_info', None) + if shadow_pricing_info is None: + shadow_pricing_info = get_shadow_pricing_info() + inject.add_injectable('shadow_pricing_info', shadow_pricing_info) + + # - extract data buffer and reshape as numpy array + data, lock = \ + shadow_price_data_from_buffers(data_buffers, shadow_pricing_info, model_selector) + else: + assert num_processes == 1 + data = None # ShadowPriceCalculator will allocate its own data + lock = None + + # - ShadowPriceCalculator + spc = ShadowPriceCalculator( + model_settings, + num_processes, data, lock) + + return spc + + +def add_size_tables(): + """ + inject tour_destination_size_terms tables for each model_selector (e.g. school, workplace) + + Size tables are pandas dataframes with locations counts for model_selector by zone and segment + tour_destination_size_terms + + if using shadow pricing, we scale size_table counts to sample population + (in which case, they have to be created while single-process) + + Scaling is problematic as it breaks household result replicability across sample sizes + It also changes the magnitude of the size terms so if they are used as utilities in + expression files, their importance will diminish relative to other utilities as the sample + size decreases. + + Scaling makes most sense for a full sample in conjunction with shadow pricing, where + shadow prices can be adjusted iteratively to bring modelled counts into line with desired + (size table) counts. + """ + + use_shadow_pricing = bool(config.setting('use_shadow_pricing')) + + shadow_settings = config.read_model_settings('shadow_pricing.yaml') + shadow_pricing_models = shadow_settings['shadow_pricing_models'] + + # probably ought not scale if not shadow_pricing (breaks partial sample replicability) + # but this allows compatability with existing CTRAMP behavior... + scale_size_table = shadow_settings.get('SCALE_SIZE_TABLE', False) + + if shadow_pricing_models is None: + logger.warning('shadow_pricing_models list not found in shadow_pricing settings') + return + + # shadow_pricing_models is dict of {: } + # since these are scaled to model size, they have to be created while single-process + + for model_selector, model_name in iteritems(shadow_pricing_models): + + model_settings = config.read_model_settings(model_name) + + assert model_selector == model_settings['MODEL_SELECTOR'] + + segment_ids = model_settings['SEGMENT_IDS'] + chooser_table_name = model_settings['CHOOSER_TABLE_NAME'] + chooser_segment_column = model_settings['CHOOSER_SEGMENT_COLUMN_NAME'] + + choosers_df = inject.get_table(chooser_table_name).to_frame() + if 'CHOOSER_FILTER_COLUMN_NAME' in model_settings: + choosers_df = \ + choosers_df[choosers_df[model_settings['CHOOSER_FILTER_COLUMN_NAME']] != 0] + + # - raw_desired_size + land_use = inject.get_table('land_use') + size_terms = inject.get_injectable('size_terms') + raw_size = tour_destination_size_terms(land_use, size_terms, model_selector) + assert set(raw_size.columns) == set(segment_ids.keys()) + + if use_shadow_pricing or scale_size_table: + + inject.add_table('raw_' + size_table_name(model_selector), raw_size) + + # - scale size_table counts to sample population + # scaled_size = zone_size * (total_segment_modeled / total_segment_desired) + + # segment scale factor (modeled / desired) keyed by segment_name + segment_scale_factors = {} + for c in raw_size: + # number of zone demographics desired destination choices + segment_desired_size = raw_size[c].astype(np.float64).sum() + + # number of synthetic population choosers in segment + segment_chooser_count = \ + (choosers_df[chooser_segment_column] == segment_ids[c]).sum() + + segment_scale_factors[c] = \ + segment_chooser_count / np.maximum(segment_desired_size, 1) + + logger.info("add_desired_size_tables %s segment %s " + "desired %s modeled %s scale_factor %s" % + (chooser_table_name, c, + segment_desired_size, + segment_chooser_count, + segment_scale_factors[c])) + + # FIXME - should we be rounding? + scaled_size = (raw_size * segment_scale_factors).round() + else: + scaled_size = raw_size + + inject.add_table(size_table_name(model_selector), scaled_size) diff --git a/activitysim/abm/tables/size_terms.py b/activitysim/abm/tables/size_terms.py index e83e74a9e..db2bed42e 100644 --- a/activitysim/abm/tables/size_terms.py +++ b/activitysim/abm/tables/size_terms.py @@ -1,19 +1,104 @@ # ActivitySim # See full license in LICENSE.txt. -import os -import logging +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from future.utils import iteritems +import logging import numpy as np import pandas as pd from activitysim.core import inject +from activitysim.core import config logger = logging.getLogger(__name__) -@inject.table() -def size_terms(configs_dir): - f = os.path.join(configs_dir, 'destination_choice_size_terms.csv') +@inject.injectable(cache=True) +def size_terms(): + f = config.config_file_path('destination_choice_size_terms.csv') return pd.read_csv(f, comment='#', index_col='segment') + + +def size_term(land_use, destination_choice_coeffs): + """ + This method takes the land use data and multiplies various columns of the + land use data by coefficients from the spec table in order + to yield a size term (a linear combination of land use variables). + + Parameters + ---------- + land_use : DataFrame + A dataframe of land use attributes - the column names should match + the index of destination_choice_coeffs + destination_choice_coeffs : Series + A series of coefficients for the land use attributes - the index + describes the link to the land use table, and the values are floating + points numbers used to do the linear combination + + Returns + ------- + values : Series + The index will be the same as land use, and the values will the + linear combination of the land use table columns specified by the + coefficients series. + """ + coeffs = destination_choice_coeffs + + # first check for missing column in the land_use table + missing = coeffs[~coeffs.index.isin(land_use.columns)] + + if len(missing) > 0: + logger.warning("%s missing columns in land use" % len(missing.index)) + for v in missing.index.values: + logger.warning("missing: %s" % v) + + return land_use[coeffs.index].dot(coeffs) + + +def tour_destination_size_terms(land_use, size_terms, model_selector): + """ + + Parameters + ---------- + land_use - pipeline table + size_terms - pipeline table + model_selector - str + + Returns + ------- + + :: + + pandas.dataframe + one column per model_selector segment with index of land_use + e.g. for model_selector 'workplace', columns will be work_low, work_med, ... + and for model_selector 'trip', columns will be eatout, escort, othdiscr, ... + + work_low work_med work_high work_veryhigh + TAZ ... + 1 1267.00000 522.000 1108.000 1540.0000 ... + 2 1991.00000 824.500 1759.000 2420.0000 ... + ... + """ + + land_use = land_use.to_frame() + + size_terms = size_terms[size_terms.model_selector == model_selector].copy() + del size_terms['model_selector'] + + df = pd.DataFrame({key: size_term(land_use, row) for key, row in size_terms.iterrows()}, + index=land_use.index) + + # df.index.name = 'TAZ' + assert land_use.index.name == 'TAZ' + df.index.name = land_use.index.name + + if not (df.dtypes == 'float64').all(): + logger.warning('Surprised to find that not all size_terms were float64!') + + return df diff --git a/activitysim/abm/tables/skims.py b/activitysim/abm/tables/skims.py index d2e4f28d6..6cb20edc6 100644 --- a/activitysim/abm/tables/skims.py +++ b/activitysim/abm/tables/skims.py @@ -1,16 +1,28 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import range +from builtins import int + +from future.utils import iteritems + +import sys import os import logging +import multiprocessing -import openmatrix as omx +from collections import OrderedDict -from activitysim.core import skim as askim -from activitysim.core import tracing -from activitysim.core import pipeline +import numpy as np +import openmatrix as omx +from activitysim.core import skim from activitysim.core import inject +from activitysim.core import util +from activitysim.core import config logger = logging.getLogger(__name__) @@ -19,40 +31,232 @@ """ -# cache this so we don't open it again and again - skim code is not closing it.... -@inject.injectable(cache=True) -def omx_file(data_dir, settings): - logger.debug("opening omx file") +def get_skim_info(omx_file_path, tags_to_load=None): - fname = os.path.join(data_dir, settings["skims_file"]) - file = omx.open_file(fname) + # this is sys.maxint for p2.7 but no limit for p3 + # windows sys.maxint = 2147483647 + MAX_BLOCK_BYTES = sys.maxint - 1 if sys.version_info < (3,) else sys.maxsize - 1 - pipeline.close_on_exit(file, fname) + # Note: we load all skims except those with key2 not in tags_to_load + # Note: we require all skims to be of same dtype so they can share buffer - is that ok? + # fixme is it ok to require skims be all the same type? if so, is this the right choice? + skim_dtype = np.float32 + omx_name = os.path.splitext(os.path.basename(omx_file_path))[0] - return file + with omx.open_file(omx_file_path) as omx_file: + # omx_shape = tuple(map(int, tuple(omx_file.shape()))) # sometimes omx shape are floats! + # fixme call to omx_file.shape() failing in windows p3.5 + omx_shape = omx_file.shape() + omx_shape = (int(omx_shape[0]), int(omx_shape[1])) # sometimes omx shape are floats! -@inject.injectable(cache=True) -def skim_dict(omx_file, cache_skim_key_values): + omx_skim_names = omx_file.listMatrices() - logger.info("skims injectable loading skims") + # - omx_keys dict maps skim key to omx_key + # DISTWALK: DISTWALK + # ('DRV_COM_WLK_BOARDS', 'AM'): DRV_COM_WLK_BOARDS__AM, ... + omx_keys = OrderedDict() + for skim_name in omx_skim_names: + key1, sep, key2 = skim_name.partition('__') - skim_dict = askim.SkimDict() - skim_dict.offset_mapper.set_offset_int(-1) + # - ignore composite tags not in tags_to_load + if tags_to_load and sep and key2 not in tags_to_load: + continue + + skim_key = (key1, key2) if sep else key1 + omx_keys[skim_key] = skim_name + + num_skims = len(omx_keys) + skim_data_shape = omx_shape + (num_skims, ) + + # - key1_subkeys dict maps key1 to dict of subkeys with that key1 + # DIST: {'DIST': 0} + # DRV_COM_WLK_BOARDS: {'MD': 1, 'AM': 0, 'PM': 2}, ... + key1_subkeys = OrderedDict() + for skim_key, omx_key in iteritems(omx_keys): + if isinstance(skim_key, tuple): + key1, key2 = skim_key + else: + key1 = key2 = skim_key + key2_dict = key1_subkeys.setdefault(key1, {}) + key2_dict[key2] = len(key2_dict) + + # - blocks dict maps block name to blocksize (number of subkey skims in block) + # skims_0: 198, + # skims_1: 198, ... + # - key1_block_offsets dict maps key1 to (block, offset) of first skim with that key1 + # DISTWALK: (0, 2), + # DRV_COM_WLK_BOARDS: (0, 3), ... + + if MAX_BLOCK_BYTES: + max_block_items = MAX_BLOCK_BYTES // np.dtype(skim_dtype).itemsize + max_skims_per_block = max_block_items // np.prod(omx_shape) + else: + max_skims_per_block = num_skims + + def block_name(block): + return "skim_%s_%s" % (omx_name, block) + + key1_block_offsets = OrderedDict() + blocks = OrderedDict() + block = offset = 0 + for key1, v in iteritems(key1_subkeys): + num_subkeys = len(v) + if offset + num_subkeys > max_skims_per_block: # next block + blocks[block_name(block)] = offset + block += 1 + offset = 0 + key1_block_offsets[key1] = (block, offset) + offset += num_subkeys + blocks[block_name(block)] = offset # last block + + # - block_offsets dict maps skim_key to (block, offset) of omx matrix + # DIST: (0, 0), + # ('DRV_COM_WLK_BOARDS', 'AM'): (0, 3), + # ('DRV_COM_WLK_BOARDS', 'MD') (0, 4), ... + block_offsets = OrderedDict() + for skim_key in omx_keys: + + if isinstance(skim_key, tuple): + key1, key2 = skim_key + else: + key1 = key2 = skim_key + + block, key1_offset = key1_block_offsets[key1] + + key2_relative_offset = key1_subkeys.get(key1).get(key2) + + block_offsets[skim_key] = (block, key1_offset + key2_relative_offset) + + logger.debug("get_skim_info from %s" % (omx_file_path, )) + logger.debug("get_skim_info skim_dtype %s omx_shape %s num_skims %s num_blocks %s" % + (skim_dtype, omx_shape, num_skims, len(blocks))) + + skim_info = { + 'omx_name': omx_name, + 'omx_shape': omx_shape, + 'num_skims': num_skims, + 'dtype': skim_dtype, + 'omx_keys': omx_keys, + 'key1_block_offsets': key1_block_offsets, + 'block_offsets': block_offsets, + 'blocks': blocks, + } + + return skim_info + + +def buffers_for_skims(skim_info, shared=False): + + skim_dtype = skim_info['dtype'] + omx_shape = skim_info['omx_shape'] + blocks = skim_info['blocks'] + + skim_buffers = {} + for block_name, block_size in iteritems(blocks): + + # buffer_size must be int (or p2.7 long), not np.int64 + buffer_size = int(np.prod(omx_shape) * block_size) + + csz = buffer_size * np.dtype(skim_dtype).itemsize + logger.info("allocating shared buffer %s for %s (%s) matrices (%s)" % + (block_name, buffer_size, omx_shape, util.GB(csz))) + + if shared: + if np.issubdtype(skim_dtype, np.float64): + typecode = 'd' + elif np.issubdtype(skim_dtype, np.float32): + typecode = 'f' + else: + raise RuntimeError("buffers_for_skims unrecognized dtype %s" % skim_dtype) - skims_in_omx = omx_file.listMatrices() - for skim_name in skims_in_omx: - key, sep, key2 = skim_name.partition('__') - skim_data = omx_file[skim_name] - if not sep: - # no separator - this is a simple 2d skim - we load them all - skim_dict.set(key, skim_data) + buffer = multiprocessing.RawArray(typecode, buffer_size) else: - # there may be more time periods in the skim than are used by the model - # cache_skim_key_values is a list of time periods (frem settings) that are used - # FIXME - assumes that the only types of key2 are skim_time_periods - if key2 in cache_skim_key_values: - skim_dict.set((key, key2), skim_data) + buffer = np.zeros(buffer_size, dtype=skim_dtype) + + skim_buffers[block_name] = buffer + + return skim_buffers + + +def skim_data_from_buffers(skim_buffers, skim_info): + + assert type(skim_buffers) == dict + + omx_shape = skim_info['omx_shape'] + skim_dtype = skim_info['dtype'] + blocks = skim_info['blocks'] + + skim_data = [] + for block_name, block_size in iteritems(blocks): + skims_shape = omx_shape + (block_size,) + block_buffer = skim_buffers[block_name] + assert len(block_buffer) == int(np.prod(skims_shape)) + block_data = np.frombuffer(block_buffer, dtype=skim_dtype).reshape(skims_shape) + skim_data.append(block_data) + + return skim_data + + +def load_skims(omx_file_path, skim_info, skim_buffers): + + skim_data = skim_data_from_buffers(skim_buffers, skim_info) + + block_offsets = skim_info['block_offsets'] + omx_keys = skim_info['omx_keys'] + + # read skims into skim_data + with omx.open_file(omx_file_path) as omx_file: + for skim_key, omx_key in iteritems(omx_keys): + + omx_data = omx_file[omx_key] + assert np.issubdtype(omx_data.dtype, np.floating) + + block, offset = block_offsets[skim_key] + block_data = skim_data[block] + + logger.debug("load_skims load omx_key %s skim_key %s to block %s offset %s" % + (omx_key, skim_key, block, offset)) + + # this will trigger omx readslice to read and copy data to skim_data's buffer + a = block_data[:, :, offset] + a[:] = omx_data[:] + + logger.info("load_skims loaded skims from %s" % (omx_file_path, )) + + +@inject.injectable(cache=True) +def skim_dict(data_dir, settings): + + omx_file_path = config.data_file_path(settings["skims_file"]) + tags_to_load = settings['skim_time_periods']['labels'] + + logger.info("loading skim_dict from %s" % (omx_file_path, )) + + # select the skims to load + skim_info = get_skim_info(omx_file_path, tags_to_load) + + logger.debug("omx_shape %s skim_dtype %s" % (skim_info['omx_shape'], skim_info['dtype'])) + + skim_buffers = inject.get_injectable('data_buffers', None) + if skim_buffers: + logger.info('Using existing skim_buffers for skims') + else: + skim_buffers = buffers_for_skims(skim_info, shared=False) + load_skims(omx_file_path, skim_info, skim_buffers) + + skim_data = skim_data_from_buffers(skim_buffers, skim_info) + + block_names = list(skim_info['blocks'].keys()) + for i in range(len(skim_data)): + block_name = block_names[i] + block_data = skim_data[i] + logger.info("block_name %s bytes %s (%s)" % + (block_name, block_data.nbytes, util.GB(block_data.nbytes))) + + # create skim dict + skim_dict = skim.SkimDict(skim_data, skim_info) + skim_dict.offset_mapper.set_offset_int(-1) return skim_dict @@ -60,5 +264,5 @@ def skim_dict(omx_file, cache_skim_key_values): @inject.injectable(cache=True) def skim_stack(skim_dict): - logger.debug("loading skim_stack") - return askim.SkimStack(skim_dict) + logger.debug("loading skim_stack injectable") + return skim.SkimStack(skim_dict) diff --git a/activitysim/abm/tables/table_dict.py b/activitysim/abm/tables/table_dict.py new file mode 100644 index 000000000..f8fc089f6 --- /dev/null +++ b/activitysim/abm/tables/table_dict.py @@ -0,0 +1,51 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +import logging +from collections import OrderedDict + +from activitysim.core import inject + + +logger = logging.getLogger(__name__) + +""" +When the pipeline is restarted and tables are loaded, we need to know which ones +should be registered as random number generator channels. +""" + +RANDOM_CHANNELS = ['households', 'persons', 'tours', 'joint_tour_participants', 'trips'] +TRACEABLE_TABLES = ['households', 'persons', 'tours', 'joint_tour_participants', 'trips'] + + +@inject.injectable() +def rng_channels(): + + # bug + return RANDOM_CHANNELS + + +@inject.injectable() +def traceable_tables(): + + # names of all traceable tables ordered by dependency on household_id + # e.g. 'persons' has to be registered AFTER 'households' + + return TRACEABLE_TABLES + + +@inject.injectable() +def traceable_table_indexes(): + # traceable_table_indexes is OrderedDict {: } + # so we can find first registered table to slice by ref_col + return OrderedDict() + + +@inject.injectable() +def traceable_table_ids(): + # traceable_table_ids is dict {: [, ]} + return dict() diff --git a/activitysim/abm/tables/time_windows.py b/activitysim/abm/tables/time_windows.py index cbdb57df3..2d1a03e97 100644 --- a/activitysim/abm/tables/time_windows.py +++ b/activitysim/abm/tables/time_windows.py @@ -1,26 +1,33 @@ # ActivitySim # See full license in LICENSE.txt. -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging +import numpy as np import pandas as pd - from activitysim.core import inject +from activitysim.core import config from activitysim.core import timetable as tt logger = logging.getLogger(__name__) @inject.injectable(cache=True) -def tdd_alts(configs_dir): +def tdd_alts(): # right now this file just contains the start and end hour - f = os.path.join(configs_dir, 'tour_departure_and_duration_alternatives.csv') + f = config.config_file_path('tour_departure_and_duration_alternatives.csv') df = pd.read_csv(f) df['duration'] = df.end - df.start + # - NARROW + df = df.astype(np.int8) + return df diff --git a/activitysim/abm/tables/tours.py b/activitysim/abm/tables/tours.py index 4afe693b5..a7e50106f 100644 --- a/activitysim/abm/tables/tours.py +++ b/activitysim/abm/tables/tours.py @@ -1,12 +1,12 @@ # ActivitySim # See full license in LICENSE.txt. -import logging +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 -import numpy as np -import pandas as pd +import logging -from activitysim.core.util import reindex from activitysim.core import inject logger = logging.getLogger(__name__) diff --git a/activitysim/abm/tables/trips.py b/activitysim/abm/tables/trips.py index 4061d4b4a..5a52e47d7 100644 --- a/activitysim/abm/tables/trips.py +++ b/activitysim/abm/tables/trips.py @@ -1,9 +1,11 @@ # ActivitySim # See full license in LICENSE.txt. -import logging +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 -import pandas as pd +import logging from activitysim.core import inject diff --git a/activitysim/abm/test/configs/annotate_households.csv b/activitysim/abm/test/configs/annotate_households.csv index 6d64cb5e8..70109602c 100644 --- a/activitysim/abm/test/configs/annotate_households.csv +++ b/activitysim/abm/test/configs/annotate_households.csv @@ -1,30 +1,34 @@ -Description,Target,Expression -#,, annotate households table after import -,_PERSON_COUNT,"lambda query, persons, households: persons.query(query).groupby('household_id').size().reindex(households.index).fillna(0)" +Description,Target,Expression, +#,, annotate households table after import, +,_PERSON_COUNT,"lambda query, persons, households: persons.query(query).groupby('household_id').size().reindex(households.index).fillna(0).astype(np.int8)", #,,FIXME households.income can be negative, so we clip? -income_in_thousands,income_in_thousands,(households.income / 1000).clip(lower=0) -income_segment,income_segment,"pd.cut(income_in_thousands, bins=[-np.inf, 30, 60, 100, np.inf], labels=[1, 2, 3, 4]).astype(int)" -#,, -#num_workers was renamed in import,, -#,num_workers,households.workers -number of non_workers,num_non_workers,households.hhsize - households.num_workers -#,, -#,,we assume that everyone 16 and older is a potential driver -number of drivers,num_drivers,"_PERSON_COUNT('16 <= age', persons, households)" -num_adults,num_adults,"_PERSON_COUNT('adult', persons, households)" -num_children,num_children,"_PERSON_COUNT('~adult', persons, households)" -#,,FIXME num_young_children is under 5 here but used in mandatory_tour_frequency where CTRAMP uec wants num_preschool which java code has as under 6 -num_young_children,num_young_children,"_PERSON_COUNT('age <= 4', persons, households)" -num_children_5_to_15,num_children_5_to_15,"_PERSON_COUNT('5 <= age <= 15', persons, households)" -num_children_16_to_17,num_children_16_to_17,"_PERSON_COUNT('16 <= age <= 17', persons, households)" -num_college_age,num_college_age,"_PERSON_COUNT('18 <= age <= 24', persons, households)" -num_young_adults,num_young_adults,"_PERSON_COUNT('25 <= age <= 34', persons, households)" -non_family,non_family,households.HHT.isin(constants.HHT_NONFAMILY) -family,family,households.HHT.isin(constants.HHT_FAMILY) -home_is_urban,home_is_urban,"reindex(land_use.area_type, households.TAZ) < setting('urban_threshold')" -home_is_rural,home_is_rural,"reindex(land_use.area_type, households.TAZ) > setting('rural_threshold')" -#,, FIXME - fix this variable from auto ownership model -work_tour_auto_time_savings,work_tour_auto_time_savings,0 -#,, default for work and school location logsums before auto_ownership model is run -,auto_ownership,households.VEHICL -#home_taz,home_taz,households.TAZ +income_in_thousands,income_in_thousands,(households.income / 1000).clip(lower=0), +income_segment,income_segment,"pd.cut(income_in_thousands, bins=[-np.inf, 30, 60, 100, np.inf], labels=[1, 2, 3, 4]).astype(int)", +#,,, +,_MIN_VOT,setting('min_value_of_time'), +,_MAX_VOT,setting('max_value_of_time'), +,_MU,setting('distributed_vot_mu'), +,_SIGMA,setting('distributed_vot_sigma'), +median_value_of_time,median_value_of_time,"income_segment.map({k: v for k, v in setting('household_median_value_of_time').items()})", +hh_value_of_time,hh_value_of_time,"rng.lognormal_for_df(df, mu=np.log(median_value_of_time * _MU), sigma=_SIGMA).clip(_MIN_VOT, _MAX_VOT)", +#,,, +#num_workers was renamed in import,,, +#,num_workers,households.workers, +number of non_workers,num_non_workers,households.hhsize - households.num_workers, +#,,, +#,,we assume that everyone 16 and older is a potential driver, +number of drivers,num_drivers,"_PERSON_COUNT('16 <= age', persons, households)", +num_adults,num_adults,"_PERSON_COUNT('adult', persons, households)", +num_children,num_children,"_PERSON_COUNT('~adult', persons, households)", +num_young_children,num_young_children,"_PERSON_COUNT('age <= 5', persons, households)", +num_children_5_to_15,num_children_5_to_15,"_PERSON_COUNT('5 <= age <= 15', persons, households)", +num_children_16_to_17,num_children_16_to_17,"_PERSON_COUNT('16 <= age <= 17', persons, households)", +num_college_age,num_college_age,"_PERSON_COUNT('18 <= age <= 24', persons, households)", +num_young_adults,num_young_adults,"_PERSON_COUNT('25 <= age <= 34', persons, households)", +non_family,non_family,households.HHT.isin(constants.HHT_NONFAMILY), +family,family,households.HHT.isin(constants.HHT_FAMILY), +home_is_urban,home_is_urban,"reindex(land_use.area_type, households.TAZ) < setting('urban_threshold')", +home_is_rural,home_is_rural,"reindex(land_use.area_type, households.TAZ) > setting('rural_threshold')", +#,, default for work and school location logsums before auto_ownership model is run, +,auto_ownership,households.VEHICL, +#home_taz,home_taz,households.TAZ, diff --git a/activitysim/abm/test/configs/annotate_households_cdap.csv b/activitysim/abm/test/configs/annotate_households_cdap.csv index 240357fa1..c3233f861 100644 --- a/activitysim/abm/test/configs/annotate_households_cdap.csv +++ b/activitysim/abm/test/configs/annotate_households_cdap.csv @@ -1,6 +1,6 @@ Description,Target,Expression #,, annotate households table after cdap model has run -num_under16_not_at_school,num_under16_not_at_school,"persons.under16_not_at_school.groupby(persons.household_id).sum().reindex(households.index).fillna(0)" +num_under16_not_at_school,num_under16_not_at_school,"persons.under16_not_at_school.astype(int).groupby(persons.household_id).sum().reindex(households.index).fillna(0)" num_travel_active,num_travel_active,"persons.travel_active.groupby(persons.household_id).sum().reindex(households.index).fillna(0)" num_travel_active_adults,num_travel_active_adults,"(persons.adult & persons.travel_active).groupby(persons.household_id).sum().reindex(households.index).fillna(0)" num_travel_active_children,num_travel_active_children,"num_travel_active - num_travel_active_adults" diff --git a/activitysim/abm/test/configs/annotate_households_workplace.csv b/activitysim/abm/test/configs/annotate_households_workplace.csv new file mode 100644 index 000000000..1b53e91da --- /dev/null +++ b/activitysim/abm/test/configs/annotate_households_workplace.csv @@ -0,0 +1,5 @@ +Description,Target,Expression +#,, annotate households table after workplace_location model has run +#,, hh_work_auto_savings_ratio is sum of persons work_auto_savings_ratio +,hh_work_auto_savings_ratio,persons.work_auto_savings_ratio.groupby(persons.household_id).sum().reindex(households.index).fillna(0.0) +#,,handle persons with no locatcion diff --git a/activitysim/abm/test/configs/annotate_landuse.csv b/activitysim/abm/test/configs/annotate_landuse.csv index 8d374711a..229833a50 100644 --- a/activitysim/abm/test/configs/annotate_landuse.csv +++ b/activitysim/abm/test/configs/annotate_landuse.csv @@ -1,6 +1,5 @@ Description,Target,Expression #,, annotate landuse table after import -household_density,household_density,land_use.TOTHH / land_use.TOTACRE -employment_density,employment_density,land_use.TOTEMP / land_use.TOTACRE +household_density,household_density,land_use.TOTHH / (land_use.RESACRE + land_use.CIACRE) +employment_density,employment_density,land_use.TOTEMP / (land_use.RESACRE + land_use.CIACRE) density_index,density_index,(household_density *employment_density) / (household_density + employment_density).clip(lower=1) -county_name,county_name,"land_use.county_id.map({v: k for k, v in setting('county_map').items()})" diff --git a/activitysim/abm/test/configs/annotate_persons.csv b/activitysim/abm/test/configs/annotate_persons.csv index 22677ece1..3690abc8a 100644 --- a/activitysim/abm/test/configs/annotate_persons.csv +++ b/activitysim/abm/test/configs/annotate_persons.csv @@ -15,9 +15,24 @@ presence of part_time worker other than self in household,has_part_time,"other_t presence of university student other than self in household,has_university,"other_than(persons.household_id, persons.ptype == constants.PTYPE_UNIVERSITY)" student_is_employed,student_is_employed,"(persons.ptype.isin([constants.PTYPE_UNIVERSITY, constants.PTYPE_DRIVING]) & persons.pemploy.isin([constants.PEMPLOY_FULL, constants.PEMPLOY_PART]))" nonstudent_to_school,nonstudent_to_school,"(persons.ptype.isin([constants.PTYPE_FULL, constants.PTYPE_PART, constants.PTYPE_NONWORK, constants.PTYPE_RETIRED]) & persons.pstudent.isin([constants.PSTUDENT_GRADE_OR_HIGH, constants.PSTUDENT_UNIVERSITY]))" +#,, +#,, FIXME - if person is a university student but has school age student category value then reset student category value +,pstudent,"persons.pstudent.where(persons.ptype!=constants.PTYPE_UNIVERSITY, constants.PSTUDENT_UNIVERSITY)" +#,, FIXME if person is a student of any kind but has full-time employment status then reset student category value to non-student +,pstudent,"pstudent.where(persons.ptype!=constants.PTYPE_FULL, constants.PSTUDENT_NOT)" +#,, FIXME if student category is non-student and employment is student then reset student category value to student +,pstudent,"pstudent.where((persons.ptype!=constants.PTYPE_DRIVING) & (persons.ptype!=constants.PTYPE_SCHOOL), constants.PSTUDENT_GRADE_OR_HIGH)" +#,, +is_student,is_student,"pstudent.isin([constants.PSTUDENT_GRADE_OR_HIGH, constants.PSTUDENT_UNIVERSITY])" +preschool age can go to preschool,is_student,"is_student.where(persons.age > constants.GRADE_SCHOOL_MIN_AGE, True)" +preschool age can go to preschool,pstudent,"pstudent.where(persons.age > constants.GRADE_SCHOOL_MIN_AGE, constants.PSTUDENT_GRADE_OR_HIGH)" +is_gradeschool,is_gradeschool,(pstudent == constants.PSTUDENT_GRADE_OR_HIGH) & (persons.age <= constants.GRADE_SCHOOL_MAX_AGE) +is_highschool,is_highschool,(pstudent == constants.PSTUDENT_GRADE_OR_HIGH) & (persons.age > constants.GRADE_SCHOOL_MAX_AGE) +is_university,is_university,pstudent == constants.PSTUDENT_UNIVERSITY +school_segment gradeschool,school_segment,"np.where(is_gradeschool, constants.SCHOOL_SEGMENT_GRADE, constants.SCHOOL_SEGMENT_NONE)" +school_segment highschool,school_segment,"np.where(is_highschool, constants.SCHOOL_SEGMENT_HIGH, school_segment)" +school_segment university,school_segment,"np.where(is_university, constants.SCHOOL_SEGMENT_UNIV, school_segment).astype(np.int8)" +#,, is_worker,is_worker,"persons.pemploy.isin([constants.PEMPLOY_FULL, constants.PEMPLOY_PART])" -is_student,is_student,"persons.pstudent.isin([constants.PSTUDENT_GRADE_OR_HIGH, constants.PSTUDENT_UNIVERSITY])" -is_gradeschool,is_gradeschool,"(persons.pstudent == constants.PSTUDENT_GRADE_OR_HIGH) & (persons.age <= setting('grade_school_max_age'))" -is_highschool,is_highschool,"(persons.pstudent == constants.PSTUDENT_GRADE_OR_HIGH) & (persons.age > setting('grade_school_max_age'))" -is_university,is_university,"persons.pstudent == constants.PSTUDENT_UNIVERSITY" +#,, home_taz,home_taz,"reindex(households.TAZ, persons.household_id)" diff --git a/activitysim/abm/test/configs/annotate_persons_after_hh.csv b/activitysim/abm/test/configs/annotate_persons_after_hh.csv new file mode 100644 index 000000000..59374d5bf --- /dev/null +++ b/activitysim/abm/test/configs/annotate_persons_after_hh.csv @@ -0,0 +1,5 @@ +Description,Target,Expression +#,, annotate persons table after annotate_households +#,, adults get full hh_value_of_time and children get 60% +,_hh_vot,"reindex(households.hh_value_of_time, persons.household_id)" +,value_of_time,"_hh_vot.where(persons.age>=18, _hh_vot * 0.667)" diff --git a/activitysim/abm/test/configs/annotate_persons_school.csv b/activitysim/abm/test/configs/annotate_persons_school.csv index 2ebd57a9d..3b33e893f 100644 --- a/activitysim/abm/test/configs/annotate_persons_school.csv +++ b/activitysim/abm/test/configs/annotate_persons_school.csv @@ -1,10 +1,9 @@ Description,Target,Expression #,, annotate persons table after school_location model has run local scalar distance skim,_DISTANCE_SKIM,"skim_dict.get('DIST')" -distance_to_school,distance_to_school,"pd.Series(_DISTANCE_SKIM.get(persons.home_taz, persons.school_taz), index=persons.index)" +,distance_to_school,"np.where(persons.school_taz>=0,_DISTANCE_SKIM.get(persons.home_taz, persons.school_taz),np.nan)" #,, this uses the free flow travel time in both directions. MTC TM1 was MD and MD local scalar distance skim,_SOVMD_SKIM,"skim_dict.get(('SOV_TIME', 'MD'))" temp auto_time_to_school,_auto_time_to_school,"_SOVMD_SKIM.get(persons.home_taz, persons.school_taz)" temp auto_time_return,_auto_time_return,"_SOVMD_SKIM.get(persons.school_taz, persons.home_taz)" -free flow roundtrip_auto_time_to_school,roundtrip_auto_time_to_school,"_auto_time_to_school + _auto_time_return" -#free flow roundtrip_auto_time_to_school,roundtrip_auto_time_to_school,"pd.Series(_auto_time_to_school + _auto_time_return, index=persons.index)" +free flow roundtrip_auto_time_to_school,roundtrip_auto_time_to_school,"np.where(persons.school_taz>=0,_auto_time_to_school + _auto_time_return,0)" diff --git a/activitysim/abm/test/configs/annotate_persons_workplace.csv b/activitysim/abm/test/configs/annotate_persons_workplace.csv index 85a0f2703..e2b85eccb 100644 --- a/activitysim/abm/test/configs/annotate_persons_workplace.csv +++ b/activitysim/abm/test/configs/annotate_persons_workplace.csv @@ -1,13 +1,41 @@ Description,Target,Expression #,, annotate persons table after workplace_location model has run -local scalar distance skim,_DISTANCE_SKIM,"skim_dict.get('DIST')" -#distance_to_work,distance_to_work,"pd.Series(_DISTANCE_SKIM.get(persons.home_taz, persons.workplace_taz), index=persons.index)" -raw distance to work from home,distance_to_work,"_DISTANCE_SKIM.get(persons.home_taz, persons.workplace_taz)" -#,, this uses the free flow travel time in both directions. MTC TM1 was MD and MD -local scalar distance skim,_SOVMD_SKIM,"skim_dict.get(('SOV_TIME', 'MD'))" -temp auto_time_to_work,_auto_time_to_work,"_SOVMD_SKIM.get(persons.home_taz, persons.workplace_taz)" -temp auto_time_return,_auto_time_return,"_SOVMD_SKIM.get(persons.workplace_taz, persons.home_taz)" -free flow roundtrip_auto_time_to_work,roundtrip_auto_time_to_work,"_auto_time_to_work + _auto_time_return" -#free flow roundtrip_auto_time_to_work,roundtrip_auto_time_to_work,"pd.Series(_auto_time_to_work + _auto_time_return, index=persons.index)" +local scalar distance skim,_DISTANCE_SKIM,skim_dict.get('DIST') +,distance_to_work,"np.where(persons.workplace_taz>=0,_DISTANCE_SKIM.get(persons.home_taz, persons.workplace_taz),np.nan)" workplace_in_cbd,workplace_in_cbd,"reindex(land_use.area_type, persons.workplace_taz) < setting('cbd_threshold')" work_taz_area_type,work_taz_area_type,"reindex(land_use.area_type, persons.workplace_taz)" +#,, auto time to work - free flow travel time in both directions. MTC TM1 was MD and MD +local scalar distance skim,_SOVMD_SKIM,"skim_dict.get(('SOV_TIME', 'MD'))" +#,,roundtrip_auto_time_to_work +,_auto_time_home_to_work,"_SOVMD_SKIM.get(persons.home_taz, persons.workplace_taz)" +,_auto_time_work_to_home,"_SOVMD_SKIM.get(persons.workplace_taz, persons.home_taz)" +,roundtrip_auto_time_to_work,"np.where(persons.workplace_taz>=0,_auto_time_home_to_work + _auto_time_work_to_home,0)" +#,,_roundtrip_walk_time_to_work +,_MAX_TIME_TO_WORK,999 +,_WALK_SPEED_MPH,3 +,_DISTWALK_SKIM,skim_dict.get(('DISTWALK')) +,_walk_time_home_to_work,"60 * _DISTWALK_SKIM.get(persons.home_taz, persons.workplace_taz)/_WALK_SPEED_MPH" +,_walk_time_work_to_home,"60 * _DISTWALK_SKIM.get(persons.workplace_taz, persons.home_taz)/_WALK_SPEED_MPH" +,_work_walk_available,(_walk_time_home_to_work > 0) & (_walk_time_work_to_home > 0) +,_roundtrip_walk_time_to_work,"np.where(_work_walk_available, _walk_time_home_to_work + _walk_time_work_to_home, _MAX_TIME_TO_WORK)" +#,,_roundtrip_transit_time_to_work +,_IVT_SKIM,"skim_dict.get(('WLK_TRN_WLK_IVT', 'MD'))" +,_transit_ivt_home_to_work,"_IVT_SKIM.get(persons.home_taz, persons.workplace_taz)/100" +,_transit_ivt_work_to_home,"_IVT_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_work_transit_available,(_transit_ivt_home_to_work > 0) & (_transit_ivt_work_to_home > 0) +,_IWAIT_SKIM,"skim_dict.get(('WLK_TRN_WLK_IWAIT', 'MD'))" +,_transit_iwait,"_IWAIT_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _IWAIT_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_XWAIT_SKIM,"skim_dict.get(('WLK_TRN_WLK_XWAIT', 'MD'))" +,_transit_xwait,"_XWAIT_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _XWAIT_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_WAUX_SKIM,"skim_dict.get(('WLK_TRN_WLK_WAUX', 'MD'))" +,_transit_waux,"_WAUX_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _WAUX_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_WACC_SKIM,"skim_dict.get(('WLK_TRN_WLK_WACC', 'MD'))" +,_transit_wacc,"_WACC_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _WACC_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_WEGR_SKIM,"skim_dict.get(('WLK_TRN_WLK_WEGR', 'MD'))" +,_transit_wegr,"_WEGR_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _WEGR_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_roundtrip_transit_time_to_work,_transit_ivt_home_to_work + _transit_ivt_work_to_home + _transit_iwait + _transit_xwait + _transit_waux + _transit_wacc + _transit_wegr +#,,work_auto_savings_ratio +,_min_work_walk_transit,"np.where(_work_transit_available, np.minimum(_roundtrip_transit_time_to_work, _roundtrip_walk_time_to_work), _roundtrip_walk_time_to_work)" +,work_auto_savings,"np.where(persons.is_worker, _min_work_walk_transit - roundtrip_auto_time_to_work, 0)" +#,,auto savings over walk or transit capped at 120 and normalized to unity +,work_auto_savings_ratio,"(work_auto_savings / 120.0).clip(-1.0, 1.0)" diff --git a/activitysim/abm/test/configs/auto_ownership.csv b/activitysim/abm/test/configs/auto_ownership.csv index 322071e5e..888e4686f 100644 --- a/activitysim/abm/test/configs/auto_ownership.csv +++ b/activitysim/abm/test/configs/auto_ownership.csv @@ -16,15 +16,15 @@ Presence of children age 5-17,(num_children_5_to_15+num_children_16_to_17)>0,,0. "Density index up to 10, if 1+ workers","@(df.num_workers>0)*df.density_index.clip(0, 10)",,0,-0.2028,-0.3654,-0.3654 "Density index in excess of 10, if 1+ workers",@(df.num_workers>0)*(df.density_index-10).clip(0),,-0.0152,-0.1106,-0.1766,-0.1766 Constants,@1,,1.1865,-1.0846,-3.2502,-5.313 -San Francisco county,county_name == 'San Francisco',,0.4259,0.4683,0.1458,0.1458 -Solano county,county_name == 'Solano',,-0.566,-0.4429,-0.2372,-0.2372 -Napa county,county_name == 'Napa',,-0.566,-0.4429,-0.2372,-0.2372 -Sonoma county,county_name == 'Sonoma',,-0.566,-0.4429,-0.2372,-0.2372 -Marin county,county_name == 'Marin',,-0.2434,0,0,0 +San Francisco county,@df.county_id == ID_SAN_FRANCISCO,,0.4259,0.4683,0.1458,0.1458 +Solano county,@df.county_id == ID_SOLANO,,-0.566,-0.4429,-0.2372,-0.2372 +Napa county,@df.county_id == ID_NAPA,,-0.566,-0.4429,-0.2372,-0.2372 +Sonoma county,@df.county_id == ID_SONOMA,,-0.566,-0.4429,-0.2372,-0.2372 +Marin county,@df.county_id == ID_MARIN,,-0.2434,0,0,0 "Retail accessibility (0.66*PK + 0.34*OP) by auto, if 0 workers",(num_workers==0)*(0.66*auPkRetail+0.34*auOpRetail),,0.0626,0.0626,0.0626,0.0626 "Retail accessibility (0.66*PK + 0.34*OP) by auto, if 1+ workers",(num_workers>0)*(0.66*auPkRetail+0.34*auOpRetail),,0.1646,0.1646,0.1646,0.1646 "Retail accessibility (0.66*PK + 0.34*OP) by transit, if 0 workers",(num_workers==0)*(0.66*trPkRetail+0.34*trOpRetail),,-0.3053,-0.3053,-0.3053,-0.3053 "Retail accessibility (0.66*PK + 0.34*OP) by transit, if 1+ workers",(num_workers>0)*(0.66*trPkRetail+0.34*trOpRetail),,-0.5117,-0.5117,-0.5117,-0.5117 "Retail accessibility by non-motorized, if 0 workers",(num_workers==0)*nmRetail,,-0.03,-0.03,-0.03,-0.03 "Retail accessibility by non-motorized, if 1+ workers",(num_workers>0)*nmRetail,,-0.03,-0.03,-0.03,-0.03 -"Auto time savings per worker (over walk or transit, max 120) to work",work_tour_auto_time_savings / (num_workers+1),,0.4707,0.6142,0.5705,0.7693 +Auto time savings per worker to work","@np.where(df.num_workers > 0, df.hh_work_auto_savings_ratio / df.num_workers, 0)",,0.4707,0.6142,0.5705,0.7693 diff --git a/activitysim/abm/test/configs/auto_ownership.yaml b/activitysim/abm/test/configs/auto_ownership.yaml index 5ac0295ca..5f0a52674 100644 --- a/activitysim/abm/test/configs/auto_ownership.yaml +++ b/activitysim/abm/test/configs/auto_ownership.yaml @@ -1,2 +1,13 @@ #LOGIT_TYPE: NL LOGIT_TYPE: MNL + +CONSTANTS: + ID_SAN_FRANCISCO: 1 + ID_SAN_MATEO: 2 + ID_SANTA_CLARA: 3 + ID_ALAMEDA: 4 + ID_CONTRA_COSTA: 5 + ID_SOLANO: 6 + ID_NAPA: 7 + ID_SONOMA: 8 + ID_MARIN: 9 diff --git a/activitysim/abm/test/configs/cdap_fixed_relative_proportions.csv b/activitysim/abm/test/configs/cdap_fixed_relative_proportions.csv index 2bdaca8bb..788f398b6 100644 --- a/activitysim/abm/test/configs/cdap_fixed_relative_proportions.csv +++ b/activitysim/abm/test/configs/cdap_fixed_relative_proportions.csv @@ -1,10 +1,9 @@ Description,Expression,M,N,H Full-time worker,ptype == 1,0.79647,0.09368,0.10985 Part-time worker,ptype == 2,0.61678,0.25757,0.12565 -University student,ptype == 3,0.69229,0.15641,0.15130 -Non-working adult,ptype == 4,0.00000,0.67169,0.32831 -Retired,ptype == 5,0.00000,0.54295,0.45705 +University student,ptype == 3,0.69229,0.15641,0.1513 +Non-working adult,ptype == 4,0,0.67169,0.32831 +Retired,ptype == 5,0,0.54295,0.45705 Driving-age child who is in school,ptype == 6,0.77609,0.06004,0.16387 Pre-driving-age child who is in school,ptype == 7,0.68514,0.09144,0.22342 -Pre-driving-age child who is too young for school,(ptype == 8) & (school_taz>=0),0.14056,0.06512,0.79432 -Pre-driving-age child who is too young for school,(ptype == 8) & (school_taz<0),0.00000,0.06512,0.79432 +Child who is too young for school,ptype == 8,0.14056,0.06512,0.79432 diff --git a/activitysim/abm/test/configs/cdap_indiv_and_hhsize1.csv b/activitysim/abm/test/configs/cdap_indiv_and_hhsize1.csv index 62fc273a5..9e17fdcde 100644 --- a/activitysim/abm/test/configs/cdap_indiv_and_hhsize1.csv +++ b/activitysim/abm/test/configs/cdap_indiv_and_hhsize1.csv @@ -9,11 +9,10 @@ Pre-driving-age child who is in school alternative-specific constants,ptype == 7 Pre-driving-age child who is in school interaction with age 6 to 9,(ptype == 7) & (age >= 6) & (age <= 9),-0.2943,, Pre-driving-age child who is in school interaction with age 13 to 15,(ptype == 7) & (age >= 13) & (age <= 15),-0.7141,-0.672, Pre-driving-age child who is too young for school alternative-specific constants,ptype == 8,1.052531189,-0.837567776, +# corrected tm1 age bug,,,, Pre-driving-age child who is too young for school interaction with age 0 to 1,(ptype == 8) & (age >= 0) & (age <= 1),-0.4515,, Pre-driving-age child who is too young for school interaction with age 4 to 5,(ptype == 8) & (age >= 4) & (age <= 5),0.6107,, -# FIXME,,,, -Pre-driving-age child who is too young for school ,(ptype == 8) & (school_taz<0),-999,, -# +#,,,, Full-time worker interaction with age less than 40,(ptype == 1) & (age < 40),0.2091,, Retired interaction with age more than 80,(ptype == 5) & (age > 80),,,0.7666 Full-time worker interaction with female gender,(ptype == 1) & (sex == 2),-0.1259,, @@ -32,14 +31,14 @@ Full-time worker interaction with income less than $20k,(ptype == 1) & (income_i Retired interaction with income less than $20k,(ptype == 5) & (income_in_thousands < 20),,,0.533 Part-time worker interaction with income less than $20k,(ptype == 2) & (income_in_thousands < 20),,,0.3232 Part-time worker interaction with income between $50k and $100k,(ptype == 2) & (income_in_thousands >= 50) & (income_in_thousands <= 100),,,-0.4032 -Part-time worker interaction with income more than $100k,(ptype == 2) & (income_in_thousands < 100),,0.4207,-0.3534 +Part-time worker interaction with income more than $100k,(ptype == 2) & (income_in_thousands >= 100),,0.4207,-0.3534 Non-working adult interaction with income between $50k and $100k,(ptype == 4) & (income_in_thousands >= 50) & (income_in_thousands <= 100),,,-0.5602 -Non-working adult interaction with income more than $100k,(ptype == 4) & (income_in_thousands < 100),,,-0.7188 +Non-working adult interaction with income more than $100k,(ptype == 4) & (income_in_thousands >= 100),,,-0.7188 Driving-age child who is in school interaction with less than $20k,(ptype == 6) & (income_in_thousands < 20),,,1.307 Driving-age child who is in school interaction income between $50k and $100k,(ptype == 6) & (income_in_thousands >= 50) & (income_in_thousands <= 100),,,-0.5031 -Driving-age child who is in school interaction with income more than $100k,(ptype == 6) & (income_in_thousands < 100),,,-2.046 +Driving-age child who is in school interaction with income more than $100k,(ptype == 6) & (income_in_thousands >= 100),,,-2.046 Pre-driving-age child who is too young for school interaction with income between $50k and $100k,(ptype == 8) & (income_in_thousands >= 50) & (income_in_thousands <= 100),,,-0.5708 -Pre-driving-age child who is too young for school interaction with income more than $100k,(ptype == 8) & (income_in_thousands < 100),,,-0.6186 +Pre-driving-age child who is too young for school interaction with income more than $100k,(ptype == 8) & (income_in_thousands >= 100),,,-0.6186 Full-time worker intraction with peak accessibility to all employment,(ptype == 1) * auPkTotal,0.1212,, Part-time worker interaction with peak accessibility to all employment,(ptype == 2) * auPkTotal,0.2004,, Non-working adult interaction with peak accessibility to all employment,(ptype == 4) * auPkTotal,0.2314,, @@ -50,9 +49,12 @@ University student interaction with off-peak accessibility to retail,(ptype == 3 Driving-age child who is in school interaction with off-peak accessibility to retail,(ptype == 6) * auOpRetail,,0.08233, Pre-driving-age child who is in school interaction with off-peak accessibility to retail,(ptype == 7) * auOpRetail,,0.08233, Pre-driving-age child who is too young for school interaction with off-peak accessibility to retail,(ptype == 8) * auOpRetail,,0.08233, +# commented out because not used in mtctm1,,,, # Full-time worker interaction with usual work location is home,(ptype == 1) * usualWorkLocationIsHome,-1.758,,0.1813 # Part-time worker interaction with usual work location is home,(ptype == 2) * usualWorkLocationIsHome,-1.758,,0.1813 # Full-time worker interaction with no usual work location,(ptype == 1) * noUsualWorkLocation,-0.5935,, # Part-time worker interaction with no usual work location,(ptype == 2) * noUsualWorkLocation,-0.5935,, # Driving-age child who is in school interaction with no usual school location,(ptype == 6) * noUsualWorkLocation,-0.866,, # Pre-driving age child who is in school interaction with no usual school location,(ptype == 7) * noUsualWorkLocation,-0.866,, +#tm1 scenario test,,,, +#Simulate telecommuting by reducing mandatory patterns,(ptype == 1) * (income_in_thousands >= 50),-0.142930042,, diff --git a/activitysim/abm/test/configs/destination_choice_size_terms.csv b/activitysim/abm/test/configs/destination_choice_size_terms.csv index d38f1acd3..0d04253fd 100644 --- a/activitysim/abm/test/configs/destination_choice_size_terms.csv +++ b/activitysim/abm/test/configs/destination_choice_size_terms.csv @@ -1,8 +1,8 @@ -selector,segment,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE -work,work_low,0,0.129,0.193,0.383,0.12,0.01,0.164,0,0,0,0 -work,work_med,0,0.12,0.197,0.325,0.139,0.008,0.21,0,0,0,0 -work,work_high,0,0.11,0.207,0.284,0.154,0.006,0.239,0,0,0,0 -work,work_veryhigh,0,0.093,0.27,0.241,0.146,0.004,0.246,0,0,0,0 +model_selector,segment,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE +workplace,work_low,0,0.129,0.193,0.383,0.12,0.01,0.164,0,0,0,0 +workplace,work_med,0,0.12,0.197,0.325,0.139,0.008,0.21,0,0,0,0 +workplace,work_high,0,0.11,0.207,0.284,0.154,0.006,0.239,0,0,0,0 +workplace,work_veryhigh,0,0.093,0.27,0.241,0.146,0.004,0.246,0,0,0,0 school,university,0,0,0,0,0,0,0,0,0,0.592,0.408 school,gradeschool,0,0,0,0,0,0,0,1,0,0,0 school,highschool,0,0,0,0,0,0,0,0,1,0,0 diff --git a/activitysim/abm/test/configs/free_parking.csv b/activitysim/abm/test/configs/free_parking.csv new file mode 100644 index 000000000..a7edb484a --- /dev/null +++ b/activitysim/abm/test/configs/free_parking.csv @@ -0,0 +1,9 @@ +Description,Expression,free,pay +,@df.workplace_county_id == ID_SAN_FRANCISCO,-2.6403, +,@df.workplace_county_id == ID_SANTA_CLARA,0.2118, +,@df.workplace_county_id == ID_ALAMEDA,-0.1092, +Very high income household dummy,@df.income>=100000,0.2300, +High income housheold dummy,@(df.income>=60000) & (df.income<100000),0.2300, +Household size is greater than 3 dummy,@df.hhsize>3,0.2530, +More automobiles than workers dummy,@df.auto_ownership>df.num_workers,0.2310, +Fewer automobiles than workers dummy,@df.auto_ownership -1),-999,-999,,,-999 Unavailable: School tours for those with no usual school location,~(school_taz > -1),,,-999,-999,-999 diff --git a/activitysim/abm/test/configs/mandatory_tour_frequency.yaml b/activitysim/abm/test/configs/mandatory_tour_frequency.yaml index 30ba67b84..a28d28364 100644 --- a/activitysim/abm/test/configs/mandatory_tour_frequency.yaml +++ b/activitysim/abm/test/configs/mandatory_tour_frequency.yaml @@ -3,3 +3,5 @@ annotate_persons: DF: persons TABLES: - tours + +#SEGMENT_COL: tour_purpose diff --git a/activitysim/abm/test/configs/mandatory_tour_scheduling.yaml b/activitysim/abm/test/configs/mandatory_tour_scheduling.yaml new file mode 100644 index 000000000..419878e77 --- /dev/null +++ b/activitysim/abm/test/configs/mandatory_tour_scheduling.yaml @@ -0,0 +1,30 @@ + +SIMULATE_CHOOSER_COLUMNS: + - ptype + - hhsize + - roundtrip_auto_time_to_work + - num_workers + - income_in_thousands + - work_and_school_and_worker + - work_and_school_and_student + - workplace_in_cbd + - home_is_rural + - mandatory_tour_frequency + - is_worker + - is_student + - is_university + - workplace_taz + - school_taz + - TAZ + +LOGSUM_SETTINGS: tour_mode_choice.yaml + +SEGMENT_COL: primary_purpose + + +#CHOOSER_ORIG_COL_NAME: TAZ + +DESTINATION_FOR_TOUR_PURPOSE: + work: workplace_taz + school: school_taz + univ: school_taz diff --git a/activitysim/abm/test/configs/school_location.csv b/activitysim/abm/test/configs/school_location.csv index c771116ca..43c156f2a 100644 --- a/activitysim/abm/test/configs/school_location.csv +++ b/activitysim/abm/test/configs/school_location.csv @@ -1,11 +1,13 @@ Description,Expression,university,highschool,gradeschool -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-3.2451,-0.9523,-1.6419 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-2.7011,-0.5700,-0.5700 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.5707,-0.5700,-0.5700 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.5002,-0.1930,-0.2031 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.0730,-0.1882,-0.0460 -Size variable,@df[segment].apply(np.log1p),1.0000,1.0000,1.0000 -No attractions,@df[segment]==0,-999.0000,-999.0000,-999.0000 +,_DIST@skims['DIST'],1,1,1 +"Distance, piecewise linear from 0 to 1 miles",@_DIST.clip(1),-3.2451,-0.9523,-1.6419 +"Distance, piecewise linear from 1 to 2 miles","@(_DIST-1).clip(0,1)",-2.7011,-0.5700,-0.5700 +"Distance, piecewise linear from 2 to 5 miles","@(_DIST-2).clip(0,3)",-0.5707,-0.5700,-0.5700 +"Distance, piecewise linear from 5 to 15 miles","@(_DIST-5).clip(0,10)",-0.5002,-0.1930,-0.2031 +"Distance, piecewise linear for 15+ miles",@(_DIST-15.0).clip(0),-0.0730,-0.1882,-0.0460 +Size variable,@(df['size_term'] * df['shadow_price_size_term_adjustment']).apply(np.log1p),1.0000,1.0000,1.0000 +utility adjustment,@df['shadow_price_utility_adjustment'],1.0000,1.0000,1.0000 +No attractions,@df['size_term']==0,-999.0000,-999.0000,-999.0000 Mode choice logsum,mode_choice_logsum,0.5358,0.5358,0.5358 "Sample of alternatives correction factor","@np.minimum(np.log(df.pick_count/df.prob), 60)",1 diff --git a/activitysim/abm/test/configs/school_location.yaml b/activitysim/abm/test/configs/school_location.yaml index 83813ad50..5132c6ea6 100644 --- a/activitysim/abm/test/configs/school_location.yaml +++ b/activitysim/abm/test/configs/school_location.yaml @@ -2,22 +2,56 @@ SAMPLE_SIZE: 30 SIMULATE_CHOOSER_COLUMNS: - TAZ - - is_university - - is_highschool - - is_gradeschool - - -LOGSUM_SETTINGS: tour_mode_choice.yaml -LOGSUM_PREPROCESSOR: nontour_preprocessor - + - school_segment + - household_id # model-specific logsum-related settings CHOOSER_ORIG_COL_NAME: TAZ ALT_DEST_COL_NAME: alt_dest -IN_PERIOD: 8 -OUT_PERIOD: 17 +IN_PERIOD: 14 +OUT_PERIOD: 8 + +DEST_CHOICE_COLUMN_NAME: school_taz + +SAMPLE_SPEC: school_location_sample.csv +SPEC: school_location.csv + +LOGSUM_SETTINGS: tour_mode_choice.yaml +LOGSUM_PREPROCESSOR: nontour_preprocessor +LOGSUM_TOUR_PURPOSE: + university: univ + highschool: school + gradeschool: school annotate_persons: SPEC: annotate_persons_school DF: persons + +# - shadow pricing + +# required by initialize_households when creating school_destination_size table +CHOOSER_TABLE_NAME: persons + +# size_terms model_selector +MODEL_SELECTOR: school + +# chooser column with segment_id for this segment type +CHOOSER_SEGMENT_COLUMN_NAME: school_segment + +# boolean column to filter choosers (True means keep) +CHOOSER_FILTER_COLUMN_NAME: is_student + + +# FIXME - these are assigned to persons in annotate_persons. we need a better way to manage this +SEGMENT_IDS: + university: 3 + highschool: 2 + gradeschool: 1 + +# model adds these tables (informational - not added if commented out) +SHADOW_PRICE_TABLE: school_shadow_prices +MODELED_SIZE_TABLE: school_modeled_size + +# not loaded if commented out +SAVED_SHADOW_PRICE_TABLE_NAME: school_shadow_prices.csv diff --git a/activitysim/abm/test/configs/school_location_sample.csv b/activitysim/abm/test/configs/school_location_sample.csv index c66526b1a..7bc1fdacc 100644 --- a/activitysim/abm/test/configs/school_location_sample.csv +++ b/activitysim/abm/test/configs/school_location_sample.csv @@ -1,8 +1,10 @@ Description,Expression,university,highschool,gradeschool -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-3.2451,-0.9523,-1.6419 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-2.7011,-0.5700,-0.5700 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.5707,-0.5700,-0.5700 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.5002,-0.1930,-0.2031 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.0730,-0.1882,-0.0460 -Size variable,@df[segment].apply(np.log1p),1.0000,1.0000,1.0000 -No attractions,@df[segment]==0,-999.0000,-999.0000,-999.0000 +,_DIST@skims['DIST'],1,1,1 +"Distance, piecewise linear from 0 to 1 miles",@_DIST.clip(1),-3.2451,-0.9523,-1.6419 +"Distance, piecewise linear from 1 to 2 miles","@(_DIST-1).clip(0,1)",-2.7011,-0.5700,-0.5700 +"Distance, piecewise linear from 2 to 5 miles","@(_DIST-2).clip(0,3)",-0.5707,-0.5700,-0.5700 +"Distance, piecewise linear from 5 to 15 miles","@(_DIST-5).clip(0,10)",-0.5002,-0.1930,-0.2031 +"Distance, piecewise linear for 15+ miles",@(_DIST-15.0).clip(0),-0.0730,-0.1882,-0.0460 +Size variable,@(df['size_term'] * df['shadow_price_size_term_adjustment']).apply(np.log1p),1.0000,1.0000,1.0000 +utility adjustment,@df['shadow_price_utility_adjustment'],1.0000,1.0000,1.0000 +No attractions,@df['size_term']==0,-999.0000,-999.0000,-999.0000 diff --git a/activitysim/abm/test/configs/settings.yaml b/activitysim/abm/test/configs/settings.yaml index 7d96e27f8..f94c61b33 100644 --- a/activitysim/abm/test/configs/settings.yaml +++ b/activitysim/abm/test/configs/settings.yaml @@ -1,39 +1,121 @@ -store: mtc_asim.h5 +#input data store and skims +input_store: mtc_asim.h5 skims_file: skims.omx -# area_types less than this are considered urban -urban_threshold: 4 -cbd_threshold: 2 -rural_threshold: 6 +#number of households to simulate +households_sample_size: 100 +# simulate all households +#households_sample_size: 0 + +chunk_size: 0 + +# set false to disable variability check in simple_simulate and interaction_simulate +check_for_variability: False -households_sample_size: 100 +# - shadow pricing global switches -# trace household id; comment out for no trace -trace_hh_id: 961042 +# turn shadow_pricing on and off for all models (e.g. school and work) +# shadow pricing is deprecated for less than full samples +use_shadow_pricing: False -# trace origin, destination in accessibility calculation + +# - tracing + +#trace household id; comment out or leave empty for no trace +# households with all tour types +# [ 728370 1234067 1402924 1594625 1595333 1747572 1896849 1931818 2222690 2344951 2677154] +trace_hh_id: 701664 + +# trace origin, destination in accessibility calculation; comment out or leave empty for no trace #trace_od: [5, 11] +trace_od: + + +models: + - initialize_landuse + - compute_accessibility + - initialize_households + - school_location + - workplace_location + - auto_ownership_simulate + - free_parking + - cdap_simulate + - mandatory_tour_frequency + - mandatory_tour_scheduling + - joint_tour_frequency + - joint_tour_composition + - joint_tour_participation + - joint_tour_destination + - joint_tour_scheduling + - non_mandatory_tour_frequency + - non_mandatory_tour_destination + - non_mandatory_tour_scheduling + - tour_mode_choice_simulate + - atwork_subtour_frequency + - atwork_subtour_destination + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination + - trip_purpose_and_destination + - trip_scheduling + - trip_mode_choice + - write_data_dictionary + - track_skim_usage + - write_tables -grade_school_max_age: 14 +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: trip_mode_choice -county_map: - San Francisco: 1 - San Mateo: 2 - Santa Clara: 3 - Alameda: 4 - Contra Costa: 5 - Solano: 6 - Napa: 7 - Sonoma: 8 - Marin: 9 +output_tables: + action: include + prefix: final_ + tables: + - checkpoints + - accessibility + - land_use + - households + - persons + - tours + - trips + +# area_types less than this are considered urban +urban_threshold: 4 +cbd_threshold: 2 +rural_threshold: 6 + +#upperEA Upper limit on time of day for the Early morning time period 5 +#upperAM Upper limit on time of day for the AM peak time period 10 +#upperMD Upper limit on time of day for the Midday time period 15 +#upperPM Upper limit on time of day for the PM time peak period 19 skim_time_periods: hours: - 0 + - 6 - 11 - 16 + - 20 - 24 labels: + - EA - AM - MD - PM + - EV + +# - value of time + +# value_of_time = lognormal(np.log(median_value_of_time * mu), sigma).clip(min_vot, max_vot) + +min_value_of_time: 1 +max_value_of_time: 50 +distributed_vot_mu: 0.684 +distributed_vot_sigma: 0.85 + +household_median_value_of_time: + 1: 6.01 + 2: 8.81 + 3: 10.44 + 4: 12.86 diff --git a/activitysim/abm/test/configs/shadow_pricing.yaml b/activitysim/abm/test/configs/shadow_pricing.yaml new file mode 100644 index 000000000..544b2ea79 --- /dev/null +++ b/activitysim/abm/test/configs/shadow_pricing.yaml @@ -0,0 +1,36 @@ + +# list model_selectors and model_names of models that use shadow pricing +# This list identifies which size_terms to preload (which must be done in single process mode +# so predicted_size tables can be scaled to population) +# (and allows models to be renamed without changing model_selectors) +shadow_pricing_models: + school: school_location + workplace: workplace_location + +# global switch to enable/disable loading of saved shadow prices +# (ignored if global use_shadow_pricing switch is False) +LOAD_SAVED_SHADOW_PRICES: True + +MAX_ITERATIONS: 5 +MAX_ITERATIONS_SAVED: 1 + +# ignore criteria for zones smaller than size_threshold +SIZE_THRESHOLD: 10 + +# zone passes if modeled is within percent_tolerance of predicted_size +PERCENT_TOLERANCE: 5 + +# max percentage of zones allowed to fail +FAIL_THRESHOLD: 10 + +# CTRAMP or daysim +SHADOW_PRICE_METHOD: ctramp +#SHADOW_PRICE_METHOD: daysim + +# ctramp-style shadow_pricing_method parameters +DAMPING_FACTOR: 0.7 + +# daysim-style shadow_pricing_method parameters +# FIXME should these be the same as PERCENT_TOLERANCE and FAIL_THRESHOLD above? +DAYSIM_ABSOLUTE_TOLERANCE: 50 +DAYSIM_PERCENT_TOLERANCE: 10 diff --git a/activitysim/abm/test/configs/tour_mode_choice.yaml b/activitysim/abm/test/configs/tour_mode_choice.yaml index 513738f58..8fb41b5f2 100644 --- a/activitysim/abm/test/configs/tour_mode_choice.yaml +++ b/activitysim/abm/test/configs/tour_mode_choice.yaml @@ -52,8 +52,8 @@ SPEC: tour_mode_choice.csv COEFFS: tour_mode_choice_coeffs.csv CONSTANTS: - valueOfTime: 8.00 - costPerMile: 18.48 + #valueOfTime: 8.00 + costPerMile: 18.29 costShareSr2: 1.75 costShareSr3: 2.50 waitThresh: 10.00 @@ -96,3 +96,5 @@ LOGSUM_CHOOSER_COLUMNS: - number_of_participants - tour_category - num_workers + - value_of_time + - free_parking_at_work diff --git a/activitysim/abm/test/configs/tour_mode_choice_annotate_choosers_preprocessor.csv b/activitysim/abm/test/configs/tour_mode_choice_annotate_choosers_preprocessor.csv index cd4409220..d0e8f839d 100644 --- a/activitysim/abm/test/configs/tour_mode_choice_annotate_choosers_preprocessor.csv +++ b/activitysim/abm/test/configs/tour_mode_choice_annotate_choosers_preprocessor.csv @@ -1,47 +1,52 @@ Description,Target,Expression #,, -local,_DF_IS_TOUR,"'tour_type' in df.columns" +local,_DF_IS_TOUR,'tour_type' in df.columns ,number_of_participants,df.number_of_participants if _DF_IS_TOUR else 1 ,is_joint,(df.tour_category=='joint') if _DF_IS_TOUR else False #,, - local,_HAVE_PARENT_TOURS,"'parent_tour_id' in df.columns" + local,_HAVE_PARENT_TOURS,'parent_tour_id' in df.columns ,_parent_tour_mode,"reindex(tours.tour_mode, df.parent_tour_id) if _HAVE_PARENT_TOURS else ''" ,work_tour_is_drive,"_parent_tour_mode.isin(['DRIVEALONEFREE','DRIVEALONEPAY'])" -,work_tour_is_bike,"_parent_tour_mode=='BIKE'" +,work_tour_is_bike,_parent_tour_mode=='BIKE' ,work_tour_is_SOV,"_parent_tour_mode.isin(['DRIVEALONEFREE','DRIVEALONEPAY'])" #,, ,is_joint,(df.tour_category=='joint') if 'tour_category' in df.columns else False ,is_indiv,~is_joint -,is_atwork_subtour,(df.tour_category=='joint') if 'tour_category' in df.columns else False +,is_atwork_subtour,(df.tour_category=='atwork') if 'tour_category' in df.columns else False #,, -,value_of_time,8.00 -,c_cost,(0.60 * c_ivt) / value_of_time +,c_cost,(0.60 * c_ivt) / df.value_of_time #,, ,dest_topology,"reindex(land_use.TOPOLOGY, df[dest_col_name])" ,terminal_time,"reindex(land_use.TERMINAL, df[dest_col_name])" ,dest_density_index,"reindex(land_use.density_index, df[dest_col_name])" FIXME,origin_walk_time,0 FIXME,destination_walk_time,0 -FIXME,daily_parking_cost,0 #,, -,drive_commuter_available,(odt_skims['DRV_COM_WLK_TOTIVT']>0) & (dot_skims['WLK_COM_DRV_TOTIVT']>0) & ((odt_skims['DRV_COM_WLK_KEYIVT'] + dot_skims['WLK_COM_DRV_KEYIVT'])>0) -,drive_express_available,(odt_skims['DRV_EXP_WLK_TOTIVT']>0) & (dot_skims['WLK_EXP_DRV_TOTIVT']>0) & ((odt_skims['DRV_EXP_WLK_KEYIVT'] + dot_skims['WLK_EXP_DRV_KEYIVT'])>0) -,drive_heavyrail_available,(odt_skims['DRV_HVY_WLK_TOTIVT']>0) & (dot_skims['WLK_HVY_DRV_TOTIVT']>0) & ((odt_skims['DRV_HVY_WLK_KEYIVT'] + dot_skims['WLK_HVY_DRV_KEYIVT'])>0) +,_free_parking_available,"(df.tour_type == 'work') & df.free_parking_at_work if _DF_IS_TOUR else False" +,_dest_hourly_peak_parking_cost,"reindex(land_use.PRKCST, df[dest_col_name])" +,_hourly_parking_cost,"np.where(_free_parking_available, 0, _dest_hourly_peak_parking_cost)" +,daily_parking_cost,_hourly_parking_cost * df.duration +#,, +,drive_commuter_available,(odt_skims['DRV_COM_WLK_TOTIVT']>0) & (dot_skims['WLK_COM_DRV_TOTIVT']>0) & (odt_skims['DRV_COM_WLK_KEYIVT']>0) & (dot_skims['WLK_COM_DRV_KEYIVT']>0) +,drive_express_available,(odt_skims['DRV_EXP_WLK_TOTIVT']>0) & (dot_skims['WLK_EXP_DRV_TOTIVT']>0) & (odt_skims['DRV_EXP_WLK_KEYIVT']>0) & (dot_skims['WLK_EXP_DRV_KEYIVT']>0) +,drive_heavyrail_available,(odt_skims['DRV_HVY_WLK_TOTIVT']>0) & (dot_skims['WLK_HVY_DRV_TOTIVT']>0) & (odt_skims['DRV_HVY_WLK_KEYIVT']>0) & (dot_skims['WLK_HVY_DRV_KEYIVT']>0) ,drive_local_available,(odt_skims['DRV_LOC_WLK_TOTIVT']>0) & (dot_skims['WLK_LOC_DRV_TOTIVT']>0) -,drive_lrf_available,(odt_skims['DRV_LRF_WLK_TOTIVT']>0) & (dot_skims['WLK_LRF_DRV_TOTIVT']>0) & ((odt_skims['DRV_LRF_WLK_KEYIVT'] + dot_skims['WLK_LRF_DRV_KEYIVT'])>0) +,drive_lrf_available,(odt_skims['DRV_LRF_WLK_TOTIVT']>0) & (dot_skims['WLK_LRF_DRV_TOTIVT']>0) & (odt_skims['DRV_LRF_WLK_KEYIVT']>0) & (dot_skims['WLK_LRF_DRV_KEYIVT']>0) ,hov2_available,(odt_skims['HOV2_TIME'] + dot_skims['HOV2_TIME'])>0 ,hov2toll_available,(odt_skims['HOV2TOLL_VTOLL'] + dot_skims['HOV2TOLL_VTOLL'])>0 ,hov3_available,(odt_skims['HOV3_TIME']>0) & (dot_skims['HOV3_TIME']>0) ,hov3toll_available,(odt_skims['HOV3TOLL_VTOLL'] + dot_skims['HOV3TOLL_VTOLL'])>0 ,sov_available,(odt_skims['SOV_TIME']>0) & (dot_skims['SOV_TIME']>0) ,sovtoll_available,(odt_skims['SOVTOLL_VTOLL']>0) | (dot_skims['SOVTOLL_VTOLL']>0) -,walk_commuter_available,(odt_skims['WLK_COM_WLK_TOTIVT']>0) & (dot_skims['WLK_COM_WLK_TOTIVT']>0) & ((odt_skims['WLK_COM_WLK_KEYIVT'] + dot_skims['WLK_COM_WLK_KEYIVT'])>0) -,walk_express_available,(odt_skims['WLK_EXP_WLK_TOTIVT']>0) & (dot_skims['WLK_EXP_WLK_TOTIVT']>0) & ((odt_skims['WLK_EXP_WLK_KEYIVT'] + dot_skims['WLK_EXP_WLK_KEYIVT'])>0) -,walk_heavyrail_available,(odt_skims['WLK_HVY_WLK_TOTIVT']>0) & (dot_skims['WLK_HVY_WLK_TOTIVT']>0) & ((odt_skims['WLK_HVY_WLK_KEYIVT'] + dot_skims['WLK_HVY_WLK_KEYIVT'])>0) +,walk_commuter_available,(odt_skims['WLK_COM_WLK_TOTIVT']>0) & (dot_skims['WLK_COM_WLK_TOTIVT']>0) & (odt_skims['WLK_COM_WLK_KEYIVT']>0) & (dot_skims['WLK_COM_WLK_KEYIVT']>0) +,walk_express_available,(odt_skims['WLK_EXP_WLK_TOTIVT']>0) & (dot_skims['WLK_EXP_WLK_TOTIVT']>0) & (odt_skims['WLK_EXP_WLK_KEYIVT']>0) & (dot_skims['WLK_EXP_WLK_KEYIVT']>0) +,walk_heavyrail_available,(odt_skims['WLK_HVY_WLK_TOTIVT']>0) & (dot_skims['WLK_HVY_WLK_TOTIVT']>0) & (odt_skims['WLK_HVY_WLK_KEYIVT']>0) & (dot_skims['WLK_HVY_WLK_KEYIVT']>0) ,walk_local_available,(odt_skims['WLK_LOC_WLK_TOTIVT']>0) & (dot_skims['WLK_LOC_WLK_TOTIVT']>0) -,walk_lrf_available,(odt_skims['WLK_LRF_WLK_TOTIVT']>0) & (dot_skims['WLK_LRF_WLK_TOTIVT']>0) & ((odt_skims['WLK_LRF_WLK_KEYIVT'] + dot_skims['WLK_LRF_WLK_KEYIVT'])>0) +,walk_lrf_available,(odt_skims['WLK_LRF_WLK_TOTIVT']>0) & (dot_skims['WLK_LRF_WLK_TOTIVT']>0) & (odt_skims['WLK_LRF_WLK_KEYIVT']) & (dot_skims['WLK_LRF_WLK_KEYIVT']>0) ,distance,od_skims['DIST'] -,walk_ferry_available,walk_lrf_available & ((odt_skims['WLK_LRF_WLK_FERRYIVT'] + dot_skims['WLK_LRF_WLK_FERRYIVT'])>0) -,drive_ferry_available,drive_lrf_available & ((odt_skims['DRV_LRF_WLK_FERRYIVT'] + dot_skims['WLK_LRF_WLK_FERRYIVT'])>0) +,walk_ferry_available,walk_lrf_available & (odt_skims['WLK_LRF_WLK_FERRYIVT']>0) & (dot_skims['WLK_LRF_WLK_FERRYIVT']>0) +,drive_ferry_available,drive_lrf_available & (odt_skims['DRV_LRF_WLK_FERRYIVT']>0) & (dot_skims['WLK_LRF_WLK_FERRYIVT']>0) #,, destination in central business district,destination_in_cbd,"(reindex(land_use.area_type, df[dest_col_name]) < setting('cbd_threshold')) * 1" +#,,FIXME diagnostic +#,sov_dist_rt,(odt_skims['SOV_DIST'] + dot_skims['SOV_DIST']) diff --git a/activitysim/abm/test/configs/tour_mode_choice_coeffs.csv b/activitysim/abm/test/configs/tour_mode_choice_coeffs.csv index b37523518..3e12e41db 100644 --- a/activitysim/abm/test/configs/tour_mode_choice_coeffs.csv +++ b/activitysim/abm/test/configs/tour_mode_choice_coeffs.csv @@ -9,7 +9,8 @@ c_walktimeshort,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt c_walktimelong,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,-0.188 c_biketimeshort,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,-0.0752 c_biketimelong,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,-0.376 -c_cost,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.6*c_ivt) / valueOfTime +#value_of_time is a person attribute so we cant compute c_cost as scalar here,,,,,,,,,, +#c_cost,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.6*c_ivt) / valueOfTime c_short_i_wait,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,-0.0376 c_long_i_wait,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,-0.0188 c_wacc,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,-0.0376 diff --git a/activitysim/abm/test/configs/workplace_location.csv b/activitysim/abm/test/configs/workplace_location.csv index 1aec2724d..7de23b84e 100644 --- a/activitysim/abm/test/configs/workplace_location.csv +++ b/activitysim/abm/test/configs/workplace_location.csv @@ -1,18 +1,14 @@ -Description,Expression,Alt -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-0.8428 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.3104 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.3783 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.1285 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.0917 -"Distance 0 to 5 mi, high and very high income",@(df.income_segment>=3)*skims['DIST'].clip(upper=5),0.15 -"Distance 5+ mi, high and very high income",@(df.income_segment>=3)*(skims['DIST']-5).clip(0),0.02 -"Size variable full-time worker, low income","@(df.income_segment==1)*df['work_low'].apply(np.log1p)",1 -"Size variable full-time worker, medium income","@(df.income_segment==2)*df['work_med'].apply(np.log1p)",1 -"Size variable full-time worker, high income","@(df.income_segment==3)*df['work_high'].apply(np.log1p)",1 -"Size variable full-time worker, very high income","@(df.income_segment==4)*df['work_veryhigh'].apply(np.log1p)",1 -"No attractions full-time worker, low income","@(df.income_segment==1)&(df['work_low']==0)",-999 -"No attractions full-time worker, medium income","@(df.income_segment==2)&(df['work_med']==0)",-999 -"No attractions full-time worker, high income","@(df.income_segment==3)&(df['work_high']==0)",-999 -"No attractions full-time worker, very high income","@(df.income_segment==4)&(df['work_veryhigh']==0)",-999 -"Mode choice logsum",mode_choice_logsum,0.3 -"Sample of alternatives correction factor","@np.minimum(np.log(df.pick_count/df.prob), 60)",1 +Description,Expression,work_low,work_med,work_high,work_veryhigh +,_DIST@skims['DIST'],1,1,1,1 +"Distance, piecewise linear from 0 to 1 miles",@_DIST.clip(1),-0.8428,-0.8428,-0.8428,-0.8428 +"Distance, piecewise linear from 1 to 2 miles","@(_DIST-1).clip(0,1)",-0.3104,-0.3104,-0.3104,-0.3104 +"Distance, piecewise linear from 2 to 5 miles","@(_DIST-2).clip(0,3)",-0.3783,-0.3783,-0.3783,-0.3783 +"Distance, piecewise linear from 5 to 15 miles","@(_DIST-5).clip(0,10)",-0.1285,-0.1285,-0.1285,-0.1285 +"Distance, piecewise linear for 15+ miles",@(_DIST-15.0).clip(0),-0.0917,-0.0917,-0.0917,-0.0917 +"Distance 0 to 5 mi, high and very high income",@_DIST.clip(upper=5),0.0,0.0,0.15,0.15 +"Distance 5+ mi, high and very high income",@(_DIST-5).clip(0),0.0,0.0,0.02,0.02 +Size variable,@(df['size_term'] * df['shadow_price_size_term_adjustment']).apply(np.log1p),1.0000,1.0000,1.0000,1.0000 +utility adjustment,@df['shadow_price_utility_adjustment'],1.0000,1.0000,1.0000,1.0000 +No attractions,@df['size_term']==0,-999.0000,-999.0000,-999.0000,-999.0000 +"Mode choice logsum",mode_choice_logsum,0.3,0.3,0.3,0.3 +"Sample of alternatives correction factor","@np.minimum(np.log(df.pick_count/df.prob), 60)",1,1,1,1 diff --git a/activitysim/abm/test/configs/workplace_location.yaml b/activitysim/abm/test/configs/workplace_location.yaml index 2a61a3b0d..e83163ebe 100644 --- a/activitysim/abm/test/configs/workplace_location.yaml +++ b/activitysim/abm/test/configs/workplace_location.yaml @@ -4,18 +4,60 @@ SIMULATE_CHOOSER_COLUMNS: - income_segment - TAZ +SAMPLE_SPEC: workplace_location_sample.csv +SPEC: workplace_location.csv + LOGSUM_SETTINGS: tour_mode_choice.yaml LOGSUM_PREPROCESSOR: nontour_preprocessor +LOGSUM_TOUR_PURPOSE: work # model-specific logsum-related settings CHOOSER_ORIG_COL_NAME: TAZ ALT_DEST_COL_NAME: alt_dest -IN_PERIOD: 8 -OUT_PERIOD: 17 +IN_PERIOD: 17 +OUT_PERIOD: 8 +DEST_CHOICE_COLUMN_NAME: workplace_taz annotate_persons: SPEC: annotate_persons_workplace DF: persons TABLES: - land_use + +annotate_households: + SPEC: annotate_households_workplace + DF: households + TABLES: + - persons + +# - shadow pricing + + +# income_segment is in households, but we want to count persons +CHOOSER_TABLE_NAME: persons_merged + +# size_terms model_selector +MODEL_SELECTOR: workplace + +# we can't use use household income_segment as this will also be set for non-workers +CHOOSER_SEGMENT_COLUMN_NAME: income_segment + +# boolean column to filter choosers (True means keep) +CHOOSER_FILTER_COLUMN_NAME: is_worker + +# FIXME - these are assigned to persons in annotate_persons. we need a better way to manage this +SEGMENT_IDS: + work_low: 1 + work_med: 2 + work_high: 3 + work_veryhigh: 4 + +# model adds these tables (informational - not added if commented out) +SHADOW_PRICE_TABLE: workplace_shadow_prices +MODELED_SIZE_TABLE: workplace_modeled_size + +# not loaded if commented out +SAVED_SHADOW_PRICE_TABLE_NAME: workplace_shadow_prices.csv + + diff --git a/activitysim/abm/test/configs/workplace_location_sample.csv b/activitysim/abm/test/configs/workplace_location_sample.csv index 5c4abd4f5..934623aaa 100644 --- a/activitysim/abm/test/configs/workplace_location_sample.csv +++ b/activitysim/abm/test/configs/workplace_location_sample.csv @@ -1,16 +1,12 @@ -Description,Expression,Alt -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-0.8428 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.3104 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.3783 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.1285 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.0917 -"Distance 0 to 5 mi, high and very high income",@(df.income_segment>=3)*skims['DIST'].clip(upper=5),0.15 -"Distance 5+ mi, high and very high income",@(df.income_segment>=3)*(skims['DIST']-5).clip(0),0.02 -"Size variable full-time worker, low income","@(df.income_segment==1)*df['work_low'].apply(np.log1p)",1 -"Size variable full-time worker, medium income","@(df.income_segment==2)*df['work_med'].apply(np.log1p)",1 -"Size variable full-time worker, high income","@(df.income_segment==3)*df['work_high'].apply(np.log1p)",1 -"Size variable full-time worker, very high income","@(df.income_segment==4)*df['work_veryhigh'].apply(np.log1p)",1 -"No attractions full-time worker, low income","@(df.income_segment==1)&(df['work_low']==0)",-999 -"No attractions full-time worker, medium income","@(df.income_segment==2)&(df['work_med']==0)",-999 -"No attractions full-time worker, high income","@(df.income_segment==3)&(df['work_high']==0)",-999 -"No attractions full-time worker, very high income","@(df.income_segment==4)&(df['work_veryhigh']==0)",-999 +Description,Expression,work_low,work_med,work_high,work_veryhigh +,_DIST@skims['DIST'],1,1,1,1 +"Distance, piecewise linear from 0 to 1 miles",@_DIST.clip(1),-0.8428,-0.8428,-0.8428,-0.8428 +"Distance, piecewise linear from 1 to 2 miles","@(_DIST-1).clip(0,1)",-0.3104,-0.3104,-0.3104,-0.3104 +"Distance, piecewise linear from 2 to 5 miles","@(_DIST-2).clip(0,3)",-0.3783,-0.3783,-0.3783,-0.3783 +"Distance, piecewise linear from 5 to 15 miles","@(_DIST-5).clip(0,10)",-0.1285,-0.1285,-0.1285,-0.1285 +"Distance, piecewise linear for 15+ miles",@(_DIST-15.0).clip(0),-0.0917,-0.0917,-0.0917,-0.0917 +"Distance 0 to 5 mi, high and very high income",@_DIST.clip(upper=5),0.0,0.0,0.15,0.15 +"Distance 5+ mi, high and very high income",@(_DIST-5).clip(0),0.0,0.0,0.02,0.02 +Size variable,@(df['size_term'] * df['shadow_price_size_term_adjustment']).apply(np.log1p),1.0000,1.0000,1.0000,1.0000 +utility adjustment,@df['shadow_price_utility_adjustment'],1.0000,1.0000,1.0000,1.0000 +No attractions,@df['size_term']==0,-999.0000,-999.0000,-999.0000,-999.0000 diff --git a/activitysim/abm/test/configs_mp/settings.yaml b/activitysim/abm/test/configs_mp/settings.yaml new file mode 100644 index 000000000..5e16748bb --- /dev/null +++ b/activitysim/abm/test/configs_mp/settings.yaml @@ -0,0 +1,42 @@ + +inherit_settings: True + +multiprocess: True + + +models: + - initialize_landuse + - compute_accessibility + - initialize_households + - school_location + - workplace_location + - auto_ownership_simulate + - free_parking + - write_data_dictionary + - write_tables + + +multiprocess_steps: + - name: mp_initialize_landuse + begin: initialize_landuse + - name: mp_accessibility + begin: compute_accessibility + num_processes: 2 + slice: + tables: + - accessibility + except: + - land_use + - name: mp_initialize_households + begin: initialize_households + - name: mp_households + begin: school_location + num_processes: 2 + stagger: 4 + #chunk_size: 1000000000 + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_data_dictionary diff --git a/activitysim/abm/test/configs_shadow/shadow_pricing.yaml b/activitysim/abm/test/configs_shadow/shadow_pricing.yaml new file mode 100644 index 000000000..3335b582a --- /dev/null +++ b/activitysim/abm/test/configs_shadow/shadow_pricing.yaml @@ -0,0 +1,7 @@ +inherit_settings: True + +# global switch to enable/disable loading of saved shadow prices +# (ignored if global use_shadow_pricing switch is False) +LOAD_SAVED_SHADOW_PRICES: True + +MAX_ITERATIONS_SAVED: 1 diff --git a/activitysim/abm/test/data/mtc_asim.h5 b/activitysim/abm/test/data/mtc_asim.h5 index d19cfb160..5ec01031d 100644 Binary files a/activitysim/abm/test/data/mtc_asim.h5 and b/activitysim/abm/test/data/mtc_asim.h5 differ diff --git a/activitysim/abm/test/data/override_hh_ids.csv b/activitysim/abm/test/data/override_hh_ids.csv new file mode 100644 index 000000000..d15a5aa71 --- /dev/null +++ b/activitysim/abm/test/data/override_hh_ids.csv @@ -0,0 +1,11 @@ +household_id +982875 +1810015 +1099626 +763879 +824207 +2822230 +2821179 +1196298 +1363467 +386761 diff --git a/activitysim/abm/test/data/skims.omx b/activitysim/abm/test/data/skims.omx index d86a5e8dd..18c6dc440 100644 Binary files a/activitysim/abm/test/data/skims.omx and b/activitysim/abm/test/data/skims.omx differ diff --git a/activitysim/abm/test/output/.gitignore b/activitysim/abm/test/output/.gitignore index 5c191ce35..0c0762ada 100644 --- a/activitysim/abm/test/output/.gitignore +++ b/activitysim/abm/test/output/.gitignore @@ -1,4 +1,4 @@ *.csv -*.log -*.h5 *.txt +*.h5 +*.yaml diff --git a/activitysim/abm/test/output/trace/.gitignore b/activitysim/abm/test/output/trace/.gitignore new file mode 100644 index 000000000..afed0735d --- /dev/null +++ b/activitysim/abm/test/output/trace/.gitignore @@ -0,0 +1 @@ +*.csv diff --git a/activitysim/abm/test/run_mp.py b/activitysim/abm/test/run_mp.py new file mode 100644 index 000000000..59a9a3b66 --- /dev/null +++ b/activitysim/abm/test/run_mp.py @@ -0,0 +1,100 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +import os + +import pandas as pd +import pandas.util.testing as pdt + +from activitysim.core import tracing +from activitysim.core import pipeline +from activitysim.core import inject +from activitysim.core import mp_tasks + +# set the max households for all tests (this is to limit memory use on travis) +HOUSEHOLDS_SAMPLE_SIZE = 100 + +# household with mandatory, non mandatory, atwork_subtours, and joint tours +HH_ID = 1396417 + +# [1081630 1396417 1511245 1594943 1747572 1931915 2222690 2366390 2727112] + +# def teardown_function(func): +# inject.clear_cache() +# inject.reinject_decorated_tables() +# +# +# def close_handlers(): +# +# loggers = logging.Logger.manager.loggerDict +# for name in loggers: +# logger = logging.getLogger(name) +# logger.handlers = [] +# logger.propagate = True +# logger.setLevel(logging.NOTSET) + + +def regress_mini_auto(): + + # regression test: these are among the middle households in households table + # should be the same results as in test_pipeline (single-threaded) tests + hh_ids = [932147, 982875, 983048, 1024353] + choices = [1, 1, 1, 0] + expected_choice = pd.Series(choices, index=pd.Index(hh_ids, name="household_id"), + name='auto_ownership') + + auto_choice = pipeline.get_table("households").sort_index().auto_ownership + + offset = HOUSEHOLDS_SAMPLE_SIZE // 2 # choose something midway as hh_id ordered by hh size + print("auto_choice\n", auto_choice.head(offset).tail(4)) + + auto_choice = auto_choice.reindex(hh_ids) + + """ + auto_choice + household_id + 932147 1 + 982875 1 + 983048 1 + 1024353 0 + Name: auto_ownership, dtype: int64 + """ + pdt.assert_series_equal(auto_choice, expected_choice) + + +def test_mp_run(): + + mp_configs_dir = os.path.join(os.path.dirname(__file__), 'configs_mp') + configs_dir = os.path.join(os.path.dirname(__file__), 'configs') + inject.add_injectable('configs_dir', [mp_configs_dir, configs_dir]) + + output_dir = os.path.join(os.path.dirname(__file__), 'output') + inject.add_injectable("output_dir", output_dir) + + data_dir = os.path.join(os.path.dirname(__file__), 'data') + inject.add_injectable("data_dir", data_dir) + + tracing.config_logger() + + run_list = mp_tasks.get_run_list() + mp_tasks.print_run_list(run_list) + + # do this after config.handle_standard_args, as command line args may override injectables + injectables = ['data_dir', 'configs_dir', 'output_dir'] + injectables = {k: inject.get_injectable(k) for k in injectables} + + # pipeline.run(models=run_list['models'], resume_after=run_list['resume_after']) + + mp_tasks.run_multiprocess(run_list, injectables) + pipeline.open_pipeline('_') + regress_mini_auto() + pipeline.close_pipeline() + + +if __name__ == '__main__': + + test_mp_run() diff --git a/activitysim/abm/test/test_misc.py b/activitysim/abm/test/test_misc.py index c454d8e25..d4a07c996 100644 --- a/activitysim/abm/test/test_misc.py +++ b/activitysim/abm/test/test_misc.py @@ -1,60 +1,44 @@ # ActivitySim # See full license in LICENSE.txt. -import os -import tempfile +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 -import numpy as np -import orca +import os import pytest -import yaml -# orca injectables complicate matters because the decorators are executed at module load time -# and since py.test collects modules and loads them at the start of a run -# if a test method does something that has a lasting side-effect, then that side effect -# will carry over not just to subsequent test functions, but to subsequently called modules -# for instance, columns added with add_column will remain attached to orca tables -# pytest-xdist allows us to run py.test with the --boxed option which runs every function -# with a brand new python interpreter +from activitysim.core import inject -# Also note that the following import statement has the side-effect of registering injectables: + +# The following import statement has the side-effect of registering injectables: from .. import __init__ def test_misc(): - orca.clear_cache() + inject.clear_cache() with pytest.raises(RuntimeError) as excinfo: - orca.get_injectable("configs_dir") + inject.get_injectable("configs_dir") assert "directory does not exist" in str(excinfo.value) with pytest.raises(RuntimeError) as excinfo: - orca.get_injectable("data_dir") + inject.get_injectable("data_dir") assert "directory does not exist" in str(excinfo.value) with pytest.raises(RuntimeError) as excinfo: - orca.get_injectable("output_dir") + inject.get_injectable("output_dir") assert "directory does not exist" in str(excinfo.value) configs_dir = os.path.join(os.path.dirname(__file__), 'configs_test_misc') - orca.add_injectable("configs_dir", configs_dir) + inject.add_injectable("configs_dir", configs_dir) - settings = orca.get_injectable("settings") + settings = inject.get_injectable("settings") assert isinstance(settings, dict) data_dir = os.path.join(os.path.dirname(__file__), 'data') - orca.add_injectable("data_dir", data_dir) - - with pytest.raises(RuntimeError) as excinfo: - orca.get_injectable("store") - assert "store file name not specified in settings" in str(excinfo.value) - - settings = {'store': 'bogus.h5'} - orca.add_injectable("settings", settings) - with pytest.raises(RuntimeError) as excinfo: - orca.get_injectable("store") - assert "store file not found" in str(excinfo.value) + inject.add_injectable("data_dir", data_dir) # default values if not specified in settings - assert orca.get_injectable("chunk_size") == 0 + assert inject.get_injectable("chunk_size") == 0 diff --git a/activitysim/abm/test/test_mp_pipeline.py b/activitysim/abm/test/test_mp_pipeline.py new file mode 100644 index 000000000..82b85abfc --- /dev/null +++ b/activitysim/abm/test/test_mp_pipeline.py @@ -0,0 +1,21 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +import os +import subprocess + + +def test_mp_run(): + + file_path = os.path.join(os.path.dirname(__file__), 'run_mp.py') + + subprocess.check_call(['coverage', 'run', file_path]) + + +if __name__ == '__main__': + + test_mp_run() diff --git a/activitysim/abm/test/test_pipeline.py b/activitysim/abm/test/test_pipeline.py index 6e799dd1c..328c95449 100644 --- a/activitysim/abm/test/test_pipeline.py +++ b/activitysim/abm/test/test_pipeline.py @@ -1,41 +1,58 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import os -import tempfile import logging -import numpy as np -import orca import pandas as pd import pandas.util.testing as pdt import pytest import yaml -import openmatrix as omx - -from activitysim.abm import __init__ -from activitysim.abm.tables import size_terms +from activitysim.core import random from activitysim.core import tracing from activitysim.core import pipeline from activitysim.core import inject +from activitysim.core import config # set the max households for all tests (this is to limit memory use on travis) HOUSEHOLDS_SAMPLE_SIZE = 100 # household with mandatory, non mandatory, atwork_subtours, and joint tours -HH_ID = 1269102 +HH_ID = 257341 -# test households with all tour types -# [ 897044 1062044 1227638 1227783 1583265 2124082] +# [ 257341 1234246 1402915 1511245 1931827 1931908 2307195 2366390 2408855 +# 2518594 2549865 982981 1594365 1057690 1234121 2098971] - -SKIP_FULL_RUN = True +# SKIP_FULL_RUN = True SKIP_FULL_RUN = False +def setup_dirs(configs_dir): + + inject.add_injectable("configs_dir", configs_dir) + + output_dir = os.path.join(os.path.dirname(__file__), 'output') + inject.add_injectable("output_dir", output_dir) + + data_dir = os.path.join(os.path.dirname(__file__), 'data') + inject.add_injectable("data_dir", data_dir) + + inject.clear_cache() + + tracing.config_logger() + + tracing.delete_output_files('csv') + tracing.delete_output_files('txt') + tracing.delete_output_files('yaml') + + def teardown_function(func): - orca.clear_cache() + inject.clear_cache() inject.reinject_decorated_tables() @@ -49,22 +66,15 @@ def close_handlers(): logger.setLevel(logging.NOTSET) -def inject_settings(configs_dir, households_sample_size, chunk_size=None, - trace_hh_id=None, trace_od=None, check_for_variability=None): +def inject_settings(configs_dir, **kwargs): with open(os.path.join(configs_dir, 'settings.yaml')) as f: - settings = yaml.load(f) - settings['households_sample_size'] = households_sample_size - if chunk_size is not None: - settings['chunk_size'] = chunk_size - if trace_hh_id is not None: - settings['trace_hh_id'] = trace_hh_id - if trace_od is not None: - settings['trace_od'] = trace_od - if check_for_variability is not None: - settings['check_for_variability'] = check_for_variability - - orca.add_injectable("settings", settings) + settings = yaml.load(f, Loader=yaml.SafeLoader) + + for k in kwargs: + settings[k] = kwargs[k] + + inject.add_injectable("settings", settings) return settings @@ -72,114 +82,105 @@ def inject_settings(configs_dir, households_sample_size, chunk_size=None, def test_rng_access(): configs_dir = os.path.join(os.path.dirname(__file__), 'configs') - orca.add_injectable("configs_dir", configs_dir) - output_dir = os.path.join(os.path.dirname(__file__), 'output') - orca.add_injectable("output_dir", output_dir) + setup_dirs(configs_dir) - data_dir = os.path.join(os.path.dirname(__file__), 'data') - orca.add_injectable("data_dir", data_dir) + inject.add_injectable('rng_base_seed', 0) - inject_settings(configs_dir, households_sample_size=HOUSEHOLDS_SAMPLE_SIZE) + pipeline.open_pipeline() - orca.clear_cache() + rng = pipeline.get_rn_generator() - pipeline.set_rn_generator_base_seed(0) + assert isinstance(rng, random.Random) - pipeline.open_pipeline() + pipeline.close_pipeline() + inject.clear_cache() - with pytest.raises(RuntimeError) as excinfo: - pipeline.set_rn_generator_base_seed(0) - assert "call set_rn_generator_base_seed before the first step" in str(excinfo.value) - rng = pipeline.get_rn_generator() +def regress_mini_auto(): - pipeline.close_pipeline() - orca.clear_cache() + # regression test: these are among the middle households in households table + # should be the same results as in run_mp (multiprocessing) test case + hh_ids = [932147, 982875, 983048, 1024353] + choices = [1, 1, 1, 0] + expected_choice = pd.Series(choices, index=pd.Index(hh_ids, name="household_id"), + name='auto_ownership') + auto_choice = pipeline.get_table("households").sort_index().auto_ownership -def test_mini_pipeline_run(): + offset = HOUSEHOLDS_SAMPLE_SIZE // 2 # choose something midway as hh_id ordered by hh size + print("auto_choice\n", auto_choice.head(offset).tail(4)) - configs_dir = os.path.join(os.path.dirname(__file__), 'configs') - orca.add_injectable("configs_dir", configs_dir) + auto_choice = auto_choice.reindex(hh_ids) - output_dir = os.path.join(os.path.dirname(__file__), 'output') - orca.add_injectable("output_dir", output_dir) + """ + auto_choice + household_id + 932147 1 + 982875 1 + 983048 1 + 1024353 0 + Name: auto_ownership, dtype: int64 + """ + pdt.assert_series_equal(auto_choice, expected_choice) - data_dir = os.path.join(os.path.dirname(__file__), 'data') - orca.add_injectable("data_dir", data_dir) - inject_settings(configs_dir, households_sample_size=HOUSEHOLDS_SAMPLE_SIZE) +def regress_mini_mtf(): - orca.clear_cache() + mtf_choice = pipeline.get_table("persons").sort_index().mandatory_tour_frequency - tracing.config_logger() + # these choices are for pure regression - their appropriateness has not been checked + per_ids = [2566698, 2877284, 2877287] + choices = ['work1', 'work_and_school', 'school1'] + expected_choice = pd.Series(choices, index=pd.Index(per_ids, name='person_id'), + name='mandatory_tour_frequency') + + mtf_choice = mtf_choice[mtf_choice != ''] # drop null (empty string) choices + + offset = len(mtf_choice) // 2 # choose something midway as hh_id ordered by hh size + print("mtf_choice\n", mtf_choice.head(offset).tail(5)) + + """ + mtf_choice + person_id + 2458502 school1 + 2458503 school1 + 2566698 work1 + 2877284 work_and_school + 2877287 school1 + Name: mandatory_tour_frequency, dtype: object + """ + pdt.assert_series_equal(mtf_choice.reindex(per_ids), expected_choice) + + +def test_mini_pipeline_run(): + + configs_dir = os.path.join(os.path.dirname(__file__), 'configs') + + setup_dirs(configs_dir) - # assert len(orca.get_table("households").index) == HOUSEHOLDS_SAMPLE_SIZE + inject_settings(configs_dir, + households_sample_size=HOUSEHOLDS_SAMPLE_SIZE, + # use_shadow_pricing=True + ) _MODELS = [ - 'initialize', + 'initialize_landuse', 'compute_accessibility', - 'school_location_sample', - 'school_location_logsums', - 'school_location_simulate', - 'workplace_location_sample', - 'workplace_location_logsums', - 'workplace_location_simulate', + 'initialize_households', + 'school_location', + 'workplace_location', 'auto_ownership_simulate' ] pipeline.run(models=_MODELS, resume_after=None) - auto_choice = pipeline.get_table("households").auto_ownership - - # regression test: these are among the first 10 households in households table - hh_ids = [464138, 1918238, 2201602] - choices = [1, 2, 0] - expected_choice = pd.Series(choices, index=pd.Index(hh_ids, name="HHID"), - name='auto_ownership') - - print "auto_choice\n", auto_choice.head(10) - pdt.assert_series_equal(auto_choice[hh_ids], expected_choice) + regress_mini_auto() pipeline.run_model('cdap_simulate') pipeline.run_model('mandatory_tour_frequency') - mtf_choice = pipeline.get_table("persons").mandatory_tour_frequency - - # these choices are for pure regression - their appropriateness has not been checked - per_ids = [92233, 172595, 524152] - choices = ['work1', 'school1', 'work_and_school'] - expected_choice = pd.Series(choices, index=pd.Index(per_ids, name='PERID'), - name='mandatory_tour_frequency') - - print "mtf_choice\n", mtf_choice.dropna().head(20) - """ - mtf_choice - PERID - 92233 work1 - 92382 work1 - 92744 work2 - 92823 work1 - 93172 work1 - 172491 work2 - 172595 school1 - 172596 school1 - 327171 work1 - 327172 work1 - 327912 work1 - 481948 school1 - 481949 school1 - 481959 work1 - 481961 work1 - 523907 work2 - 524151 school1 - 524152 work_and_school - 524153 school1 - 821808 work1 - Name: mandatory_tour_frequency, dtype: object - """ - pdt.assert_series_equal(mtf_choice[per_ids], expected_choice) + regress_mini_mtf() # try to get a non-existant table with pytest.raises(RuntimeError) as excinfo: @@ -192,8 +193,7 @@ def test_mini_pipeline_run(): assert "not in checkpoints" in str(excinfo.value) pipeline.close_pipeline() - orca.clear_cache() - + inject.clear_cache() close_handlers() @@ -204,37 +204,21 @@ def test_mini_pipeline_run2(): # when we restart pipeline configs_dir = os.path.join(os.path.dirname(__file__), 'configs') - orca.add_injectable("configs_dir", configs_dir) - - output_dir = os.path.join(os.path.dirname(__file__), 'output') - orca.add_injectable("output_dir", output_dir) - data_dir = os.path.join(os.path.dirname(__file__), 'data') - orca.add_injectable("data_dir", data_dir) + setup_dirs(configs_dir) inject_settings(configs_dir, households_sample_size=HOUSEHOLDS_SAMPLE_SIZE) - orca.clear_cache() - # should be able to get this BEFORE pipeline is opened checkpoints_df = pipeline.get_checkpoints() prev_checkpoint_count = len(checkpoints_df.index) # print "checkpoints_df\n", checkpoints_df[['checkpoint_name']] - assert prev_checkpoint_count == 11 + assert prev_checkpoint_count == 8 pipeline.open_pipeline('auto_ownership_simulate') - auto_choice = pipeline.get_table("households").auto_ownership - - # regression test: these are the same as in test_mini_pipeline_run1 - hh_ids = [464138, 1918238, 2201602] - choices = [1, 2, 0] - expected_choice = pd.Series(choices, index=pd.Index(hh_ids, name="HHID"), - name='auto_ownership') - - print "auto_choice\n", auto_choice.head(4) - pdt.assert_series_equal(auto_choice[hh_ids], expected_choice) + regress_mini_auto() # try to run a model already in pipeline with pytest.raises(RuntimeError) as excinfo: @@ -245,23 +229,46 @@ def test_mini_pipeline_run2(): pipeline.run_model('cdap_simulate') pipeline.run_model('mandatory_tour_frequency') - mtf_choice = pipeline.get_table("persons").mandatory_tour_frequency - - # this is what we got in run 1 - per_ids = [92233, 172595, 524152] - choices = ['work1', 'school1', 'work_and_school'] - expected_choice = pd.Series(choices, index=pd.Index(per_ids, name='PERID'), - name='mandatory_tour_frequency') - - print "mtf_choice\n", mtf_choice.head(20) - pdt.assert_series_equal(mtf_choice[per_ids], expected_choice) + regress_mini_mtf() # should be able to get this before pipeline is closed (from existing open store) checkpoints_df = pipeline.get_checkpoints() assert len(checkpoints_df.index) == prev_checkpoint_count + # - write list of override_hh_ids to override_hh_ids.csv in data for use in next test + num_hh_ids = 10 + hh_ids = pipeline.get_table("households").head(num_hh_ids).index.values + hh_ids = pd.DataFrame({'household_id': hh_ids}) + + data_dir = inject.get_injectable('data_dir') + hh_ids.to_csv(os.path.join(data_dir, 'override_hh_ids.csv'), index=False, header=True) + pipeline.close_pipeline() - orca.clear_cache() + inject.clear_cache() + close_handlers() + + +def test_mini_pipeline_run3(): + + # test that hh_ids setting overrides household sampling + + configs_dir = os.path.join(os.path.dirname(__file__), 'configs') + setup_dirs(configs_dir) + inject_settings(configs_dir, hh_ids='override_hh_ids.csv') + + households = inject.get_table('households').to_frame() + + override_hh_ids = pd.read_csv(config.data_file_path('override_hh_ids.csv')) + + print("\noverride_hh_ids\n", override_hh_ids) + + print("\nhouseholds\n", households.index) + + assert households.shape[0] == override_hh_ids.shape[0] + assert households.index.isin(override_hh_ids.household_id).all() + + inject.clear_cache() + close_handlers() def full_run(resume_after=None, chunk_size=0, @@ -269,13 +276,8 @@ def full_run(resume_after=None, chunk_size=0, trace_hh_id=None, trace_od=None, check_for_variability=None): configs_dir = os.path.join(os.path.dirname(__file__), '..', '..', '..', 'example', 'configs') - orca.add_injectable("configs_dir", configs_dir) - data_dir = os.path.join(os.path.dirname(__file__), 'data') - orca.add_injectable("data_dir", data_dir) - - output_dir = os.path.join(os.path.dirname(__file__), 'output') - orca.add_injectable("output_dir", output_dir) + setup_dirs(configs_dir) settings = inject_settings( configs_dir, @@ -283,11 +285,8 @@ def full_run(resume_after=None, chunk_size=0, chunk_size=chunk_size, trace_hh_id=trace_hh_id, trace_od=trace_od, - check_for_variability=check_for_variability) - - orca.clear_cache() - - tracing.config_logger() + check_for_variability=check_for_variability, + use_shadow_pricing=False) # shadow pricing breaks replicability when sample_size varies MODELS = settings['models'] @@ -296,10 +295,6 @@ def full_run(resume_after=None, chunk_size=0, tours = pipeline.get_table('tours') tour_count = len(tours.index) - # pipeline.close_pipeline() - # - # orca.clear_cache() - return tour_count @@ -324,85 +319,58 @@ def get_trace_csv(file_name): return df -EXPECT_TOUR_COUNT = 186 +EXPECT_TOUR_COUNT = 203 def regress_tour_modes(tours_df): - mode_cols = ['tour_mode', 'person_id', 'tour_type', 'tour_num', 'tour_category'] + mode_cols = ['tour_mode', 'person_id', 'tour_type', + 'tour_num', 'tour_category'] tours_df = tours_df[tours_df.household_id == HH_ID] tours_df = tours_df.sort_values(by=['person_id', 'tour_category', 'tour_num']) - print "mode_df\n", tours_df[mode_cols] + print("mode_df\n", tours_df[mode_cols]) """ - tour_id tour_mode person_id tour_type tour_num tour_category + tour_mode person_id tour_type tour_num tour_category tour_id - 84543800 SHARED2FREE 2915303 othmaint 1 joint - 84543820 WALK 2915304 eat 1 atwork - 84543843 WALK_LOC 2915304 work 1 mandatory - 84543823 DRIVEALONEFREE 2915304 escort 1 non_mandatory - 84543897 WALK_LOC 2915306 school 1 mandatory - 84543900 SHARED2FREE 2915306 social 1 non_mandatory - 84543926 WALK_LOC 2915307 school 1 mandatory - 84543910 SHARED2FREE 2915307 escort 1 non_mandatory - 84543911 SHARED2FREE 2915307 escort 2 non_mandatory - 84543929 SHARED2FREE 2915307 social 3 non_mandatory - 84543955 WALK_LOC 2915308 school 1 mandatory - 84543957 WALK 2915308 shopping 1 non_mandatory - 84543953 SHARED2FREE 2915308 othdiscr 2 non_mandatory - 84543938 WALK 2915308 eatout 3 non_mandatory + 13327106 SHARED3FREE 325051 othdiscr 1 joint + 13327130 WALK 325051 work 1 mandatory + 13327131 SHARED2FREE 325051 work 2 mandatory + 13327155 WALK 325052 maint 1 atwork + 13327171 WALK 325052 work 1 mandatory + 13327138 WALK 325052 eatout 1 non_mandatory """ EXPECT_PERSON_IDS = [ - 2915303, - 2915304, - 2915304, - 2915304, - 2915306, - 2915306, - 2915307, - 2915307, - 2915307, - 2915307, - 2915308, - 2915308, - 2915308, - 2915308] + 325051, + 325051, + 325051, + 325052, + 325052, + 325052, + ] EXPECT_TOUR_TYPES = [ - 'othmaint', - 'eat', - 'work', - 'escort', - 'school', - 'social', - 'school', - 'escort', - 'escort', - 'social', - 'school', - 'shopping', 'othdiscr', - 'eatout'] + 'work', + 'work', + 'maint', + 'work', + 'eatout', + ] EXPECT_MODES = [ - 'SHARED2FREE', + 'SHARED3FREE', 'WALK', - 'WALK_LOC', - 'DRIVEALONEFREE', - 'WALK_LOC', 'SHARED2FREE', - 'WALK_LOC', - 'SHARED2FREE', - 'SHARED2FREE', - 'SHARED2FREE', - 'WALK_LOC', 'WALK', - 'SHARED2FREE', - 'WALK'] + 'WALK', + 'WALK', + ] + assert len(tours_df) == len(EXPECT_PERSON_IDS) assert (tours_df.person_id.values == EXPECT_PERSON_IDS).all() assert (tours_df.tour_type.values == EXPECT_TOUR_TYPES).all() assert (tours_df.tour_mode.values == EXPECT_MODES).all() @@ -410,6 +378,18 @@ def regress_tour_modes(tours_df): def regress(): + persons_df = pipeline.get_table('persons') + persons_df = persons_df[persons_df.household_id == HH_ID] + print("persons_df\n", persons_df[['value_of_time', 'distance_to_work']]) + + """ + persons_df + person_id value_of_time distance_to_work + person_id + 3249922 23.349532 0.62 + 3249923 23.349532 0.62 + """ + tours_df = pipeline.get_table('tours') regress_tour_modes(tours_df) @@ -435,7 +415,7 @@ def test_full_run1(): tour_count = full_run(trace_hh_id=HH_ID, check_for_variability=True, households_sample_size=HOUSEHOLDS_SAMPLE_SIZE) - print "tour_count", tour_count + print("tour_count", tour_count) assert(tour_count == EXPECT_TOUR_COUNT) @@ -460,7 +440,7 @@ def test_full_run2(): pipeline.close_pipeline() -def test_full_run_with_chunks(): +def test_full_run3_with_chunks(): # should get the same result with different chunk size @@ -478,7 +458,7 @@ def test_full_run_with_chunks(): pipeline.close_pipeline() -def test_full_run_stability(): +def test_full_run4_stability(): # hh should get the same result with different sample size @@ -493,8 +473,23 @@ def test_full_run_stability(): pipeline.close_pipeline() +def test_full_run5_singleton(): + + # should wrk with only one hh + + if SKIP_FULL_RUN: + return + + tour_count = full_run(trace_hh_id=HH_ID, + households_sample_size=1) + + regress() + + pipeline.close_pipeline() + + if __name__ == "__main__": - print "running test_full_run1" + print("running test_full_run1") test_full_run1() # teardown_function(None) diff --git a/activitysim/core/assign.py b/activitysim/core/assign.py index 552b56e3c..0bc5b37ca 100644 --- a/activitysim/core/assign.py +++ b/activitysim/core/assign.py @@ -1,18 +1,46 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import zip +from builtins import object +from future.utils import iteritems + import logging -import os +from collections import OrderedDict import numpy as np import pandas as pd from activitysim.core import util from activitysim.core import config +from activitysim.core import pipeline logger = logging.getLogger(__name__) +def uniquify_key(dict, key, template="{} ({})"): + """ + rename key so there are no duplicates with keys in dict + + e.g. if there is already a key named "dog", the second key will be reformatted to "dog (2)" + """ + n = 1 + new_key = key + while new_key in dict: + n += 1 + new_key = template.format(key, n) + + return new_key + + +def read_constant_spec(file_path): + + return pd.read_csv(file_path, comment='#', index_col='Expression') + + def evaluate_constants(expressions, constants): """ Evaluate a list of constant expressions - each one can depend on the one before @@ -36,44 +64,12 @@ def evaluate_constants(expressions, constants): # FIXME why copy? d = {} - for k, v in expressions.iteritems(): + for k, v in iteritems(expressions): d[k] = eval(str(v), d.copy(), constants) return d -def undupe_column_names(df, template="{} ({})"): - """ - rename df column names so there are no duplicates (in place) - - e.g. if there are two columns named "dog", the second column will be reformatted to "dog (2)" - - Parameters - ---------- - df : pandas.DataFrame - dataframe whose column names should be de-duplicated - template : template taking two arguments (old_name, int) to use to rename columns - - Returns - ------- - df : pandas.DataFrame - dataframe that was renamed in place, for convenience in chaining - """ - - new_names = [] - seen = set() - for name in df.columns: - n = 1 - new_name = name - while new_name in seen: - n += 1 - new_name = template.format(name, n) - new_names.append(new_name) - seen.add(new_name) - df.columns = new_names - return df - - def read_assignment_spec(fname, description_name="Description", target_name="Target", @@ -152,6 +148,7 @@ def local_utilities(): 'reindex': util.reindex, 'setting': config.setting, 'other_than': util.other_than, + 'rng': pipeline.get_rn_generator(), } return utility_dict @@ -199,13 +196,16 @@ def assign_variables(assignment_expressions, df, locals_dict, df_alias=None, tra np_logger = NumpyLogger(logger) - def is_local(target): + def is_throwaway(target): + return target == '_' + + def is_temp_scalar(target): return target.startswith('_') and target.isupper() def is_temp(target): return target.startswith('_') - def to_series(x, target=None): + def to_series(x): if x is None or np.isscalar(x): return pd.Series([x] * len(df.index), index=df.index) return x @@ -217,8 +217,8 @@ def to_series(x, target=None): # convert to numpy array so we can slice ndarrays as well as series trace_rows = np.asanyarray(trace_rows) if trace_rows.any(): - trace_results = [] - trace_assigned_locals = {} + trace_results = OrderedDict() + trace_assigned_locals = OrderedDict() # avoid touching caller's passed-in locals_d parameter (they may be looping) _locals_dict = local_utilities() @@ -228,25 +228,36 @@ def to_series(x, target=None): _locals_dict[df_alias] = df else: _locals_dict['df'] = df - local_keys = _locals_dict.keys() + local_keys = list(_locals_dict.keys()) + + # build a dataframe of eval results for non-temp targets + # since we allow targets to be recycled, we want to only keep the last usage + variables = OrderedDict() - target_history = [] # need to be able to identify which variables causes an error, which keeps # this from being expressed more parsimoniously for e in zip(assignment_expressions.target, assignment_expressions.expression): target, expression = e assert isinstance(target, str), \ - "expected target '%s' for expression '%s' to be string" % (target, expression) + "expected target '%s' for expression '%s' to be string not %s" % \ + (target, expression, type(target)) if target in local_keys: - logger.warn("assign_variables target obscures local_d name '%s'" % str(target)) - - if is_local(target): - x = eval(expression, globals(), _locals_dict) - _locals_dict[target] = x - if trace_assigned_locals is not None: - trace_assigned_locals[target] = x + logger.warning("assign_variables target obscures local_d name '%s'", str(target)) + + if is_temp_scalar(target) or is_throwaway(target): + try: + x = eval(expression, globals(), _locals_dict) + except Exception as err: + logger.error("assign_variables error: %s: %s", type(err).__name__, str(err)) + logger.error("assign_variables expression: %s = %s", str(target), str(expression)) + raise err + + if not is_throwaway(target): + _locals_dict[target] = x + if trace_assigned_locals is not None: + trace_assigned_locals[uniquify_key(trace_assigned_locals, target)] = x continue try: @@ -259,55 +270,35 @@ def to_series(x, target=None): # FIXME should whitelist globals for security? globals_dict = {} - values = to_series(eval(expression, globals_dict, _locals_dict), target=target) + expr_values = to_series(eval(expression, globals_dict, _locals_dict)) np.seterr(**save_err) np.seterrcall(saved_handler) except Exception as err: - logger.error("assign_variables error: %s: %s" % (type(err).__name__, str(err))) - - logger.error("assign_variables expression: %s = %s" - % (str(target), str(expression))) - - # values = to_series(None, target=target) + logger.error("assign_variables error: %s: %s", type(err).__name__, str(err)) + logger.error("assign_variables expression: %s = %s", str(target), str(expression)) raise err - target_history.append((target, values)) + if not is_temp(target): + variables[target] = expr_values if trace_results is not None: - trace_results.append((target, values[trace_rows])) + trace_results[uniquify_key(trace_results, target)] = expr_values[trace_rows] # update locals to allows us to ref previously assigned targets - _locals_dict[target] = values - - # build a dataframe of eval results for non-temp targets - # since we allow targets to be recycled, we want to only keep the last usage - # we scan through targets in reverse order and add them to the front of the list - # the first time we see them so they end up in execution order - variables = [] - seen = set() - for statement in reversed(target_history): - # statement is a tuple (, ) - target_name = statement[0] - if not is_temp(target_name) and target_name not in seen: - variables.insert(0, statement) - seen.add(target_name) - - # DataFrame from list of tuples [, ), ...] - variables = pd.DataFrame.from_items(variables) - # in case items were numpy arrays not pandas series, fix index - variables.index = df.index + _locals_dict[target] = expr_values if trace_results is not None: - trace_results = pd.DataFrame.from_items(trace_results) + trace_results = pd.DataFrame.from_dict(trace_results) trace_results.index = df[trace_rows].index - trace_results = undupe_column_names(trace_results) - # add df columns to trace_results trace_results = pd.concat([df[trace_rows], trace_results], axis=1) + # we stored result in dict - convert to df + variables = util.df_from_dict(variables, index=df.index) + return variables, trace_results, trace_assigned_locals diff --git a/activitysim/core/chunk.py b/activitysim/core/chunk.py index 7d50dc93b..5087affed 100644 --- a/activitysim/core/chunk.py +++ b/activitysim/core/chunk.py @@ -1,70 +1,216 @@ # ActivitySim # See full license in LICENSE.txt. -from math import ceil -import os +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from builtins import input + import logging +from collections import OrderedDict import numpy as np import pandas as pd -from .skim import SkimDictWrapper, SkimStackWrapper -from . import logit -from . import tracing -from . import pipeline from . import util +from . import mem logger = logging.getLogger(__name__) +# dict of table_dicts keyed by trace_label +# table_dicts are dicts tuples of {table_name: (elements, bytes, mem), ...} +CHUNK_LOG = OrderedDict() + +# array of chunk_size active CHUNK_LOG +CHUNK_SIZE = [] +EFFECTIVE_CHUNK_SIZE = [] + +HWM = [{}] + + +def GB(bytes): + # symbols = ('', 'K', 'M', 'G', 'T') + symbols = ('', ' KB', ' MB', ' GB', ' TB') + fmt = "%.1f%s" + for i, s in enumerate(symbols): + units = 1 << i * 10 + if bytes < units * 1024: + return fmt % (bytes / units, s) + + +def commas(x): + x = int(x) + if x < 10000: + return str(x) + result = '' + while x >= 1000: + x, r = divmod(x, 1000) + result = ",%03d%s" % (r, result) + return "%d%s" % (x, result) + + +def log_open(trace_label, chunk_size, effective_chunk_size): + + # nested chunkers should be unchunked + if len(CHUNK_LOG) > 0: + assert chunk_size == 0 + assert trace_label not in CHUNK_LOG + + logger.debug("log_open chunker %s chunk_size %s effective_chunk_size %s" % + (trace_label, commas(chunk_size), commas(effective_chunk_size))) + + CHUNK_LOG[trace_label] = OrderedDict() + CHUNK_SIZE.append(chunk_size) + EFFECTIVE_CHUNK_SIZE.append(effective_chunk_size) + + HWM.append({}) + + +def log_close(trace_label): + + assert CHUNK_LOG and next(reversed(CHUNK_LOG)) == trace_label + + logger.debug("log_close %s" % trace_label) + + # if we are closing base level chunker + if len(CHUNK_LOG) == 1: + log_write_hwm() + + label, _ = CHUNK_LOG.popitem(last=True) + assert label == trace_label + CHUNK_SIZE.pop() + EFFECTIVE_CHUNK_SIZE.pop() + + HWM.pop() + + +def log_df(trace_label, table_name, df): -def log_df_size(trace_label, table_name, df, cum_size): + if df is None: + # FIXME force_garbage_collect on delete? + mem.force_garbage_collect() + + cur_chunker = next(reversed(CHUNK_LOG)) + + if df is None: + CHUNK_LOG.get(cur_chunker).pop(table_name) + op = 'del' + + logger.debug("log_df del %s : %s " % (table_name, trace_label)) - if isinstance(df, pd.Series): - elements = df.shape[0] - bytes = df.memory_usage(index=True) - elif isinstance(df, pd.DataFrame): - elements = df.shape[0] * df.shape[1] - bytes = df.memory_usage(index=True).sum() else: - assert False - # logger.debug("%s #chunk log_df_size %s %s %s %s" % - # (trace_label, table_name, df.shape, elements, util.GB(bytes))) + shape = df.shape + elements = np.prod(shape) + op = 'add' + + if isinstance(df, pd.Series): + bytes = df.memory_usage(index=True) + elif isinstance(df, pd.DataFrame): + bytes = df.memory_usage(index=True).sum() + elif isinstance(df, np.ndarray): + bytes = df.nbytes + else: + logger.error("log_df %s unknown type: %s" % (table_name, type(df))) + assert False + + CHUNK_LOG.get(cur_chunker)[table_name] = (elements, bytes) + + # log this df + logger.debug("log_df add %s elements: %s bytes: %s shape: %s : %s " % + (table_name, commas(elements), GB(bytes), shape, trace_label)) + + total_elements, total_bytes = _chunk_totals() # new chunk totals + cur_mem = mem.get_memory_info() + hwm_trace_label = "%s.%s.%s" % (trace_label, op, table_name) + + # logger.debug("total_elements: %s, total_bytes: %s cur_mem: %s: %s " % + # (total_elements, GB(total_bytes), GB(cur_mem), hwm_trace_label)) + + mem.trace_memory_info(hwm_trace_label) + + # - check high_water_marks + + info = "elements: %s bytes: %s mem: %s chunk_size: %s effective_chunk_size: %s" % \ + (commas(total_elements), GB(total_bytes), GB(cur_mem), + commas(CHUNK_SIZE[0]), commas(EFFECTIVE_CHUNK_SIZE[0])) - if cum_size: - elements += cum_size[0] - bytes += cum_size[1] + check_hwm('elements', total_elements, info, hwm_trace_label) + check_hwm('bytes', total_bytes, info, hwm_trace_label) + check_hwm('mem', cur_mem, info, hwm_trace_label) - return elements, bytes +def _chunk_totals(): -def log_chunk_size(trace_label, cum): + total_elements = 0 + total_bytes = 0 + for label in CHUNK_LOG: + tables = CHUNK_LOG[label] + for table_name in tables: + elements, bytes = tables[table_name] + total_elements += elements + total_bytes += bytes - elements = cum[0] - bytes = cum[1] + return total_elements, total_bytes - logger.debug("%s #chunk CUM %s %s" % (trace_label, elements, util.GB(bytes))) - # logger.debug("%s %s" % (trace_label, util.memory_info())) + +def check_hwm(tag, value, info, trace_label): + + for d in HWM: + + hwm = d.setdefault(tag, {}) + + if value > hwm.get('mark', 0): + hwm['mark'] = value + hwm['info'] = info + hwm['trace_label'] = trace_label + + +def log_write_hwm(): + + d = HWM[0] + for tag in d: + hwm = d[tag] + logger.debug("#chunk_hwm high_water_mark %s: %s (%s) in %s" % + (tag, hwm['mark'], hwm['info'], hwm['trace_label']), ) + + # - elements shouldn't exceed chunk_size or effective_chunk_size of base chunker + def check_chunk_size(hwm, chunk_size, label, max_leeway): + elements = hwm['mark'] + if chunk_size and max_leeway and elements > chunk_size * max_leeway: # too high + logger.warning("#chunk_hwm total_elements (%s) > %s (%s) %s : %s " % + (commas(elements), label, commas(chunk_size), + hwm['info'], hwm['trace_label'])) + + # if we are in a chunker + if len(HWM) > 1 and HWM[1]: + assert 'elements' in HWM[1] # expect an 'elements' hwm dict for base chunker + hwm = HWM[1].get('elements') + check_chunk_size(hwm, EFFECTIVE_CHUNK_SIZE[0], 'effective_chunk_size', max_leeway=1.1) + check_chunk_size(hwm, CHUNK_SIZE[0], 'chunk_size', max_leeway=1) def rows_per_chunk(chunk_size, row_size, num_choosers, trace_label): - # closest number of chooser rows to achieve chunk_size - rpc = int(round(chunk_size / float(row_size))) + if chunk_size > 0: + # closest number of chooser rows to achieve chunk_size without exceeding + rpc = int(chunk_size / float(row_size)) + else: + rpc = num_choosers + rpc = max(rpc, 1) rpc = min(rpc, num_choosers) # chunks = int(ceil(num_choosers / float(rpc))) - # effective_chunk_size = row_size * rpc + effective_chunk_size = row_size * rpc + num_chunks = (num_choosers // rpc) + (num_choosers % rpc > 0) - # logger.debug("%s #chunk_calc chunk_size %s" % (trace_label, chunk_size)) - # logger.debug("%s #chunk_calc num_choosers %s" % (trace_label, num_choosers)) - # logger.debug("%s #chunk_calc total row_size %s" % (trace_label, row_size)) - # logger.debug("%s #chunk_calc rows_per_chunk %s" % (trace_label, rpc)) - # logger.debug("%s #chunk_calc effective_chunk_size %s" % (trace_label, effective_chunk_size)) - # logger.debug("%s #chunk_calc chunks %s" % (trace_label, chunks)) + logger.debug("#chunk_calc num_chunks: %s, rows_per_chunk: %s, " + "effective_chunk_size: %s, num_choosers: %s : %s" % + (num_chunks, rpc, effective_chunk_size, num_choosers, trace_label)) - return rpc + return rpc, effective_chunk_size def chunked_choosers(choosers, rows_per_chunk): @@ -117,7 +263,7 @@ def chunked_choosers_and_alts(choosers, alternatives, rows_per_chunk): """ # if not choosers.index.is_monotonic_increasing: - # logger.warn('chunked_choosers_and_alts sorting choosers because not monotonic increasing') + # logger.warning('sorting choosers because not monotonic increasing') # choosers = choosers.sort_index() # alternatives index should match choosers (except with duplicate repeating alt rows) diff --git a/activitysim/core/config.py b/activitysim/core/config.py index 710a50316..07b27f398 100644 --- a/activitysim/core/config.py +++ b/activitysim/core/config.py @@ -1,15 +1,86 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import argparse import os import yaml +import sys import logging from activitysim.core import inject logger = logging.getLogger(__name__) +""" + default injectables +""" + + +@inject.injectable(cache=True) +def locutor(): + # when multiprocessing, sometimes you only want one process to write trace files + # mp_tasks overrides this definition to designate a single sub-process as locutor + return True + + +@inject.injectable(cache=True) +def configs_dir(): + if not os.path.exists('configs'): + raise RuntimeError("configs_dir: directory does not exist") + return 'configs' + + +@inject.injectable(cache=True) +def data_dir(): + if not os.path.exists('data'): + raise RuntimeError("data_dir: directory does not exist") + return 'data' + + +@inject.injectable(cache=True) +def output_dir(): + if not os.path.exists('output'): + raise RuntimeError("output_dir: directory does not exist") + return 'output' + + +@inject.injectable() +def output_file_prefix(): + return '' + + +@inject.injectable(cache=True) +def pipeline_file_name(settings): + + pipeline_file_name = settings.get('pipeline_file_name', 'pipeline.h5') + + return pipeline_file_name + + +@inject.injectable() +def rng_base_seed(): + return 0 + + +def str2bool(v): + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + + +@inject.injectable(cache=True) +def settings(): + settings_dict = read_settings_file('settings.yaml', mandatory=True) + + return settings_dict + def handle_standard_args(parser=None): """ @@ -26,71 +97,91 @@ def handle_standard_args(parser=None): Returns ------- - args : parser.parse_args() result + injectables - array of injectables altered by args """ if parser is None: parser = argparse.ArgumentParser() - parser.add_argument("-c", "--config", help="path to config dir") + parser.add_argument("-c", "--config", help="path to config dir", action='append') parser.add_argument("-o", "--output", help="path to output dir") - parser.add_argument("-d", "--data", help="path to data dir") - parser.add_argument("-r", "--resume", help="resume after") - parser.add_argument("-m", "--models", help="models run_list_name in settings") + parser.add_argument("-d", "--data", help="path to data dir", action='append') + parser.add_argument("-r", "--resume", nargs='?', const='_', type=str, help="resume after") + parser.add_argument("-m", "--multiprocess", type=str2bool, nargs='?', const=True, + help="run multiprocess (boolean flag, no arg defaults to true)") + + parser.add_argument("-p", "--pipeline", help="pipeline file name") + args = parser.parse_args() + injectables = [] + + def override_injectable(name, value): + inject.add_injectable(name, value) + injectables.append(name) + + def override_setting(key, value): + new_settings = inject.get_injectable('settings') + new_settings[key] = value + inject.add_injectable('settings', new_settings) + if args.config: - if not os.path.exists(args.config): - raise IOError("Could not find configs dir '%s'." % args.config) - inject.add_injectable("configs_dir", args.config) + for dir in args.config: + if not os.path.exists(dir): + raise IOError("Could not find configs dir '%s'" % dir) + override_injectable("configs_dir", args.config) + + if args.data: + for dir in args.data: + if not os.path.exists(dir): + raise IOError("Could not find data dir '%s'" % dir) + override_injectable("data_dir", args.data) + if args.output: if not os.path.exists(args.output): raise IOError("Could not find output dir '%s'." % args.output) - inject.add_injectable("output_dir", args.output) - if args.data: - if not os.path.exists(args.data): - raise IOError("Could not find data dir '%s'." % args.data) - inject.add_injectable("data_dir", args.data) - if args.resume: - inject.add_injectable("resume_after", args.resume) - if args.models: - inject.add_injectable("run_list_name", args.models) + override_injectable("output_dir", args.output) - return args + if args.pipeline: + override_injectable("pipeline_file_name", args.pipeline) + # - do these after potentially overriding configs_dir + # FIXME we don't currently pass settings as an injectable to mp_tasks.run_multiprocess + # these two make it through as they are incorporated into the run_list by parent + # but if a more extensible capability is desired, settings could be passed in injectables + if args.resume is not None: + override_setting('resume_after', args.resume) + if args.multiprocess is not None: + override_setting('multiprocess', args.multiprocess) -def setting(key, default=None): - - settings = inject.get_injectable('settings') + return injectables - # explicit setting in settings file takes precedence - s = settings.get(key, None) - # if no setting, try injectable - if s is None: - s = inject.get_injectable(key, None) +def setting(key, default=None): - # otherwise fall back to supplied default - if s is None: - s = default + return inject.get_injectable('settings').get(key, default) - return s +def read_model_settings(file_name, mandatory=False): + """ -def read_model_settings(file_name): + Parameters + ---------- + file_name : str + yaml file name + mandatory : bool + throw error if file empty or not found + Returns + ------- - configs_dir = inject.get_injectable('configs_dir') + """ - settings = None - file_path = os.path.join(configs_dir, file_name) - if os.path.isfile(file_path): - with open(file_path) as f: - settings = yaml.load(f) + if not file_name.lower().endswith('.yaml'): + file_name = '%s.yaml' % (file_name, ) - if settings is None: - settings = {} + model_settings = read_settings_file(file_name, mandatory=mandatory) - return settings + return model_settings def get_model_constants(model_settings): @@ -135,3 +226,147 @@ def get_logit_model_settings(model_settings): raise RuntimeError("No NEST found in model spec for NL model type") return nests + + +def build_output_file_path(file_name, use_prefix=None): + output_dir = inject.get_injectable('output_dir') + + if use_prefix: + file_name = "%s-%s" % (use_prefix, file_name) + + file_path = os.path.join(output_dir, file_name) + + return file_path + + +def cascading_input_file_path(file_name, dir_list_injectable_name, mandatory=True): + + dir_list = inject.get_injectable(dir_list_injectable_name) + + if isinstance(dir_list, str): + dir_list = [dir_list] + + assert isinstance(dir_list, list) + + file_path = None + for dir in dir_list: + p = os.path.join(dir, file_name) + if os.path.isfile(p): + file_path = p + break + + if mandatory and not file_path: + raise RuntimeError("file_path %s: file '%s' not in %s" % + (dir_list_injectable_name, file_path, dir_list)) + + return file_path + + +def data_file_path(file_name, mandatory=True): + + return cascading_input_file_path(file_name, 'data_dir', mandatory) + + +def config_file_path(file_name, mandatory=True): + + return cascading_input_file_path(file_name, 'configs_dir', mandatory) + + +def output_file_path(file_name): + + prefix = inject.get_injectable('output_file_prefix', None) + return build_output_file_path(file_name, use_prefix=prefix) + + +def trace_file_path(file_name): + + output_dir = inject.get_injectable('output_dir') + + # - check for optional trace subfolder + if os.path.exists(os.path.join(output_dir, 'trace')): + output_dir = os.path.join(output_dir, 'trace') + else: + file_name = "trace.%s" % (file_name,) + + file_path = os.path.join(output_dir, file_name) + return file_path + + +def log_file_path(file_name): + + output_dir = inject.get_injectable('output_dir') + + # - check for optional log subfolder + if os.path.exists(os.path.join(output_dir, 'log')): + output_dir = os.path.join(output_dir, 'log') + + # - check for optional process name prefix + prefix = inject.get_injectable('log_file_prefix', None) + if prefix: + file_name = "%s-%s" % (prefix, file_name) + + file_path = os.path.join(output_dir, file_name) + + return file_path + + +def open_log_file(file_name, mode): + mode = mode + 'b' if sys.version_info < (3,) else mode + return open(log_file_path(file_name), mode) + + +def pipeline_file_path(file_name): + + prefix = inject.get_injectable('pipeline_file_prefix', None) + return build_output_file_path(file_name, use_prefix=prefix) + + +def read_settings_file(file_name, mandatory=True): + + def backfill_settings(settings, backfill): + new_settings = backfill.copy() + new_settings.update(settings) + return new_settings + + configs_dir = inject.get_injectable('configs_dir') + + if isinstance(configs_dir, str): + configs_dir = [configs_dir] + + assert isinstance(configs_dir, list) + + settings = {} + for dir in configs_dir: + file_path = os.path.join(dir, file_name) + if os.path.exists(file_path): + if settings: + logger.warn("read settings for %s from %s" % (file_name, file_path)) + + with open(file_path) as f: + s = yaml.load(f, Loader=yaml.SafeLoader) + settings = backfill_settings(settings, s) + + if s.get('inherit_settings', False): + logger.warn("inherit_settings flag set for %s in %s" % (file_name, file_path)) + continue + else: + break + + if mandatory and not settings: + raise RuntimeError("read_settings_file: no settings for '%s' in %s" % + (file_name, configs_dir)) + + return settings + + +def filter_warnings(): + """ + set warning filter to 'strict' if specified in settings + """ + + if setting('strict', False): # noqa: E402 + import warnings + warnings.filterwarnings('error', category=Warning) + warnings.filterwarnings('default', category=PendingDeprecationWarning, module='future') + warnings.filterwarnings('default', category=FutureWarning, module='pandas') + warnings.filterwarnings('default', category=RuntimeWarning, module='numpy') diff --git a/activitysim/core/inject.py b/activitysim/core/inject.py index b009f80fb..d4975d14b 100644 --- a/activitysim/core/inject.py +++ b/activitysim/core/inject.py @@ -1,7 +1,15 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from future.utils import iteritems + import logging -import pandas as pd -import orca +from . import orca _DECORATED_STEPS = {} _DECORATED_TABLES = {} @@ -50,24 +58,6 @@ def decorator(func): return decorator -# def column(table_name, cache=False): -# def decorator(func): -# name = func.__name__ -# -# logger.debug("inject column %s.%s" % (table_name, name)) -# -# column_key = (table_name, name) -# -# assert not _DECORATED_COLUMNS.get(column_key, False), \ -# "column '%s' already decorated." % name -# _DECORATED_COLUMNS[column_key] = {'func': func, 'cache': cache} -# -# orca.add_column(table_name, name, func, cache=cache) -# -# return func -# return decorator - - def injectable(cache=False, override=False): def decorator(func): name = func.__name__ @@ -94,14 +84,16 @@ def add_step(name, func): return orca.add_step(name, func) -def add_table(table_name, table, cache=False): +def add_table(table_name, table): - if orca.is_table(table_name): - logger.warn("inject add_table replacing existing table %s" % table_name) + if orca.is_table(table_name) and orca.table_type(table_name) == 'dataframe': + logger.warning("inject add_table replacing existing table %s" % table_name) + assert False - return orca.add_table(table_name, table, cache=cache) + return orca.add_table(table_name, table, cache=False) +# fixme remove? def add_column(table_name, column_name, column, cache=False): return orca.add_column(table_name, column_name, column, cache=cache) @@ -132,6 +124,11 @@ def get_injectable(name, default=_NO_DEFAULT): return default +def remove_injectable(name): + + orca._INJECTABLES.pop(name, None) + + def reinject_decorated_tables(): """ reinject the decorated tables (and columns) @@ -140,25 +137,29 @@ def reinject_decorated_tables(): logger.info("reinject_decorated_tables") # need to clear any non-decorated tables that were added during the previous run - orca.orca._TABLES.clear() - orca.orca._COLUMNS.clear() - orca.orca._TABLE_CACHE.clear() - orca.orca._COLUMN_CACHE.clear() + orca._TABLES.clear() + orca._COLUMNS.clear() + orca._TABLE_CACHE.clear() + orca._COLUMN_CACHE.clear() - for name, func in _DECORATED_TABLES.iteritems(): + for name, func in iteritems(_DECORATED_TABLES): logger.debug("reinject decorated table %s" % name) orca.add_table(name, func) - for column_key, args in _DECORATED_COLUMNS.iteritems(): + for column_key, args in iteritems(_DECORATED_COLUMNS): table_name, column_name = column_key logger.debug("reinject decorated column %s.%s" % (table_name, column_name)) orca.add_column(table_name, column_name, args['func'], cache=args['cache']) - for name, args in _DECORATED_INJECTABLES.iteritems(): + for name, args in iteritems(_DECORATED_INJECTABLES): logger.debug("reinject decorated injectable %s" % name) orca.add_injectable(name, args['func'], cache=args['cache']) +def clear_cache(): + return orca.clear_cache() + + def set_step_args(args=None): assert isinstance(args, dict) or args is None @@ -174,3 +175,9 @@ def get_step_arg(arg_name, default=_NO_DEFAULT): raise "step arg '%s' not found and no default" % arg_name return args.get(arg_name, default) + + +def dump_state(): + + print("_DECORATED_STEPS", list(_DECORATED_STEPS.keys())) + print("orca._STEPS", list(orca._STEPS.keys())) diff --git a/activitysim/core/inject_defaults.py b/activitysim/core/inject_defaults.py deleted file mode 100644 index 148f5c92d..000000000 --- a/activitysim/core/inject_defaults.py +++ /dev/null @@ -1,56 +0,0 @@ -# ActivitySim -# See full license in LICENSE.txt. - -import os -import logging - -import pandas as pd -import yaml - -from activitysim.core import inject - -logger = logging.getLogger(__name__) - - -@inject.injectable() -def configs_dir(): - if not os.path.exists('configs'): - raise RuntimeError("configs_dir: directory does not exist") - return 'configs' - - -@inject.injectable() -def data_dir(): - if not os.path.exists('data'): - raise RuntimeError("data_dir: directory does not exist") - return 'data' - - -@inject.injectable() -def output_dir(): - if not os.path.exists('output'): - raise RuntimeError("output_dir: directory does not exist") - return 'output' - - -@inject.injectable() -def extensions_dir(): - if not os.path.exists('extensions'): - raise RuntimeError("output_dir: directory does not exist") - return 'extensions' - - -@inject.injectable(cache=True) -def settings(configs_dir): - with open(os.path.join(configs_dir, 'settings.yaml')) as f: - return yaml.load(f) - - -@inject.injectable(cache=True) -def pipeline_path(output_dir, settings): - """ - Orca injectable to return the path to the pipeline hdf5 file based on output_dir and settings - """ - pipeline_file_name = settings.get('pipeline', 'pipeline.h5') - pipeline_file_path = os.path.join(output_dir, pipeline_file_name) - return pipeline_file_path diff --git a/activitysim/core/interaction_sample.py b/activitysim/core/interaction_sample.py index b078ac955..fd42683f0 100644 --- a/activitysim/core/interaction_sample.py +++ b/activitysim/core/interaction_sample.py @@ -1,13 +1,20 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + + +from builtins import range + import logging from math import ceil import numpy as np import pandas as pd -from activitysim.core.util import force_garbage_collect +from activitysim.core.mem import force_garbage_collect from . import logit from . import tracing @@ -16,7 +23,7 @@ from .interaction_simulate import eval_interaction_utilities -import pipeline +from . import pipeline logger = logging.getLogger(__name__) @@ -64,11 +71,11 @@ def make_sample_choices( probs = probs[~zero_probs] choosers = choosers[~zero_probs] - cum_probs_arr = probs.as_matrix().cumsum(axis=1) + cum_probs_arr = probs.values.cumsum(axis=1) # alt probs in convenient layout to return prob of chose alternative # (same layout as cum_probs_arr) - alt_probs_array = probs.as_matrix().flatten() + alt_probs_array = probs.values.flatten() # get sample_size rands for each chooser # transform as we iterate over alternatives @@ -133,7 +140,7 @@ def _interaction_sample( be merged with choosers because there are interaction terms or because alternatives are being sampled. - Parameters are same as for public function interaction_simulate + Parameters are same as for public function interaction_sa,ple spec : dataframe one row per spec expression and one col with utility coefficient @@ -183,13 +190,10 @@ def _interaction_sample( number of duplicate picks for chooser, alt """ - have_trace_targets = trace_label and tracing.has_trace_targets(choosers) + have_trace_targets = tracing.has_trace_targets(choosers) assert len(choosers.index) > 0 - if alt_col_name is None: - alt_col_name = 'alt_%s' % alternatives.index.name - if have_trace_targets: tracing.trace_df(choosers, tracing.extend_trace_label(trace_label, 'choosers')) tracing.trace_df(alternatives, tracing.extend_trace_label(trace_label, 'alternatives'), @@ -203,14 +207,14 @@ def _interaction_sample( if skims is not None: alternatives[alternatives.index.name] = alternatives.index - # cross join choosers and alternatives (cartesian product) + # - cross join choosers and alternatives (cartesian product) # for every chooser, there will be a row for each alternative # index values (non-unique) are from alternatives df alternative_count = alternatives.shape[0] interaction_df = \ logit.interaction_dataset(choosers, alternatives, sample_size=alternative_count) - cum_size = chunk.log_df_size(trace_label, 'interaction_df', interaction_df, cum_size=None) + chunk.log_df(trace_label, 'interaction_df', interaction_df) assert alternative_count == len(interaction_df.index) / len(choosers.index) @@ -232,12 +236,13 @@ def _interaction_sample( else: trace_rows = trace_ids = None + # interaction_utilities is a df with one utility column and one row per interaction_df row interaction_utilities, trace_eval_results \ = eval_interaction_utilities(spec, interaction_df, locals_d, trace_label, trace_rows) + chunk.log_df(trace_label, 'interaction_utilities', interaction_utilities) - # interaction_utilities is a df with one utility column and one row per interaction_df row - - cum_size = chunk.log_df_size(trace_label, 'interaction_utils', interaction_utilities, cum_size) + del interaction_df + chunk.log_df(trace_label, 'interaction_df', None) if have_trace_targets: tracing.trace_interaction_eval_results(trace_eval_results, trace_ids, @@ -252,10 +257,12 @@ def _interaction_sample( # reshape utilities (one utility column and one row per row in interaction_utilities) # to a dataframe with one row per chooser and one column per alternative utilities = pd.DataFrame( - interaction_utilities.as_matrix().reshape(len(choosers), alternative_count), + interaction_utilities.values.reshape(len(choosers), alternative_count), index=choosers.index) + chunk.log_df(trace_label, 'utilities', utilities) - cum_size = chunk.log_df_size(trace_label, 'utilities', utilities, cum_size) + del interaction_utilities + chunk.log_df(trace_label, 'interaction_utilities', None) if have_trace_targets: tracing.trace_df(utilities, tracing.extend_trace_label(trace_label, 'utilities'), @@ -267,8 +274,10 @@ def _interaction_sample( # probs is same shape as utilities, one row per chooser and one column for alternative probs = logit.utils_to_probs(utilities, allow_zero_probs=allow_zero_probs, trace_label=trace_label, trace_choosers=choosers) + chunk.log_df(trace_label, 'probs', probs) - cum_size = chunk.log_df_size(trace_label, 'probs', probs, cum_size) + del utilities + chunk.log_df(trace_label, 'utilities', None) if have_trace_targets: tracing.trace_df(probs, tracing.extend_trace_label(trace_label, 'probs'), @@ -280,6 +289,11 @@ def _interaction_sample( allow_zero_probs=allow_zero_probs, trace_label=trace_label) + chunk.log_df(trace_label, 'choices_df', choices_df) + + del probs + chunk.log_df(trace_label, 'probs', None) + # make_sample_choices should return choosers index as choices_df column assert choosers.index.name in choices_df.columns @@ -298,6 +312,7 @@ def _interaction_sample( # drop the duplicates choices_df = choices_df[~choices_df['pick_dup']] del choices_df['pick_dup'] + chunk.log_df(trace_label, 'choices_df', choices_df) # set index after groupby so we can trace on it choices_df.set_index(choosers.index.name, inplace=True) @@ -312,14 +327,13 @@ def _interaction_sample( # don't need this after tracing del choices_df['rand'] + chunk.log_df(trace_label, 'choices_df', choices_df) - # - #NARROW + # - NARROW choices_df['prob'] = choices_df['prob'].astype(np.float32) assert (choices_df['pick_count'].max() < 4294967295) or (choices_df.empty) choices_df['pick_count'] = choices_df['pick_count'].astype(np.uint32) - chunk.log_chunk_size(trace_label, cum_size) - return choices_df @@ -328,8 +342,8 @@ def calc_rows_per_chunk(chunk_size, choosers, alternatives, trace_label): num_choosers = choosers.shape[0] # if not chunking, then return num_choosers - if chunk_size == 0: - return num_choosers + # if chunk_size == 0: + # return num_choosers, 0 # all columns from choosers chooser_row_size = choosers.shape[1] @@ -355,7 +369,7 @@ def calc_rows_per_chunk(chunk_size, choosers, alternatives, trace_label): def interaction_sample( choosers, alternatives, spec, sample_size, - alt_col_name=None, allow_zero_probs=False, + alt_col_name, allow_zero_probs=False, skims=None, locals_d=None, chunk_size=0, trace_label=None): @@ -380,7 +394,7 @@ def interaction_sample( sample_size : int, optional Sample alternatives with sample of given size. By default is None, which does not sample alternatives. - alt_col_name: str or None + alt_col_name: str name to give the sampled_alternative column skims : Skims object The skims object is used to contain multiple matrices of @@ -417,13 +431,16 @@ def interaction_sample( trace_label = tracing.extend_trace_label(trace_label, 'interaction_sample') + # we return alternatives ordered in (index, alt_col_name) + # if choosers index is not ordered, it is probably a mistake, since the alts wont line up + assert alt_col_name is not None + assert choosers.index.is_monotonic + assert sample_size > 0 sample_size = min(sample_size, len(alternatives.index)) - rows_per_chunk = \ + rows_per_chunk, effective_chunk_size = \ calc_rows_per_chunk(chunk_size, choosers, alternatives, trace_label) - logger.info("interaction_sample chunk_size %s num_choosers %s rows_per_chunk %s" % - (chunk_size, choosers.shape[0], rows_per_chunk)) result_list = [] for i, num_chunks, chooser_chunk in chunk.chunked_choosers(choosers, rows_per_chunk): @@ -433,11 +450,15 @@ def interaction_sample( chunk_trace_label = tracing.extend_trace_label(trace_label, 'chunk_%s' % i) \ if num_chunks > 1 else trace_label + chunk.log_open(chunk_trace_label, chunk_size, effective_chunk_size) + choices = _interaction_sample(chooser_chunk, alternatives, spec, sample_size, alt_col_name, allow_zero_probs, skims, locals_d, chunk_trace_label) + chunk.log_close(chunk_trace_label) + if choices.shape[0] > 0: # might not be any if allow_zero_probs result_list.append(choices) diff --git a/activitysim/core/interaction_sample_simulate.py b/activitysim/core/interaction_sample_simulate.py index 95d49f4f5..3689d51c9 100644 --- a/activitysim/core/interaction_sample_simulate.py +++ b/activitysim/core/interaction_sample_simulate.py @@ -1,23 +1,29 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging +import gc + import numpy as np import pandas as pd from . import logit from . import tracing from . import chunk +from . import util +from . import mem from .simulate import set_skim_wrapper_targets -from activitysim.core.util import force_garbage_collect +from activitysim.core.mem import force_garbage_collect from .interaction_simulate import eval_interaction_utilities logger = logging.getLogger(__name__) -DUMP = False - def _interaction_sample_simulate( choosers, alternatives, spec, @@ -83,7 +89,7 @@ def _interaction_sample_simulate( last_repeat = alternatives.index != np.roll(alternatives.index, -1) assert (choosers.shape[0] == 1) or choosers.index.equals(alternatives.index[last_repeat]) - have_trace_targets = trace_label and tracing.has_trace_targets(choosers) + have_trace_targets = tracing.has_trace_targets(choosers) if have_trace_targets: tracing.trace_df(choosers, tracing.extend_trace_label(trace_label, 'choosers')) @@ -98,6 +104,7 @@ def _interaction_sample_simulate( if skims is not None: alternatives[alternatives.index.name] = alternatives.index + # - join choosers and alts # in vanilla interaction_simulate interaction_df is cross join of choosers and alternatives # interaction_df = logit.interaction_dataset(choosers, alternatives, sample_size) # here, alternatives is sparsely repeated once for each (non-dup) sample @@ -105,21 +112,10 @@ def _interaction_sample_simulate( # so we just need to left join alternatives with choosers assert alternatives.index.name == choosers.index.name - interaction_df = pd.merge( - alternatives, choosers, - left_index=True, right_index=True, - suffixes=('', '_r')) - - tracing.dump_df(DUMP, interaction_df, trace_label, 'interaction_df') + interaction_df = alternatives.join(choosers, how='left', rsuffix='_chooser') - if skims is not None: - set_skim_wrapper_targets(interaction_df, skims) + chunk.log_df(trace_label, 'interaction_df', interaction_df) - # evaluate expressions from the spec multiply by coefficients and sum - # spec is df with one row per spec expression and one col with utility coefficient - # column names of choosers match spec index values - # utilities has utility value for element in the cross product of choosers and alternatives - # interaction_utilities is a df with one utility column and one row per row in alternative if have_trace_targets: trace_rows, trace_ids = tracing.interaction_trace_rows(interaction_df, choosers) @@ -129,10 +125,20 @@ def _interaction_sample_simulate( else: trace_rows = trace_ids = None + if skims is not None: + set_skim_wrapper_targets(interaction_df, skims) + + # evaluate expressions from the spec multiply by coefficients and sum + # spec is df with one row per spec expression and one col with utility coefficient + # column names of choosers match spec index values + # utilities has utility value for element in the cross product of choosers and alternatives + # interaction_utilities is a df with one utility column and one row per row in alternative interaction_utilities, trace_eval_results \ = eval_interaction_utilities(spec, interaction_df, locals_d, trace_label, trace_rows) + chunk.log_df(trace_label, 'interaction_utilities', interaction_utilities) - tracing.dump_df(DUMP, interaction_utilities, trace_label, 'interaction_utilities') + del interaction_df + chunk.log_df(trace_label, 'interaction_df', None) if have_trace_targets: tracing.trace_interaction_eval_results(trace_eval_results, trace_ids, @@ -149,6 +155,7 @@ def _interaction_sample_simulate( # number of samples per chooser sample_counts = interaction_utilities.groupby(interaction_utilities.index).size().values + chunk.log_df(trace_label, 'sample_counts', sample_counts) # max number of alternatvies for any chooser max_sample_count = sample_counts.max() @@ -162,18 +169,28 @@ def _interaction_sample_simulate( # inserts is a list of the indices at which we want to do the insertions inserts = np.repeat(last_row_offsets, max_sample_count - sample_counts) + del sample_counts + chunk.log_df(trace_label, 'sample_counts', None) + # insert the zero-prob utilities to pad each alternative set to same size padded_utilities = np.insert(interaction_utilities.utility.values, inserts, -999) + del inserts + + del interaction_utilities + chunk.log_df(trace_label, 'interaction_utilities', None) # reshape to array with one row per chooser, one column per alternative padded_utilities = padded_utilities.reshape(-1, max_sample_count) + chunk.log_df(trace_label, 'padded_utilities', padded_utilities) # convert to a dataframe with one row per chooser and one column per alternative utilities_df = pd.DataFrame( padded_utilities, index=choosers.index) + chunk.log_df(trace_label, 'utilities_df', utilities_df) - tracing.dump_df(DUMP, utilities_df, trace_label, 'utilities_df') + del padded_utilities + chunk.log_df(trace_label, 'padded_utilities', None) if have_trace_targets: tracing.trace_df(utilities_df, tracing.extend_trace_label(trace_label, 'utilities'), @@ -183,13 +200,15 @@ def _interaction_sample_simulate( # probs is same shape as utilities, one row per chooser and one column for alternative probs = logit.utils_to_probs(utilities_df, allow_zero_probs=allow_zero_probs, trace_label=trace_label, trace_choosers=choosers) + chunk.log_df(trace_label, 'probs', probs) + + del utilities_df + chunk.log_df(trace_label, 'utilities_df', None) if have_trace_targets: tracing.trace_df(probs, tracing.extend_trace_label(trace_label, 'probs'), column_labels=['alternative', 'probability']) - tracing.dump_df(DUMP, probs, trace_label, 'probs') - if allow_zero_probs: zero_probs = (probs.sum(axis=1) == 0) if zero_probs.any(): @@ -199,7 +218,14 @@ def _interaction_sample_simulate( # make choices # positions is series with the chosen alternative represented as a column index in probs # which is an integer between zero and num alternatives in the alternative sample - positions, rands = logit.make_choices(probs, trace_label=trace_label, trace_choosers=choosers) + positions, rands = \ + logit.make_choices(probs, trace_label=trace_label, trace_choosers=choosers) + + chunk.log_df(trace_label, 'positions', positions) + chunk.log_df(trace_label, 'rands', rands) + + del probs + chunk.log_df(trace_label, 'probs', None) # shouldn't have chosen any of the dummy pad utilities assert positions.max() < max_sample_count @@ -209,28 +235,23 @@ def _interaction_sample_simulate( # tranche of this choosers alternatives created by cross join of alternatives and choosers # resulting pandas Int64Index has one element per chooser row and is in same order as choosers - choices = interaction_df[choice_column].take(positions + first_row_offsets) + choices = alternatives[choice_column].take(positions + first_row_offsets) # create a series with index from choosers and the index of the chosen alternative choices = pd.Series(choices, index=choosers.index) + chunk.log_df(trace_label, 'choices', choices) + if allow_zero_probs and zero_probs.any(): # FIXME this is kind of gnarly, patch choice for zero_probs choices.loc[zero_probs] = zero_prob_choice_val - tracing.dump_df(DUMP, choices, trace_label, 'choices') - if have_trace_targets: tracing.trace_df(choices, tracing.extend_trace_label(trace_label, 'choices'), columns=[None, trace_choice_name]) tracing.trace_df(rands, tracing.extend_trace_label(trace_label, 'rands'), columns=[None, 'rand']) - cum_size = chunk.log_df_size(trace_label, 'interaction_df', interaction_df, cum_size=None) - cum_size = chunk.log_df_size(trace_label, 'interaction_utils', interaction_utilities, cum_size) - - chunk.log_chunk_size(trace_label, cum_size) - return choices @@ -242,8 +263,8 @@ def calc_rows_per_chunk(chunk_size, choosers, alt_sample, spec, trace_label=None num_choosers = len(choosers.index) # if not chunking, then return num_choosers - if chunk_size == 0: - return num_choosers + # if chunk_size == 0: + # return num_choosers, 0 chooser_row_size = len(choosers.columns) @@ -317,12 +338,9 @@ def interaction_sample_simulate( trace_label = tracing.extend_trace_label(trace_label, 'interaction_sample_simulate') - rows_per_chunk = \ + rows_per_chunk, effective_chunk_size = \ calc_rows_per_chunk(chunk_size, choosers, alternatives, spec=spec, trace_label=trace_label) - logger.info("interaction_sample_simulate chunk_size %s num_choosers %s" - % (chunk_size, len(choosers.index))) - result_list = [] for i, num_chunks, chooser_chunk, alternative_chunk \ in chunk.chunked_choosers_and_alts(choosers, alternatives, rows_per_chunk): @@ -332,12 +350,16 @@ def interaction_sample_simulate( chunk_trace_label = tracing.extend_trace_label(trace_label, 'chunk_%s' % i) \ if num_chunks > 1 else trace_label + chunk.log_open(chunk_trace_label, chunk_size, effective_chunk_size) + choices = _interaction_sample_simulate( chooser_chunk, alternative_chunk, spec, choice_column, allow_zero_probs, zero_prob_choice_val, skims, locals_d, chunk_trace_label, trace_choice_name) + chunk.log_close(chunk_trace_label) + result_list.append(choices) force_garbage_collect() diff --git a/activitysim/core/interaction_simulate.py b/activitysim/core/interaction_simulate.py index 64357b33f..558cc270f 100644 --- a/activitysim/core/interaction_simulate.py +++ b/activitysim/core/interaction_simulate.py @@ -1,17 +1,27 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import zip + import logging import numpy as np import pandas as pd +from collections import OrderedDict from . import logit from . import tracing +from . import config from .simulate import set_skim_wrapper_targets from . import chunk +from . import mem + +from . import assign -from activitysim.core.util import force_garbage_collect +from activitysim.core.mem import force_garbage_collect logger = logging.getLogger(__name__) @@ -76,11 +86,11 @@ def to_series(x): # # convert to numpy array so we can slice ndarrays as well as series # trace_rows = np.asanyarray(trace_rows) assert type(trace_rows) == np.ndarray - trace_eval_results = [] + trace_eval_results = OrderedDict() else: trace_eval_results = None - check_for_variability = tracing.check_for_variability() + check_for_variability = config.setting('check_for_variability') # need to be able to identify which variables causes an error, which keeps # this from being expressed more parsimoniously @@ -91,6 +101,21 @@ def to_series(x): for expr, coefficient in zip(spec.index, spec.iloc[:, 0]): try: + # - allow temps of form _od_DIST@od_skim['DIST'] + if expr.startswith('_'): + target = expr[:expr.index('@')] + rhs = expr[expr.index('@') + 1:] + v = to_series(eval(rhs, globals(), locals_d)) + + # update locals to allows us to ref previously assigned targets + locals_d[target] = v + + if trace_eval_results is not None: + trace_eval_results[expr] = v[trace_rows] + + # mem.trace_memory_info("eval_interaction_utilities TEMP: %s" % expr) + continue + if expr.startswith('@'): v = to_series(eval(expr[1:], globals(), locals_d)) else: @@ -108,27 +133,32 @@ def to_series(x): utilities.utility += (v * coefficient).astype('float') if trace_eval_results is not None: - trace_eval_results.append((expr, - v[trace_rows])) - trace_eval_results.append(('partial utility (coefficient = %s)' % coefficient, - v[trace_rows]*coefficient)) + + # expressions should have been uniquified when spec was read + # (though we could do it here if need be...) + # expr = assign.uniquify_key(trace_eval_results, expr, template="{} # ({})") + assert expr not in trace_eval_results + + trace_eval_results[expr] = v[trace_rows] + k = 'partial utility (coefficient = %s) for %s' % (coefficient, expr) + trace_eval_results[k] = v[trace_rows] * coefficient except Exception as err: logger.exception("Variable evaluation failed for: %s" % str(expr)) raise err + # mem.trace_memory_info("eval_interaction_utilities: %s" % expr) + if no_variability > 0: - logger.warn("%s: %s columns have no variability" % (trace_label, no_variability)) + logger.warning("%s: %s columns have no variability" % (trace_label, no_variability)) if has_missing_vals > 0: - logger.warn("%s: %s columns have missing values" % (trace_label, has_missing_vals)) + logger.warning("%s: %s columns have missing values" % (trace_label, has_missing_vals)) if trace_eval_results is not None: + trace_eval_results['total utility'] = utilities.utility[trace_rows] - trace_eval_results.append(('total utility', - utilities.utility[trace_rows])) - - trace_eval_results = pd.DataFrame.from_items(trace_eval_results) + trace_eval_results = pd.DataFrame.from_dict(trace_eval_results) trace_eval_results.index = df[trace_rows].index # add df columns to trace_results @@ -190,7 +220,7 @@ def _interaction_simulate( """ trace_label = tracing.extend_trace_label(trace_label, 'interaction_simulate') - have_trace_targets = trace_label and tracing.has_trace_targets(choosers) + have_trace_targets = tracing.has_trace_targets(choosers) if have_trace_targets: tracing.trace_df(choosers, tracing.extend_trace_label(trace_label, 'choosers')) @@ -216,12 +246,11 @@ def _interaction_simulate( # for every chooser, there will be a row for each alternative # index values (non-unique) are from alternatives df interaction_df = logit.interaction_dataset(choosers, alternatives, sample_size) + chunk.log_df(trace_label, 'interaction_df', interaction_df) if skims is not None: set_skim_wrapper_targets(interaction_df, skims) - cum_size = chunk.log_df_size(trace_label, 'interaction_df', interaction_df, cum_size=None) - # evaluate expressions from the spec multiply by coefficients and sum # spec is df with one row per spec expression and one col with utility coefficient # column names of model_design match spec index values @@ -239,6 +268,7 @@ def _interaction_simulate( interaction_utilities, trace_eval_results \ = eval_interaction_utilities(spec, interaction_df, locals_d, trace_label, trace_rows) + chunk.log_df(trace_label, 'interaction_utilities', interaction_utilities) if have_trace_targets: tracing.trace_interaction_eval_results(trace_eval_results, trace_ids, @@ -251,8 +281,9 @@ def _interaction_simulate( # reshape utilities (one utility column and one row per row in model_design) # to a dataframe with one row per chooser and one column per alternative utilities = pd.DataFrame( - interaction_utilities.as_matrix().reshape(len(choosers), sample_size), + interaction_utilities.values.reshape(len(choosers), sample_size), index=choosers.index) + chunk.log_df(trace_label, 'utilities', utilities) if have_trace_targets: tracing.trace_df(utilities, tracing.extend_trace_label(trace_label, 'utilities'), @@ -263,6 +294,7 @@ def _interaction_simulate( # convert to probabilities (utilities exponentiated and normalized to probs) # probs is same shape as utilities, one row per chooser and one column for alternative probs = logit.utils_to_probs(utilities, trace_label=trace_label, trace_choosers=choosers) + chunk.log_df(trace_label, 'probs', probs) if have_trace_targets: tracing.trace_df(probs, tracing.extend_trace_label(trace_label, 'probs'), @@ -271,19 +303,21 @@ def _interaction_simulate( # make choices # positions is series with the chosen alternative represented as a column index in probs # which is an integer between zero and num alternatives in the alternative sample - positions, rands = logit.make_choices(probs, trace_label=trace_label, trace_choosers=choosers) + positions, rands = \ + logit.make_choices(probs, trace_label=trace_label, trace_choosers=choosers) + chunk.log_df(trace_label, 'positions', positions) + chunk.log_df(trace_label, 'rands', rands) # need to get from an integer offset into the alternative sample to the alternative index # that is, we want the index value of the row that is offset by rows into the # tranche of this choosers alternatives created by cross join of alternatives and choosers - # offsets is the offset into model_design df of first row of chooser alternatives offsets = np.arange(len(positions)) * sample_size - # resulting pandas Int64Index has one element per chooser row and is in same order as choosers + # resulting Int64Index has one element per chooser row and is in same order as choosers choices = interaction_utilities.index.take(positions + offsets) - # create a series with index from choosers and the index of the chosen alternative choices = pd.Series(choices, index=choosers.index) + chunk.log_df(trace_label, 'choices', choices) if have_trace_targets: tracing.trace_df(choices, tracing.extend_trace_label(trace_label, 'choices'), @@ -291,8 +325,6 @@ def _interaction_simulate( tracing.trace_df(rands, tracing.extend_trace_label(trace_label, 'rands'), columns=[None, 'rand']) - chunk.log_chunk_size(trace_label, cum_size) - return choices @@ -301,8 +333,8 @@ def calc_rows_per_chunk(chunk_size, choosers, alternatives, sample_size, skims, num_choosers = len(choosers.index) # if not chunking, then return num_choosers - if chunk_size == 0: - return num_choosers + # if chunk_size == 0: + # return num_choosers, 0 chooser_row_size = len(choosers.columns) @@ -382,14 +414,11 @@ def interaction_simulate( assert len(choosers) > 0 - rows_per_chunk = \ + rows_per_chunk, effective_chunk_size = \ calc_rows_per_chunk(chunk_size, choosers, alternatives=alternatives, sample_size=sample_size, skims=skims, trace_label=trace_label) - logger.info("interaction_simulate chunk_size %s num_choosers %s" % - (chunk_size, len(choosers.index))) - result_list = [] for i, num_chunks, chooser_chunk in chunk.chunked_choosers(choosers, rows_per_chunk): @@ -398,11 +427,15 @@ def interaction_simulate( chunk_trace_label = tracing.extend_trace_label(trace_label, 'chunk_%s' % i) \ if num_chunks > 1 else trace_label + chunk.log_open(chunk_trace_label, chunk_size, effective_chunk_size) + choices = _interaction_simulate(chooser_chunk, alternatives, spec, skims, locals_d, sample_size, chunk_trace_label, trace_choice_name) + chunk.log_close(chunk_trace_label) + result_list.append(choices) force_garbage_collect() diff --git a/activitysim/core/logit.py b/activitysim/core/logit.py index 752dc41c3..5fb273cd6 100644 --- a/activitysim/core/logit.py +++ b/activitysim/core/logit.py @@ -1,15 +1,18 @@ # ActivitySim # See full license in LICENSE.txt. -from __future__ import division +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import object import logging import numpy as np import pandas as pd -import tracing -import pipeline +from . import tracing +from . import pipeline logger = logging.getLogger(__name__) @@ -98,7 +101,9 @@ def utils_to_probs(utils, trace_label=None, exponentiated=False, allow_zero_prob """ trace_label = tracing.extend_trace_label(trace_label, 'utils_to_probs') - utils_arr = utils.as_matrix().astype('float') + # fixme - conversion to float not needed in either case? + # utils_arr = utils.values.astype('float') + utils_arr = utils.values if not exponentiated: utils_arr = np.exp(utils_arr) @@ -127,7 +132,8 @@ def utils_to_probs(utils, trace_label=None, exponentiated=False, allow_zero_prob trace_choosers=trace_choosers) # if allow_zero_probs, this may cause a RuntimeWarning: invalid value encountered in divide - with np.errstate(invalid='ignore' if allow_zero_probs else 'warn'): + with np.errstate(invalid='ignore' if allow_zero_probs else 'warn', + divide='ignore' if allow_zero_probs else 'warn'): np.divide(utils_arr, arr_sum.reshape(len(utils_arr), 1), out=utils_arr) PROB_MIN = 0.0 @@ -187,7 +193,7 @@ def make_choices(probs, trace_label=None, trace_choosers=None): rands = pipeline.get_rn_generator().random_for_df(probs) - probs_arr = probs.as_matrix().cumsum(axis=1) - rands + probs_arr = probs.values.cumsum(axis=1) - rands # rows, cols = np.where(probs_arr > 0) # choices = [s.iat[0] for _, s in pd.Series(cols).groupby(rows)] @@ -246,32 +252,15 @@ def interaction_dataset(choosers, alternatives, sample_size=None): sample = np.tile(alts_idx, numchoosers) alts_sample = alternatives.take(sample).copy() - alts_sample['chooser_idx'] = np.repeat(choosers.index.values, sample_size) logger.debug("interaction_dataset pre-merge choosers %s alternatives %s alts_sample %s" % (choosers.shape, alternatives.shape, alts_sample.shape)) - AVOID_PD_MERGE = True - if AVOID_PD_MERGE: - - for c in choosers.columns: - c_alts = ('%s_r' % c) if c in alts_sample.columns else c - alts_sample[c_alts] = np.repeat(choosers[c].values, sample_size) - - else: - - # FIXME - merge throws error trying to merge df with two many rows - may be a pandas bug? - # this sets limits to max chunk size - might work to merge in chunks and join - # no pressing as there is currently no obvious performance gain to larger chunk size - # DEBUG - merge choosers (564016, 4) alternatives (1443, 16) alts_sample (813875088, 17) - # - # File "..\pandas\core\internals.py", line 5573, in is_na - # for i in range(0, total_len, chunk_len): - # OverflowError: Python int too large to convert to C long - - alts_sample = pd.merge( - alts_sample, choosers, left_on='chooser_idx', right_index=True, - suffixes=('', '_r')) + # no need to do an expensive merge of alts and choosers + # we can simply assign repeated chooser values + for c in choosers.columns: + c_chooser = (c + '_chooser') if c in alts_sample.columns else c + alts_sample[c_chooser] = np.repeat(choosers[c].values, sample_size) logger.debug("interaction_dataset merged alts_sample %s" % (alts_sample.shape, )) diff --git a/activitysim/core/mem.py b/activitysim/core/mem.py new file mode 100644 index 000000000..7c2dcfe51 --- /dev/null +++ b/activitysim/core/mem.py @@ -0,0 +1,124 @@ + +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + + +import time +import datetime +import psutil +import logging +import gc + + +from activitysim.core import config + +logger = logging.getLogger(__name__) + +MEM = {} +HWM = {} +DEFAULT_TICK_LEN = 30 + + +def force_garbage_collect(): + gc.collect() + + +def GB(bytes): + return (bytes / (1024 * 1024 * 1024.0)) + + +def init_trace(tick_len=None, file_name="mem.csv"): + MEM['tick'] = 0 + if file_name is not None: + MEM['file_name'] = file_name + if tick_len is None: + MEM['tick_len'] = DEFAULT_TICK_LEN + else: + MEM['tick_len'] = tick_len + + logger.info("init_trace file_name %s" % file_name) + + +def trace_hwm(tag, value, timestamp, label): + + hwm = HWM.setdefault(tag, {}) + + if value > hwm.get('mark', 0): + hwm['mark'] = value + hwm['timestamp'] = timestamp + hwm['label'] = label + + +def log_hwm(): + + for tag in HWM: + hwm = HWM[tag] + logger.info("high water mark %s: %.2f timestamp: %s label: %s" % + (tag, hwm['mark'], hwm['timestamp'], hwm['label'])) + + with config.open_log_file(MEM['file_name'], 'a') as log_file: + for tag in HWM: + hwm = HWM[tag] + print("high water mark %s: %.2f timestamp: %s label: %s" % + (tag, hwm['mark'], hwm['timestamp'], hwm['label']), file=log_file) + + +def trace_memory_info(event=''): + + if not MEM: + return + + last_tick = MEM['tick'] + tick_len = MEM['tick_len'] or float('inf') + + t = time.time() + if (t - last_tick < tick_len) and not event: + return + + vmi = psutil.virtual_memory() + + if last_tick == 0: + with config.open_log_file(MEM['file_name'], 'w') as log_file: + print("time,rss,used,available,percent,event", file=log_file) + + MEM['tick'] = t + + current_process = psutil.Process() + rss = current_process.memory_info().rss + for child in current_process.children(recursive=True): + try: + rss += child.memory_info().rss + except (psutil.NoSuchProcess, psutil.AccessDenied) as e: + pass + + timestamp = datetime.datetime.now().strftime("%d/%m/%Y %H:%M:%S") + + trace_hwm('rss', GB(rss), timestamp, event) + trace_hwm('used', GB(vmi.used), timestamp, event) + + # logger.debug("memory_info: rss: %s available: %s percent: %s" + # % (GB(mi.rss), GB(vmi.available), GB(vmi.percent))) + + with config.open_log_file(MEM['file_name'], 'a') as output_file: + + print("%s, %.2f, %.2f, %.2f, %s%%, %s" % + (timestamp, + GB(rss), + GB(vmi.used), + GB(vmi.available), + vmi.percent, + event), file=output_file) + + +def get_memory_info(): + + mi = psutil.Process().memory_info() + + # cur_mem = mi.vms + cur_mem = mi.rss + + return cur_mem diff --git a/activitysim/core/mp_tasks.py b/activitysim/core/mp_tasks.py new file mode 100644 index 000000000..20222755d --- /dev/null +++ b/activitysim/core/mp_tasks.py @@ -0,0 +1,1587 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from future.utils import iteritems + +import sys +import os +import time +import logging +import multiprocessing +import cProfile + +from collections import OrderedDict + +import yaml +import numpy as np +import pandas as pd + +from activitysim.core import inject +from activitysim.core import tracing +from activitysim.core import pipeline +from activitysim.core import config + +from activitysim.core import chunk +from activitysim.core import mem + +from activitysim.core.config import setting + +# activitysim.abm imported for its side-effects (dependency injection) +from activitysim import abm + +from activitysim.abm.tables import skims +from activitysim.abm.tables import shadow_pricing + + +logger = logging.getLogger(__name__) + +LAST_CHECKPOINT = '_' + +""" +mp_tasks - activitysim multiprocessing overview + +Activitysim runs a list of models sequentially, performing various computational operations +on tables. Model steps can modify values in existing tables, add columns, or create additional +tables. Activitysim provides the facility, via expression files, to specify vectorized operations +on data tables. The ability to vectorize operations depends upon the independence of the +computations performed on the vectorized elements. + +Python is agonizingly slow performing scalar operations sequentially on large datasets, so +vectorization (using pandas and/or numpy) is essential for good performance. + +Fortunately most activity based model simulation steps are row independent at the household, +person, tour, or trip level. The decisions for one household are independent of the choices +made by other households. Thus it is (generally speaking) possible to run an entire simulation +on a household sample with only one household, and get the same result for that household as +you would running the simulation on a thousand households. (See the shared data section below +for an exception to this highly convenient situation.) + +The random number generator supports this goal by providing streams of random numbers +for each households and person that are mutually independent and repeatable across model runs +and processes. + +To the extent that simulation model steps are row independent, we can implement most simulations +as a series of vectorized operations on pandas DataFrames and numpy arrays. These vectorized +operations are much faster than sequential python because they are implemented by native code +(compiled C) and are to some extent multi-threaded. But the benefits of numpy multi-processing are +limited because they only apply to atomic numpy or pandas calls, and as soon as control returns +to python it is single-threaded and slow. + +Multi-threading is not an attractive strategy to get around the python performance problem because +of the limitations imposed by python's global interpreter lock (GIL). Rather than struggling with +python multi-threading, this module uses the python multiprocessing to parallelize certain models. + +Because of activitysim's modular and extensible architecture, we don't hardwire the multiprocessing +architecture. The specification of which models should be run in parallel, how many processers +should be used, and the segmentation of the data between processes are all specified in the +settings config file. For conceptual simplicity, the single processing model as treated as +dominant (because even though in practice multiprocessing may be the norm for production runs, +the single-processing model will be used in development and debugging and keeping it dominant +will tend to concentrate the multiprocessing-specific code in one place and prevent multiprocessing +considerations from permeating the code base obscuring the model-specific logic. + +The primary function of the multiprocessing settings are to identify distinct stages of +computation, and to specify how many simultaneous processes should be used to perform them, +and how the data to be treated should be apportioned between those processes. We assume that +the data can be apportioned between subprocesses according to the index of a single primary table +(e.g. households) or else are by derivative or dependent tables that reference that table's index +(primary key) with a ref_col (foreign key) sharing the name of the primary table's key. + +Generally speaking, we assume that any new tables that are created are directly dependent on the +previously existing tables, and all rows in new tables are either attributable to previously +existing rows in the pipeline tables, or are global utility tables that are identical across +sub-processes. + +Note: There are a few exceptions to 'row independence', such as school and location choice models, +where the model behavior is externally constrained or adjusted. For instance, we want school +location choice to match known aggregate school enrollments by zone. Similarly, a parking model +(not yet implemented) might be constrained by availability. These situations require special +handling. + +:: + + models: + ### mp_initialize step + - initialize_landuse + - compute_accessibility + - initialize_households + ### mp_households step + - school_location + - workplace_location + - auto_ownership_simulate + - free_parking + ### mp_summarize step + - write_tables + + multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_households + begin: school_location + num_processes: 2 + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_tables + +The multiprocess_steps setting above annotates the models list to indicate that the simulation +should be broken into three steps. + +The first multiprocess_step (mp_initialize) begins with the initialize_landuse step and is +implicity single-process because there is no 'slice' key indicating how to apportion the tables. +This first step includes all models listed in the 'models' setting up until the first step +in the next multiprocess_steps. + +The second multiprocess_step (mp_households) starts with the school location model and continues +through auto_ownership_simulate. The 'slice' info indicates that the tables should be sliced by +households, and that persons is a dependent table and so and persons with a ref_col (foreign key +column with the same name as the Households table index) referencing a household record should be +taken to 'belong' to that household. Similarly, any other table that either share an index +(i.e. having the same name) with either the households or persons table, or have a ref_col to +either of their indexes, should also be considered a dependent table. + +The num_processes setting of 2 indicates that the pipeline should be split in two, and half of the +households should be apportioned into each subprocess pipeline, and all dependent tables should +likewise be apportioned accordingly. All other tables (e.g. land_use) that do share an index (name) +or have a ref_col should be considered mirrored and be included in their entirety. + +The primary table is sliced by num_processes-sized strides. (e.g. for num_processes == 2, the +sub-processes get every second record starting at offsets 0 and 1 respectively. All other dependent +tables slices are based (directly or indirectly) on this primary stride segmentation of the primary +table index. + +Two separate sub-process are launched (num_processes == 2) and each passed the name of their +apportioned pipeline file. They execute independently and if they terminate successfully, their +contents are then coalesced into a single pipeline file whose tables should then be essentially +the same as it had been generated by a single process. + +We assume that any new tables that are created by the sub-processes are directly dependent on the +previously primary tables or are mirrored. Thus we can coalesce the sub-process pipelines by +concatenating the primary and dependent tables and simply retaining any copy of the mirrored tables +(since they should all be identical.) + +The third multiprocess_step (mp_summarize) then is handled in single-process mode and runs the +write_tables model, writing the results, but also leaving the tables in the pipeline, with +essentially the same tables and results as if the whole simulation had been run as a single process. + +""" + +""" +shared data + +Although multiprocessing subprocesses each have their (apportioned) pipeline, they also share some +data passed to them by the parent process. There are essentially two types of shared data. + +read-only shared data + +Skim files are read-only and take up a lot of RAM, so we share them across sub-processes, loading +them into shared-memory (multiprocessing.sharedctypes.RawArray) in the parent process and passing +them to the child sub-processes when they are launched/forked. (unlike ordinary python data, +sharedctypes are not pickled and reconstituted, but passed through to the subprocess by address +when launch/forked multiprocessing.Process. Since they are read-only, no Locks are required to +access their data safely. The receiving process needs to know to wrap them using numpy.frombuffer +but they can thereafter be treated as ordinary numpy arrays. + +read-write shared memory + +There are a few circumstances in which the assumption of row independence breaks down. +This happens if the model must respect some aggregated resource or constraint such as school +enrollments or parking availability. In these cases, the individual choice models have to be +influenced or constrained in light of aggregate choices. + +Currently school and workplace location choice are the only such aggregate constraints. +The details of these are handled by the shadow_pricing module (q.v.), and our only concern here +is the need to provide shared read-write data buffers for communication between processes. +It is worth noting here that the shared buffers are instances of multiprocessing.Array which +incorporates a multiprocessing.Lock object to mediate access of the underlying data. You might +think that the existence of such a lock would make shared access pretty straightforward, but +this is not the case as the level of locking is very low, reportedly not very performant, and +essentially useless in any event since we want to use numpy.frombuffer to wrap and handle them +as numpy arrays. The Lock is a convenient bundled locking primative, but shadow_pricing rolls +its own semaphore system using the Lock. + +FIXME - The code below knows that it need to allocate skim and shadow price buffers by calling +the appropriate methods in abm.tables.skims and abm.tables.shadow_pricing to allocate shared +buffers. This is not very extensible and should be generalized. + +""" + +# FIXME - pathological knowledge of abm.tables.skims and abm.tables.shadow_pricing (see note above) + + +""" +### child process methods (called within sub process) +""" + + +def pipeline_table_keys(pipeline_store): + """ + return dict of current (as of last checkpoint) pipeline tables + and their checkpoint-specific hdf5_keys + + This facilitates reading pipeline tables directly from a 'raw' open pandas.HDFStore without + opening it as a pipeline (e.g. when apportioning and coalescing pipelines) + + We currently only ever need to do this from the last checkpoint, so the ability to specify + checkpoint_name is not required, and thus omitted. + + Parameters + ---------- + pipeline_store : open hdf5 pipeline_store + + Returns + ------- + checkpoint_name : name of the checkpoint + checkpoint_tables : dict {: } + + """ + + checkpoints = pipeline_store[pipeline.CHECKPOINT_TABLE_NAME] + + # don't currently need this capability... + # if checkpoint_name: + # # specified checkpoint row as series + # i = checkpoints[checkpoints[pipeline.CHECKPOINT_NAME] == checkpoint_name].index[0] + # checkpoint = checkpoints.loc[i] + # else: + + # last checkpoint row as series + checkpoint = checkpoints.iloc[-1] + checkpoint_name = checkpoint.loc[pipeline.CHECKPOINT_NAME] + + # series with table name as index and checkpoint_name as value + checkpoint_tables = checkpoint[~checkpoint.index.isin(pipeline.NON_TABLE_COLUMNS)] + + # omit dropped tables with empty checkpoint name + checkpoint_tables = checkpoint_tables[checkpoint_tables != ''] + + # hdf5 key is / + checkpoint_tables = {table_name: pipeline.pipeline_table_key(table_name, checkpoint_name) + for table_name, checkpoint_name in iteritems(checkpoint_tables)} + + # checkpoint name and series mapping table name to hdf5 key for tables in that checkpoint + return checkpoint_name, checkpoint_tables + + +def build_slice_rules(slice_info, pipeline_tables): + """ + based on slice_info for current step from run_list, generate a recipe for slicing + the tables in the pipeline (passed in tables parameter) + + slice_info is a dict with two well-known keys: + 'tables': required list of table names (order matters!) + 'except': optional list of tables not to slice even if they have a sliceable index name + + Note: tables listed in slice_info must appear in same order and before any others in tables dict + + The index of the first table in the 'tables' list is the primary_slicer. Subsequent tables + are dependent (have a column with the sae + + Any other tables listed ar dependent tables with either ref_cols to the primary_slicer + or with the same index (i.e. having an index with the same name). This cascades, so any + tables dependent on the primary_table can in turn have dependent tables that will be sliced + by index or ref_col. + + For instance, if the primary_slicer is households, then persons can be sliced because it + has a ref_col to (column with the same same name as) the household table index. And the + tours table can be sliced since it has a ref_col to persons. Tables can also be sliced + by index. For instance the person_windows table can be sliced because it has an index with + the same names as the persons table. + + slice_info from multiprocess_steps + + :: + + slice: + tables: + - households + - persons + + tables from pipeline + + +-----------------+--------------+---------------+ + | Table Name | Index | ref_col | + +=================+==============+===============+ + | households | household_id | | + +-----------------+--------------+---------------+ + | persons | person_id | household_id | + +-----------------+--------------+---------------+ + | person_windows | person_id | | + +-----------------+--------------+---------------+ + | accessibility | zone_id | | + +-----------------+--------------+---------------+ + + generated slice_rules dict + + :: + + households: + slice_by: primary <- primary table is sliced in num_processors-sized strides + persons: + source: households + slice_by: column + column: household_id <- slice by ref_col (foreign key) to households + person_windows: + source: persons + slice_by: index <- slice by index of persons table + accessibility: + slice_by: <- mirrored (non-dependent) tables don't get sliced + land_use: + slice_by: + + + Parameters + ---------- + slice_info : dict + 'slice' info from run_list for this step + + pipeline_tables : dict {, } + dict of all tables from the pipeline keyed by table name + + Returns + ------- + slice_rules : dict + """ + + slicer_table_names = slice_info['tables'] + slicer_table_exceptions = slice_info.get('except', []) + primary_slicer = slicer_table_names[0] + + # - ensure that tables listed in slice_info appear in correct order and before any others + tables = OrderedDict([(table_name, None) for table_name in slice_info['tables']]) + + for table_name in pipeline_tables.keys(): + tables[table_name] = pipeline_tables[table_name] + + if primary_slicer not in tables: + raise RuntimeError("primary slice table '%s' not in pipeline" % primary_slicer) + + logger.debug("build_slice_rules tables %s", list(tables.keys())) + logger.debug("build_slice_rules primary_slicer %s", primary_slicer) + logger.debug("build_slice_rules slicer_table_names %s", slicer_table_names) + logger.debug("build_slice_rules slicer_table_exceptions %s", slicer_table_exceptions) + + # dict mapping slicer table_name to index name + # (also presumed to be name of ref col name in referencing table) + slicer_ref_cols = OrderedDict() + + # build slice rules for loaded tables + slice_rules = OrderedDict() + for table_name, df in iteritems(tables): + + rule = {} + if table_name == primary_slicer: + # slice primary apportion table + rule = {'slice_by': 'primary'} + elif table_name in slicer_table_exceptions: + rule['slice_by'] = None + else: + for slicer_table_name in slicer_ref_cols: + if df.index.name == tables[slicer_table_name].index.name: + # slice df with same index name as a known slicer + rule = {'slice_by': 'index', 'source': slicer_table_name} + else: + # if df has a column with same name as the ref_col (index) of a slicer? + try: + source, ref_col = next((t, c) + for t, c in iteritems(slicer_ref_cols) + if c in df.columns) + # then we can use that table to slice this df + rule = {'slice_by': 'column', + 'column': ref_col, + 'source': source} + except StopIteration: + rule['slice_by'] = None + + if rule['slice_by']: + # cascade sliceability + slicer_ref_cols[table_name] = df.index.name + + slice_rules[table_name] = rule + + for table_name in slice_rules: + logger.debug("%s: %s", table_name, slice_rules[table_name]) + + return slice_rules + + +def apportion_pipeline(sub_proc_names, slice_info): + """ + apportion pipeline for multiprocessing step + + create pipeline files for sub_procs, apportioning data based on slice_rules + + Called at the beginning of a multiprocess step prior to launching the sub-processes + Pipeline files have well known names (pipeline file name prefixed by subjob name) + + Parameters + ---------- + sub_proc_names : list of str + names of the sub processes to apportion + slice_info : dict + slice_info from multiprocess_steps + + Returns + ------- + creates apportioned pipeline files for each sub job + """ + + pipeline_file_name = inject.get_injectable('pipeline_file_name') + + # get last checkpoint from first job pipeline + pipeline_path = config.build_output_file_path(pipeline_file_name) + + logger.debug("apportion_pipeline pipeline_path: %s", pipeline_path) + + # - load all tables from pipeline + tables = {} + with pd.HDFStore(pipeline_path, mode='r') as pipeline_store: + + checkpoints_df = pipeline_store[pipeline.CHECKPOINT_TABLE_NAME] + + # hdf5_keys is a dict mapping table_name to pipeline hdf5_key + checkpoint_name, hdf5_keys = pipeline_table_keys(pipeline_store) + + # ensure presence of slicer tables in pipeline + for table_name in slice_info['tables']: + if table_name not in hdf5_keys: + raise RuntimeError("slicer table %s not found in pipeline" % table_name) + + # load all tables from pipeline + for table_name, hdf5_key in iteritems(hdf5_keys): + # new checkpoint for all tables the same + checkpoints_df[table_name] = checkpoint_name + # load the dataframe + tables[table_name] = pipeline_store[hdf5_key] + + logger.debug("loaded table %s %s", table_name, tables[table_name].shape) + + # keep only the last row of checkpoints and patch the last checkpoint name + checkpoints_df = checkpoints_df.tail(1).copy() + checkpoints_df[list(tables.keys())] = checkpoint_name + + # - build slice rules for loaded tables + slice_rules = build_slice_rules(slice_info, tables) + + # - allocate sliced tables for each sub_proc + num_sub_procs = len(sub_proc_names) + for i in range(num_sub_procs): + + # use well-known pipeline file name + process_name = sub_proc_names[i] + pipeline_path = config.build_output_file_path(pipeline_file_name, use_prefix=process_name) + + # remove existing file + try: + os.unlink(pipeline_path) + except OSError: + pass + + with pd.HDFStore(pipeline_path, mode='a') as pipeline_store: + + # remember sliced_tables so we can cascade slicing to other tables + sliced_tables = {} + + # - for each table in pipeline + for table_name, rule in iteritems(slice_rules): + + df = tables[table_name] + + if rule['slice_by'] == 'primary': + # slice primary apportion table by num_sub_procs strides + # this hopefully yields a more random distribution + # (e.g.) households are ordered by size in input store + primary_df = df[np.asanyarray(list(range(df.shape[0]))) % num_sub_procs == i] + sliced_tables[table_name] = primary_df + elif rule['slice_by'] == 'index': + # slice a table with same index name as a known slicer + source_df = sliced_tables[rule['source']] + sliced_tables[table_name] = df.loc[source_df.index] + elif rule['slice_by'] == 'column': + # slice a table with a recognized slicer_column + source_df = sliced_tables[rule['source']] + sliced_tables[table_name] = df[df[rule['column']].isin(source_df.index)] + elif rule['slice_by'] is None: + # don't slice mirrored tables + sliced_tables[table_name] = df + else: + raise RuntimeError("Unrecognized slice rule '%s' for table %s" % + (rule['slice_by'], table_name)) + + # - write table to pipeline + hdf5_key = pipeline.pipeline_table_key(table_name, checkpoint_name) + pipeline_store[hdf5_key] = sliced_tables[table_name] + + logger.debug("writing checkpoints (%s) to %s in %s", + checkpoints_df.shape, pipeline.CHECKPOINT_TABLE_NAME, pipeline_path) + pipeline_store[pipeline.CHECKPOINT_TABLE_NAME] = checkpoints_df + + +def coalesce_pipelines(sub_proc_names, slice_info): + """ + Coalesce the data in the sub_processes apportioned pipelines back into a single pipeline + + We use slice_rules to distinguish sliced (apportioned) tables from mirrored tables. + + Sliced tables are concatenated to create a single omnibus table with data from all sub_procs + but mirrored tables are the same across all sub_procs, so we can grab a copy from any pipeline. + + Parameters + ---------- + sub_proc_names : list of str + slice_info : dict + slice_info from multiprocess_steps + + Returns + ------- + creates an omnibus pipeline with coalesced data from individual sub_proc pipelines + """ + + pipeline_file_name = inject.get_injectable('pipeline_file_name') + + logger.debug("coalesce_pipelines to: %s", pipeline_file_name) + + # - read all tables from first process pipeline + tables = {} + pipeline_path = config.build_output_file_path(pipeline_file_name, use_prefix=sub_proc_names[0]) + + with pd.HDFStore(pipeline_path, mode='r') as pipeline_store: + + # hdf5_keys is a dict mapping table_name to pipeline hdf5_key + checkpoint_name, hdf5_keys = pipeline_table_keys(pipeline_store) + + for table_name, hdf5_key in iteritems(hdf5_keys): + logger.debug("loading table %s %s", table_name, hdf5_key) + tables[table_name] = pipeline_store[hdf5_key] + + # - use slice rules followed by apportion_pipeline to identify mirrored tables + # (tables that are identical in every pipeline and so don't need to be concatenated) + slice_rules = build_slice_rules(slice_info, tables) + mirrored_table_names = [t for t, rule in iteritems(slice_rules) if rule['slice_by'] is None] + mirrored_tables = {t: tables[t] for t in mirrored_table_names} + omnibus_keys = {t: k for t, k in iteritems(hdf5_keys) if t not in mirrored_table_names} + + logger.debug("coalesce_pipelines to: %s", pipeline_file_name) + logger.debug("mirrored_table_names: %s", mirrored_table_names) + logger.debug("omnibus_keys: %s", omnibus_keys) + + # assemble lists of omnibus tables from all sub_processes + omnibus_tables = {table_name: [] for table_name in omnibus_keys} + for process_name in sub_proc_names: + pipeline_path = config.build_output_file_path(pipeline_file_name, use_prefix=process_name) + logger.info("coalesce pipeline %s", pipeline_path) + + with pd.HDFStore(pipeline_path, mode='r') as pipeline_store: + for table_name, hdf5_key in iteritems(omnibus_keys): + omnibus_tables[table_name].append(pipeline_store[hdf5_key]) + + pipeline.open_pipeline() + + # - add mirrored tables to pipeline + for table_name in mirrored_tables: + df = mirrored_tables[table_name] + logger.info("adding mirrored table %s %s", table_name, df.shape) + pipeline.replace_table(table_name, df) + + # - concatenate omnibus tables and add them to pipeline + for table_name in omnibus_tables: + df = pd.concat(omnibus_tables[table_name], sort=False) + logger.info("adding omnibus table %s %s", table_name, df.shape) + pipeline.replace_table(table_name, df) + + pipeline.add_checkpoint(checkpoint_name) + + pipeline.close_pipeline() + + +def setup_injectables_and_logging(injectables, locutor=True): + """ + Setup injectables (passed by parent process) within sub process + + we sometimes want only one of the sub-processes to perform an action (e.g. write shadow prices) + the locutor flag indicates that this sub process is the designated singleton spokesperson + + Parameters + ---------- + injectables : dict {: } + dict of injectables passed by parent process + locutor : bool + is this sub process the designated spokesperson + + Returns + ------- + injects injectables + """ + + for k, v in iteritems(injectables): + inject.add_injectable(k, v) + + inject.add_injectable("is_sub_task", True) + inject.add_injectable("locutor", locutor) + + config.filter_warnings() + + process_name = multiprocessing.current_process().name + inject.add_injectable("log_file_prefix", process_name) + tracing.config_logger() + + +def run_simulation(queue, step_info, resume_after, shared_data_buffer): + """ + run step models as subtask + + called once to run each individual sub process in multiprocess step + + Unless actually resuming resuming, resume_after will be None for first step, + and then FINAL for subsequent steps so pipelines opened to resume where previous step left off + + Parameters + ---------- + queue : multiprocessing.Queue + step_info : dict + step_info for current step from multiprocess_steps + resume_after : str or None + shared_data_buffer : dict + dict of shared data (e.g. skims and shadow_pricing) + """ + + models = step_info['models'] + chunk_size = step_info['chunk_size'] + # step_label = step_info['name'] + num_processes = step_info['num_processes'] + + inject.add_injectable('data_buffers', shared_data_buffer) + inject.add_injectable("chunk_size", chunk_size) + inject.add_injectable("num_processes", num_processes) + + if resume_after: + logger.info('resume_after %s', resume_after) + + # if they specified a resume_after model, check to make sure it is checkpointed + if resume_after != LAST_CHECKPOINT and \ + resume_after not in pipeline.get_checkpoints()[pipeline.CHECKPOINT_NAME].values: + # if not checkpointed, then fall back to last checkpoint + logger.info("resume_after checkpoint '%s' not in pipeline.", resume_after) + resume_after = LAST_CHECKPOINT + + pipeline.open_pipeline(resume_after) + last_checkpoint = pipeline.last_checkpoint() + + if last_checkpoint in models: + logger.info("Resuming model run list after %s", last_checkpoint) + models = models[models.index(last_checkpoint) + 1:] + + # preload any bulky injectables (e.g. skims) not in pipeline + inject.get_injectable('preload_injectables', None) + + t0 = tracing.print_elapsed_time() + for model in models: + + t1 = tracing.print_elapsed_time() + + try: + pipeline.run_model(model) + except Exception as e: + logger.warning("%s exception running %s model: %s", type(e).__name__, model, str(e), + exc_info=True) + raise e + + queue.put({'model': model, 'time': time.time()-t1}) + + tracing.print_elapsed_time("run (%s models)" % len(models), t0) + + pipeline.close_pipeline() + + +""" +### multiprocessing sub-process entry points +""" + + +def mp_run_simulation(locutor, queue, injectables, step_info, resume_after, **kwargs): + """ + mp entry point for run_simulation + + Parameters + ---------- + locutor + queue + injectables + step_info + resume_after : bool + kwargs : dict + shared_data_buffers passed as kwargs to avoid picking dict + """ + + shared_data_buffer = kwargs + # handle_standard_args() + + setup_injectables_and_logging(injectables, locutor) + + mem.init_trace(setting('mem_tick')) + + if step_info['num_processes'] > 1: + pipeline_prefix = multiprocessing.current_process().name + logger.debug("injecting pipeline_file_prefix '%s'", pipeline_prefix) + inject.add_injectable("pipeline_file_prefix", pipeline_prefix) + + run_simulation(queue, step_info, resume_after, shared_data_buffer) + + chunk.log_write_hwm() + mem.log_hwm() + + +def mp_apportion_pipeline(injectables, sub_proc_names, slice_info): + """ + mp entry point for apportion_pipeline + + Parameters + ---------- + injectables : dict + injectables from parent + sub_proc_names : list of str + names of the sub processes to apportion + slice_info : dict + slice_info from multiprocess_steps + """ + + setup_injectables_and_logging(injectables) + apportion_pipeline(sub_proc_names, slice_info) + + +def mp_setup_skims(injectables, **kwargs): + """ + Sub process to load skim data into shared_data + + There is no particular necessity to perform this in a sub process instead of the parent + except to ensure that this heavyweight task has no side-effects (e.g. loading injectables) + + Parameters + ---------- + injectables : dict + injectables from parent + kwargs : dict + shared_data_buffers passed as kwargs to avoid picking dict + """ + + shared_data_buffer = kwargs + setup_injectables_and_logging(injectables) + + omx_file_path = config.data_file_path(setting('skims_file')) + tags_to_load = setting('skim_time_periods')['labels'] + + skim_info = skims.get_skim_info(omx_file_path, tags_to_load) + skims.load_skims(omx_file_path, skim_info, shared_data_buffer) + + +def mp_coalesce_pipelines(injectables, sub_proc_names, slice_info): + """ + mp entry point for coalesce_pipeline + + Parameters + ---------- + injectables : dict + injectables from parent + sub_proc_names : list of str + names of the sub processes to apportion + slice_info : dict + slice_info from multiprocess_steps + """ + + setup_injectables_and_logging(injectables) + coalesce_pipelines(sub_proc_names, slice_info) + + +""" +### main (parent) process methods +""" + + +def allocate_shared_skim_buffers(): + """ + This is called by the main process to allocate shared memory buffer to share with subprocs + + Returns + ------- + skim_buffers : dict {: } + + """ + + logger.info("allocate_shared_skim_buffer") + + omx_file_path = config.data_file_path(setting('skims_file')) + tags_to_load = setting('skim_time_periods')['labels'] + + # select the skims to load + skim_info = skims.get_skim_info(omx_file_path, tags_to_load) + skim_buffers = skims.buffers_for_skims(skim_info, shared=True) + + return skim_buffers + + +def allocate_shared_shadow_pricing_buffers(): + """ + This is called by the main process and allocate memory buffer to share with subprocs + + Returns + ------- + multiprocessing.RawArray + """ + + logger.info("allocate_shared_shadow_pricing_buffers") + + shadow_pricing_info = shadow_pricing.get_shadow_pricing_info() + shadow_pricing_buffers = shadow_pricing.buffers_for_shadow_pricing(shadow_pricing_info) + + return shadow_pricing_buffers + + +def run_sub_simulations( + injectables, + shared_data_buffers, + step_info, process_names, + resume_after, previously_completed, fail_fast): + """ + Launch sub processes to run models in step according to specification in step_info. + + If resume_after is LAST_CHECKPOINT, then pick up where previous run left off, using breadcrumbs + from previous run. If some sub-processes completed in the prior run, then skip rerunning them. + + If resume_after specifies a checkpiont, skip checkpoints that precede the resume_after + + Drop 'completed' breadcrumbs for this run as sub-processes terminate + + Wait for all sub-processes to terminate and return list of those that completed successfully. + + Parameters + ---------- + injectables : dict + values to inject in subprocesses + shared_data_buffers : dict + dict of shared_data for sub-processes (e.g. skim and shadow pricing data) + step_info : dict + step_info from run_list + process_names : list of str + list of sub process names to in parallel + resume_after : str or None + name of simulation to resume after, or LAST_CHECKPOINT to resume where previous run left off + previously_completed : list of str + names of processes that successfully completed in previous run + fail_fast : bool + whether to raise error if a sub process terminates with nonzero exitcode + + Returns + ------- + completed : list of str + names of sub_processes that completed successfully + + """ + def log_queued_messages(): + for process, queue in zip(procs, queues): + while not queue.empty(): + msg = queue.get(block=False) + logger.info("%s %s : %s", process.name, msg['model'], + tracing.format_elapsed_time(msg['time'])) + mem.trace_memory_info("%s.%s.completed" % (process.name, msg['model'])) + + def check_proc_status(): + # we want to drop 'completed' breadcrumb when it happens, lest we terminate + # if fail_fast flag is set raise + for p in procs: + if p.exitcode is None: + pass # still running + elif p.exitcode == 0: + # completed successfully + if p.name not in completed: + logger.info("process %s completed", p.name) + completed.add(p.name) + drop_breadcrumb(step_name, 'completed', list(completed)) + mem.trace_memory_info("%s.completed" % p.name) + else: + # process failed + if p.name not in failed: + logger.info("process %s failed with exitcode %s", p.name, p.exitcode) + failed.add(p.name) + mem.trace_memory_info("%s.failed" % p.name) + if fail_fast: + raise RuntimeError("Process %s failed" % (p.name,)) + + def idle(seconds): + # idle for specified number of seconds, monitoring message queue and sub process status + log_queued_messages() + check_proc_status() + mem.trace_memory_info() + for _ in range(seconds): + time.sleep(1) + # log queued messages as they are received + log_queued_messages() + # monitor sub process status and drop breadcrumbs or fail_fast as they terminate + check_proc_status() + mem.trace_memory_info() + + step_name = step_info['name'] + + t0 = tracing.print_elapsed_time() + logger.info('run_sub_simulations step %s models resume_after %s', step_name, resume_after) + + # if resuming and some processes completed successfully in previous run + if previously_completed: + assert resume_after is not None + assert set(previously_completed).issubset(set(process_names)) + + if resume_after == LAST_CHECKPOINT: + # if we are resuming where previous run left off, then we can skip running + # any subprocudures that successfully complete the previous run + process_names = [name for name in process_names if name not in previously_completed] + logger.info('step %s: skipping %s previously completed subprocedures', + step_name, len(previously_completed)) + else: + # if we are resuming after a specific model, then force all subprocesses to run + # (assuming if they specified a model, they really want everything after that to run) + previously_completed = [] + + # if not the first step, resume_after the last checkpoint from the previous step + if resume_after is None and step_info['step_num'] > 0: + resume_after = LAST_CHECKPOINT + + num_simulations = len(process_names) + procs = [] + queues = [] + stagger_starts = step_info['stagger'] + + completed = set(previously_completed) + failed = set([]) # so we can log process failure first time it happens + drop_breadcrumb(step_name, 'completed', list(completed)) + + for i, process_name in enumerate(process_names): + q = multiprocessing.Queue() + spokesman = (i == 0) + p = multiprocessing.Process(target=mp_run_simulation, name=process_name, + args=(spokesman, q, injectables, step_info, resume_after,), + kwargs=shared_data_buffers) + procs.append(p) + queues.append(q) + + # - start processes + for i, p in zip(list(range(num_simulations)), procs): + if stagger_starts > 0 and i > 0: + logger.info("stagger process %s by %s seconds", p.name, stagger_starts) + idle(seconds=stagger_starts) + logger.info("start process %s", p.name) + p.start() + mem.trace_memory_info("%s.start" % p.name) + + # - idle logging queued messages and proc completion + while multiprocessing.active_children(): + idle(seconds=1) + idle(seconds=0) + + # no need to join() explicitly since multiprocessing.active_children joins completed procs + + for p in procs: + assert p.exitcode is not None + if p.exitcode: + logger.error("Process %s failed with exitcode %s", p.name, p.exitcode) + assert p.name in failed + else: + logger.info("Process %s completed with exitcode %s", p.name, p.exitcode) + assert p.name in completed + + t0 = tracing.print_elapsed_time('run_sub_simulations step %s' % step_name, t0) + + return list(completed) + + +def run_sub_task(p): + """ + Run process p synchroneously, + + Return when sub process terminates, or raise error if exitcode is nonzero + + Parameters + ---------- + p : multiprocessing.Process + """ + logger.info("running sub_process %s", p.name) + + mem.trace_memory_info("%s.start" % p.name) + + t0 = tracing.print_elapsed_time() + p.start() + + while multiprocessing.active_children(): + mem.trace_memory_info() + time.sleep(1) + + # no need to join explicitly since multiprocessing.active_children joins completed procs + # p.join() + + t0 = tracing.print_elapsed_time('sub_process %s' % p.name, t0) + # logger.info('%s.exitcode = %s' % (p.name, p.exitcode)) + + mem.trace_memory_info("%s.completed" % p.name) + + if p.exitcode: + logger.error("Process %s returned exitcode %s", p.name, p.exitcode) + raise RuntimeError("Process %s returned exitcode %s" % (p.name, p.exitcode)) + + +def drop_breadcrumb(step_name, crumb, value=True): + """ + Add (crumb: value) to specified step in breadcrumbs and flush breadcrumbs to file + run can be resumed with resume_after + + Breadcrumbs provides a record of steps that have been run for use when resuming + Basically, we want to know which steps have been run, which phases completed + (i.e. apportion, simulate, coalesce). For multi-processed simulate steps, we also + want to know which sub-processes completed successfully, because if resume_after + is LAST_CHECKPOINT we don't have to rerun the successful ones. + + Parameters + ---------- + step_name : str + crumb : str + value : yaml-writable value + + Returns + ------- + + """ + breadcrumbs = inject.get_injectable('breadcrumbs', OrderedDict()) + breadcrumbs.setdefault(step_name, {'name': step_name})[crumb] = value + inject.add_injectable('breadcrumbs', breadcrumbs) + write_breadcrumbs(breadcrumbs) + + +def run_multiprocess(run_list, injectables): + """ + run the steps in run_list, possibly resuming after checkpoint specified by resume_after + + Steps may be either single or multi process. + For multi-process steps, we need to apportion pipelines before running sub processes + and coalesce them afterwards + + injectables arg allows propagation of setting values that were overridden on the command line + (parent process command line arguments are not available to sub-processes in Windows) + + * allocate shared data buffers for skims and shadow_pricing + * load shared skim data from OMX files + * run each (single or multiprocess) step in turn + + Drop breadcrumbs along the way to facilitate resuming in a later run + + Parameters + ---------- + run_list : dict + annotated run_list (including prior run breadcrumbs if resuming) + injectables : dict + dict of values to inject in sub-processes + """ + + mem.init_trace(setting('mem_tick')) + mem.trace_memory_info("run_multiprocess.start") + + if not run_list['multiprocess']: + raise RuntimeError("run_multiprocess called but multiprocess flag is %s" % + run_list['multiprocess']) + + old_breadcrumbs = run_list.get('breadcrumbs', {}) + + # raise error if any sub-process fails without waiting for others to complete + fail_fast = setting('fail_fast') + logger.info("run_multiprocess fail_fast: %s", fail_fast) + + def skip_phase(phase): + skip = old_breadcrumbs and old_breadcrumbs.get(step_name, {}).get(phase, False) + if skip: + logger.info("Skipping %s %s", step_name, phase) + return skip + + def find_breadcrumb(crumb, default=None): + return old_breadcrumbs.get(step_name, {}).get(crumb, default) + + # - allocate shared data + shared_data_buffers = {} + + t0 = tracing.print_elapsed_time() + shared_data_buffers.update(allocate_shared_skim_buffers()) + t0 = tracing.print_elapsed_time('allocate shared skim buffer', t0) + mem.trace_memory_info("allocate_shared_skim_buffer.completed") + + # combine shared_skim_buffer and shared_shadow_pricing_buffer in shared_data_buffer + t0 = tracing.print_elapsed_time() + shared_data_buffers.update(allocate_shared_shadow_pricing_buffers()) + t0 = tracing.print_elapsed_time('allocate shared shadow_pricing buffer', t0) + mem.trace_memory_info("allocate_shared_shadow_pricing_buffers.completed") + + # - mp_setup_skims + run_sub_task( + multiprocessing.Process( + target=mp_setup_skims, name='mp_setup_skims', args=(injectables,), + kwargs=shared_data_buffers) + ) + t0 = tracing.print_elapsed_time('setup skims', t0) + + # - for each step in run list + for step_info in run_list['multiprocess_steps']: + + step_name = step_info['name'] + + num_processes = step_info['num_processes'] + slice_info = step_info.get('slice', None) + + if num_processes == 1: + sub_proc_names = [step_name] + else: + sub_proc_names = ["%s_%s" % (step_name, i) for i in range(num_processes)] + + # - mp_apportion_pipeline + if not skip_phase('apportion') and num_processes > 1: + run_sub_task( + multiprocessing.Process( + target=mp_apportion_pipeline, name='%s_apportion' % step_name, + args=(injectables, sub_proc_names, slice_info)) + ) + drop_breadcrumb(step_name, 'apportion') + + # - run_sub_simulations + if not skip_phase('simulate'): + resume_after = step_info.get('resume_after', None) + + previously_completed = find_breadcrumb('completed', default=[]) + + completed = run_sub_simulations(injectables, + shared_data_buffers, + step_info, + sub_proc_names, + resume_after, previously_completed, fail_fast) + + if len(completed) != num_processes: + raise RuntimeError("%s processes failed in step %s" % + (num_processes - len(completed), step_name)) + drop_breadcrumb(step_name, 'simulate') + + # - mp_coalesce_pipelines + if not skip_phase('coalesce') and num_processes > 1: + run_sub_task( + multiprocessing.Process( + target=mp_coalesce_pipelines, name='%s_coalesce' % step_name, + args=(injectables, sub_proc_names, slice_info)) + ) + drop_breadcrumb(step_name, 'coalesce') + + mem.log_hwm() + + +def get_breadcrumbs(run_list): + """ + Read, validate, and annotate breadcrumb file from previous run + + if resume_after specifies a model name, we need to determine which step it falls within, + drop any subsequent steps, and set the 'simulate' and 'coalesce' to None so + + Extract from breadcrumbs file showing completed mp_households step with 2 processes: + :: + + - apportion: true + completed: [mp_households_0, mp_households_1] + name: mp_households + simulate: true + coalesce: true + + + Parameters + ---------- + run_list : dict + validated and annotated run_list from settings + + Returns + ------- + breadcrumbs : dict + validated and annotated breadcrumbs file from previous run + """ + + resume_after = run_list['resume_after'] + assert resume_after is not None + + # - read breadcrumbs file from previous run + breadcrumbs = read_breadcrumbs() + + # - can't resume multiprocess without breadcrumbs file + if not breadcrumbs: + logger.error("empty breadcrumbs for resume_after '%s'", resume_after) + raise RuntimeError("empty breadcrumbs for resume_after '%s'" % resume_after) + + # if resume_after is specified by name + if resume_after != LAST_CHECKPOINT: + + # breadcrumbs for steps from previous run + previous_steps = list(breadcrumbs.keys()) + + # find the run_list step resume_after is in + resume_step = next((step for step in run_list['multiprocess_steps'] + if resume_after in step['models']), None) + + resume_step_name = resume_step['name'] + + if resume_step_name not in previous_steps: + logger.error("resume_after model '%s' not in breadcrumbs", resume_after) + raise RuntimeError("resume_after model '%s' not in breadcrumbs" % resume_after) + + # drop any previous_breadcrumbs steps after resume_step + for step in previous_steps[previous_steps.index(resume_step_name) + 1:]: + del breadcrumbs[step] + + # if resume_after is not the last model in the step + # then we need to rerun the simulations in that step, even if they succeeded + if resume_after in resume_step['models'][:-1]: + if 'simulate' in breadcrumbs[resume_step_name]: + breadcrumbs[resume_step_name]['simulate'] = None + if 'coalesce' in breadcrumbs[resume_step_name]: + breadcrumbs[resume_step_name]['coalesce'] = None + + multiprocess_step_names = [step['name'] for step in run_list['multiprocess_steps']] + if list(breadcrumbs.keys()) != multiprocess_step_names[:len(breadcrumbs)]: + raise RuntimeError("last run steps don't match run list: %s" % + list(breadcrumbs.keys())) + + return breadcrumbs + + +def get_run_list(): + """ + validate and annotate run_list from settings + + Assign defaults to missing settings (e.g. stagger, chunk_size) + Build individual step model lists based on step starts + If resuming, read breadcrumbs file for info on previous run execution status + + # annotated run_list with two steps, the second with 2 processors + + :: + + resume_after: None + multiprocess: True + models: + - initialize_landuse + - compute_accessibility + - initialize_households + - school_location + - workplace_location + + multiprocess_steps: + step: mp_initialize + begin: initialize_landuse + name: mp_initialize + models: + - initialize_landuse + - compute_accessibility + - initialize_households + num_processes: 1 + stagger: 5 + chunk_size: 0 + step_num: 0 + step: mp_households + begin: school_location + slice: {'tables': ['households', 'persons']} + name: mp_households + models: + - school_location + - workplace_location + num_processes: 2 + stagger: 5 + chunk_size: 10000 + step_num: 1 + + Returns + ------- + run_list : dict + validated and annotated run_list + """ + + models = setting('models', []) + multiprocess_steps = setting('multiprocess_steps', []) + + resume_after = inject.get_injectable('resume_after', None) or setting('resume_after', None) + multiprocess = inject.get_injectable('multiprocess', False) or setting('multiprocess', False) + + # default settings that can be overridden by settings in individual steps + global_chunk_size = setting('chunk_size', 0) + default_mp_processes = setting('num_processes', 0) or int(1 + multiprocessing.cpu_count() / 2.0) + default_stagger = setting('stagger', 0) + + if multiprocess and multiprocessing.cpu_count() == 1: + logger.warning("Can't multiprocess because there is only 1 cpu") + + run_list = { + 'models': models, + 'resume_after': resume_after, + 'multiprocess': multiprocess, + # 'multiprocess_steps': multiprocess_steps # add this later if multiprocess + } + + if not models or not isinstance(models, list): + raise RuntimeError('No models list in settings file') + if resume_after == models[-1]: + raise RuntimeError("resume_after '%s' is last model in models list" % resume_after) + + if multiprocess: + + if not multiprocess_steps: + raise RuntimeError("multiprocess setting is %s but no multiprocess_steps setting" % + multiprocess) + + # check step name, num_processes, chunk_size and presence of slice info + num_steps = len(multiprocess_steps) + step_names = set() + for istep in range(num_steps): + step = multiprocess_steps[istep] + + step['step_num'] = istep + + # - validate step name + name = step.get('name', None) + if not name: + raise RuntimeError("missing name for step %s" + " in multiprocess_steps" % istep) + if name in step_names: + raise RuntimeError("duplicate step name %s" + " in multiprocess_steps" % name) + step_names.add(name) + + # - validate num_processes and assign default + num_processes = step.get('num_processes', 0) + + if not isinstance(num_processes, int) or num_processes < 0: + raise RuntimeError("bad value (%s) for num_processes for step %s" + " in multiprocess_steps" % (num_processes, name)) + + if 'slice' in step: + if num_processes == 0: + logger.info("Setting num_processes = %s for step %s", num_processes, name) + num_processes = default_mp_processes + if num_processes > multiprocessing.cpu_count(): + logger.warning("num_processes setting (%s) greater than cpu count (%s", + num_processes, multiprocessing.cpu_count()) + else: + if num_processes == 0: + num_processes = 1 + if num_processes > 1: + raise RuntimeError("num_processes > 1 but no slice info for step %s" + " in multiprocess_steps" % name) + + multiprocess_steps[istep]['num_processes'] = num_processes + + # - validate chunk_size and assign default + chunk_size = step.get('chunk_size', None) + if chunk_size is None: + if global_chunk_size > 0 and num_processes > 1: + chunk_size = int(round(global_chunk_size / num_processes)) + chunk_size = max(chunk_size, 1) + else: + chunk_size = global_chunk_size + + multiprocess_steps[istep]['chunk_size'] = chunk_size + + # - validate stagger and assign default + multiprocess_steps[istep]['stagger'] = max(int(step.get('stagger', default_stagger)), 0) + + # - determine index in models list of step starts + start_tag = 'begin' + starts = [0] * len(multiprocess_steps) + for istep in range(num_steps): + step = multiprocess_steps[istep] + + name = step['name'] + + slice = step.get('slice', None) + if slice: + if 'tables' not in slice: + raise RuntimeError("missing tables list for step %s" + " in multiprocess_steps" % istep) + + start = step.get(start_tag, None) + if not name: + raise RuntimeError("missing %s tag for step '%s' (%s)" + " in multiprocess_steps" % + (start_tag, name, istep)) + if start not in models: + raise RuntimeError("%s tag '%s' for step '%s' (%s) not in models list" % + (start_tag, start, name, istep)) + + starts[istep] = models.index(start) + + if istep == 0 and starts[istep] != 0: + raise RuntimeError("%s tag '%s' for first step '%s' (%s)" + " is not first model in models list" % + (start_tag, start, name, istep)) + + if istep > 0 and starts[istep] <= starts[istep - 1]: + raise RuntimeError("%s tag '%s' for step '%s' (%s)" + " falls before that of prior step in models list" % + (start_tag, start, name, istep)) + + # - build individual step model lists based on starts + starts.append(len(models)) # so last step gets remaining models in list + for istep in range(num_steps): + step_models = models[starts[istep]: starts[istep + 1]] + + if step_models[-1][0] == LAST_CHECKPOINT: + raise RuntimeError("Final model '%s' in step %s models list not checkpointed" % + (step_models[-1], name)) + + multiprocess_steps[istep]['models'] = step_models + + run_list['multiprocess_steps'] = multiprocess_steps + + # - add resume breadcrumbs + if resume_after: + breadcrumbs = get_breadcrumbs(run_list) + if breadcrumbs: + run_list['breadcrumbs'] = breadcrumbs + + # - add resume_after to last step + if resume_after is not None: + # get_breadcrumbs should have deleted breadcrumbs for any subsequent steps + istep = len(breadcrumbs) - 1 + assert resume_after == LAST_CHECKPOINT or \ + resume_after in multiprocess_steps[istep]['models'] + multiprocess_steps[istep]['resume_after'] = resume_after + + # - write run list to output dir + # use log_file_path so we use (optional) log subdir and prefix process name + with config.open_log_file('run_list.txt', 'w') as f: + print_run_list(run_list, f) + + return run_list + + +def print_run_list(run_list, output_file=None): + """ + Print run_list to stdout or file (informational - not read back in) + + Parameters + ---------- + run_list : dict + output_file : open file + """ + + if output_file is None: + output_file = sys.stdout + + print("resume_after:", run_list['resume_after'], file=output_file) + print("multiprocess:", run_list['multiprocess'], file=output_file) + + print("models:", file=output_file) + for m in run_list['models']: + print(" - ", m, file=output_file) + + # - print multiprocess_steps + if run_list['multiprocess']: + print("\nmultiprocess_steps:", file=output_file) + for step in run_list['multiprocess_steps']: + print(" step:", step['name'], file=output_file) + for k in step: + if isinstance(step[k], list): + print(" %s:" % k, file=output_file) + for v in step[k]: + print(" -", v, file=output_file) + else: + print(" %s: %s" % (k, step[k]), file=output_file) + + # - print breadcrumbs + breadcrumbs = run_list.get('breadcrumbs') + if breadcrumbs: + print("\nbreadcrumbs:", file=output_file) + for step_name in breadcrumbs: + step = breadcrumbs[step_name] + print(" step:", step_name, file=output_file) + for k in step: + if isinstance(k, str): + print(" ", k, step[k], file=output_file) + else: + print(" ", k, file=output_file) + for v in step[k]: + print(" ", v, file=output_file) + + +def breadcrumbs_file_path(): + # return path to breadcrumbs file in output_dir + return config.build_output_file_path('breadcrumbs.yaml') + + +def read_breadcrumbs(): + """ + Read breadcrumbs file from previous run + + write_breadcrumbs wrote OrderedDict steps as list so ordered is preserved + (step names are duplicated in steps) + + Returns + ------- + breadcrumbs : OrderedDict + """ + file_path = breadcrumbs_file_path() + if not os.path.exists(file_path): + raise IOError("Could not find saved breadcrumbs file '%s'" % file_path) + with open(file_path, 'r') as f: + breadcrumbs = yaml.load(f, Loader=yaml.SafeLoader) + # convert array to ordered dict keyed by step name + breadcrumbs = OrderedDict([(step['name'], step) for step in breadcrumbs]) + return breadcrumbs + + +def write_breadcrumbs(breadcrumbs): + """ + Write breadcrumbs file with execution history of multiprocess run + + Write steps as array so order is preserved (step names are duplicated in steps) + + Extract from breadcrumbs file showing completed mp_households step with 2 processes: + :: + + - apportion: true + coalesce: true + completed: [mp_households_0, mp_households_1] + name: mp_households + simulate: true + + Parameters + ---------- + breadcrumbs : OrderedDict + """ + with open(breadcrumbs_file_path(), 'w') as f: + # write ordered dict as array + breadcrumbs = [step for step in list(breadcrumbs.values())] + yaml.dump(breadcrumbs, f) + + +def if_sub_task(if_is, if_isnt): + """ + select one of two values depending whether current process is primary process or subtask + + This is primarily intended for use in yaml files to select between (e.g.) logging levels + so main log file can display only warnings and errors from subtasks + + In yaml file, it can be used like this: + + level: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [WARNING, NOTSET] + + + Parameters + ---------- + if_is : (any type) value to return if process is a subtask + if_isnt : (any type) value to return if process is not a subtask + + Returns + ------- + (any type) (one of parameters if_is or if_isnt) + """ + + return if_is if inject.get_injectable('is_sub_task', False) else if_isnt diff --git a/activitysim/core/orca.py b/activitysim/core/orca.py new file mode 100644 index 000000000..9c35ee300 --- /dev/null +++ b/activitysim/core/orca.py @@ -0,0 +1,2133 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +try: + from inspect import getfullargspec as getargspec +except ImportError: + from inspect import getargspec +import logging +import warnings +from collections import Callable, namedtuple +from contextlib import contextmanager +from functools import wraps +import inspect + +import pandas as pd +import tables +import tlz as tz + +from collections import namedtuple + +warnings.filterwarnings('ignore', category=tables.NaturalNameWarning) +# logger = logging.getLogger(__name__) +logger = logging.getLogger('orca') + +_TABLES = {} +_COLUMNS = {} +_STEPS = {} +_BROADCASTS = {} +_INJECTABLES = {} + +_CACHING = True +_TABLE_CACHE = {} +_COLUMN_CACHE = {} +_INJECTABLE_CACHE = {} +_MEMOIZED = {} + +_CS_FOREVER = 'forever' +_CS_ITER = 'iteration' +_CS_STEP = 'step' + +CacheItem = namedtuple('CacheItem', ['name', 'value', 'scope']) + + +@contextmanager +def log_start_finish(msg, logger, level=logging.DEBUG): + """ + A context manager to log messages with "start: " and "finish: " + prefixes before and after a block. + + Parameters + ---------- + msg : str + Will be prefixed with "start: " and "finish: ". + logger : logging.Logger + level : int, optional + Level at which to log, passed to ``logger.log``. + + """ + # logger.log(level, 'start: ' + msg) + yield + # logger.log(level, 'finish: ' + msg) + + +def _func_source_data(func): + """ + Return data about a function source, including file name, + line number, and source code. + + Parameters + ---------- + func : object + May be anything support by the inspect module, such as a function, + method, or class. + + Returns + ------- + filename : str + lineno : int + The line number on which the function starts. + source : str + + """ + filename = inspect.getsourcefile(func) + lineno = inspect.getsourcelines(func)[1] + source = inspect.getsource(func) + + return filename, lineno, source + + +def clear_all(): + """ + Clear any and all stored state from Orca. + + """ + _TABLES.clear() + _COLUMNS.clear() + _STEPS.clear() + _BROADCASTS.clear() + _INJECTABLES.clear() + _TABLE_CACHE.clear() + _COLUMN_CACHE.clear() + _INJECTABLE_CACHE.clear() + for m in _MEMOIZED.values(): + m.value.clear_cached() + _MEMOIZED.clear() + logger.debug('pipeline state cleared') + + +def clear_cache(scope=None): + """ + Clear all cached data. + + Parameters + ---------- + scope : {None, 'step', 'iteration', 'forever'}, optional + Clear cached values with a given scope. + By default all cached values are removed. + + """ + if not scope: + _TABLE_CACHE.clear() + _COLUMN_CACHE.clear() + _INJECTABLE_CACHE.clear() + for m in _MEMOIZED.values(): + m.value.clear_cached() + logger.debug('pipeline cache cleared') + else: + for d in (_TABLE_CACHE, _COLUMN_CACHE, _INJECTABLE_CACHE): + items = tz.valfilter(lambda x: x.scope == scope, d) + for k in items: + del d[k] + for m in tz.filter(lambda x: x.scope == scope, _MEMOIZED.values()): + m.value.clear_cached() + logger.debug('cleared cached values with scope {!r}'.format(scope)) + + +def enable_cache(): + """ + Allow caching of registered variables that explicitly have + caching enabled. + + """ + global _CACHING + _CACHING = True + + +def disable_cache(): + """ + Turn off caching across Orca, even for registered variables + that have caching enabled. + + """ + global _CACHING + _CACHING = False + + +def cache_on(): + """ + Whether caching is currently enabled or disabled. + + Returns + ------- + on : bool + True if caching is enabled. + + """ + return _CACHING + + +@contextmanager +def cache_disabled(): + turn_back_on = True if cache_on() else False + disable_cache() + + yield + + if turn_back_on: + enable_cache() + + +# for errors that occur during Orca runs +class OrcaError(Exception): + pass + + +class DataFrameWrapper(object): + """ + Wraps a DataFrame so it can provide certain columns and handle + computed columns. + + Parameters + ---------- + name : str + Name for the table. + frame : pandas.DataFrame + copy_col : bool, optional + Whether to return copies when evaluating columns. + + Attributes + ---------- + name : str + Table name. + copy_col : bool + Whether to return copies when evaluating columns. + local : pandas.DataFrame + The wrapped DataFrame. + + """ + def __init__(self, name, frame, copy_col=True): + self.name = name + self.local = frame + self.copy_col = copy_col + + @property + def columns(self): + """ + Columns in this table. + + """ + return self.local_columns + list_columns_for_table(self.name) + + @property + def local_columns(self): + """ + Columns that are part of the wrapped DataFrame. + + """ + return list(self.local.columns) + + @property + def index(self): + """ + Table index. + + """ + return self.local.index + + def to_frame(self, columns=None): + """ + Make a DataFrame with the given columns. + + Will always return a copy of the underlying table. + + Parameters + ---------- + columns : sequence or string, optional + Sequence of the column names desired in the DataFrame. A string + can also be passed if only one column is desired. + If None all columns are returned, including registered columns. + + Returns + ------- + frame : pandas.DataFrame + + """ + extra_cols = _columns_for_table(self.name) + + if columns is not None: + columns = [columns] if isinstance(columns, str) else columns + columns = set(columns) + set_extra_cols = set(extra_cols) + local_cols = set(self.local.columns) & columns - set_extra_cols + df = self.local[list(local_cols)].copy() + extra_cols = {k: extra_cols[k] for k in (columns & set_extra_cols)} + else: + df = self.local.copy() + + with log_start_finish( + 'computing {!r} columns for table {!r}'.format( + len(extra_cols), self.name), + logger): + for name, col in extra_cols.items(): + with log_start_finish( + 'computing column {!r} for table {!r}'.format( + name, self.name), + logger): + df[name] = col() + + return df + + def update_col(self, column_name, series): + """ + Add or replace a column in the underlying DataFrame. + + Parameters + ---------- + column_name : str + Column to add or replace. + series : pandas.Series or sequence + Column data. + + """ + logger.debug('updating column {!r} in table {!r}'.format( + column_name, self.name)) + self.local[column_name] = series + + def __setitem__(self, key, value): + return self.update_col(key, value) + + def get_column(self, column_name): + """ + Returns a column as a Series. + + Parameters + ---------- + column_name : str + + Returns + ------- + column : pandas.Series + + """ + with log_start_finish( + 'getting single column {!r} from table {!r}'.format( + column_name, self.name), + logger): + extra_cols = _columns_for_table(self.name) + if column_name in extra_cols: + with log_start_finish( + 'computing column {!r} for table {!r}'.format( + column_name, self.name), + logger): + column = extra_cols[column_name]() + else: + column = self.local[column_name] + if self.copy_col: + return column.copy() + else: + return column + + def __getitem__(self, key): + return self.get_column(key) + + def __getattr__(self, key): + return self.get_column(key) + + def column_type(self, column_name): + """ + Report column type as one of 'local', 'series', or 'function'. + + Parameters + ---------- + column_name : str + + Returns + ------- + col_type : {'local', 'series', 'function'} + 'local' means that the column is part of the registered table, + 'series' means the column is a registered Pandas Series, + and 'function' means the column is a registered function providing + a Pandas Series. + + """ + extra_cols = list_columns_for_table(self.name) + + if column_name in extra_cols: + col = _COLUMNS[(self.name, column_name)] + + if isinstance(col, _SeriesWrapper): + return 'series' + elif isinstance(col, _ColumnFuncWrapper): + return 'function' + + elif column_name in self.local_columns: + return 'local' + + raise KeyError('column {!r} not found'.format(column_name)) + + def update_col_from_series(self, column_name, series, cast=False): + """ + Update existing values in a column from another series. + Index values must match in both column and series. Optionally + casts data type to match the existing column. + + Parameters + --------------- + column_name : str + series : panas.Series + cast: bool, optional, default False + """ + logger.debug('updating column {!r} in table {!r}'.format( + column_name, self.name)) + + col_dtype = self.local[column_name].dtype + if series.dtype != col_dtype: + if cast: + series = series.astype(col_dtype) + else: + err_msg = "Data type mismatch, existing:{}, update:{}" + err_msg = err_msg.format(col_dtype, series.dtype) + raise ValueError(err_msg) + + self.local.loc[series.index, column_name] = series + + def __len__(self): + return len(self.local) + + def clear_cached(self): + """ + Remove cached results from this table's computed columns. + + """ + _TABLE_CACHE.pop(self.name, None) + for col in _columns_for_table(self.name).values(): + col.clear_cached() + logger.debug('cleared cached columns for table {!r}'.format(self.name)) + + +class TableFuncWrapper(object): + """ + Wrap a function that provides a DataFrame. + + Parameters + ---------- + name : str + Name for the table. + func : callable + Callable that returns a DataFrame. + cache : bool, optional + Whether to cache the results of calling the wrapped function. + cache_scope : {'step', 'iteration', 'forever'}, optional + Scope for which to cache data. Default is to cache forever + (or until manually cleared). 'iteration' caches data for each + complete iteration of the pipeline, 'step' caches data for + a single step of the pipeline. + copy_col : bool, optional + Whether to return copies when evaluating columns. + + Attributes + ---------- + name : str + Table name. + cache : bool + Whether caching is enabled for this table. + copy_col : bool + Whether to return copies when evaluating columns. + + """ + def __init__( + self, name, func, cache=False, cache_scope=_CS_FOREVER, + copy_col=True): + self.name = name + self._func = func + self._argspec = getargspec(func) + self.cache = cache + self.cache_scope = cache_scope + self.copy_col = copy_col + self._columns = [] + self._index = None + self._len = 0 + + @property + def columns(self): + """ + Columns in this table. (May contain only computed columns + if the wrapped function has not been called yet.) + + """ + return self._columns + list_columns_for_table(self.name) + + @property + def local_columns(self): + """ + Only the columns contained in the DataFrame returned by the + wrapped function. (No registered columns included.) + + """ + if self._columns: + return self._columns + else: + self._call_func() + return self._columns + + @property + def index(self): + """ + Index of the underlying table. Will be None if that index is + unknown. + + """ + return self._index + + def _call_func(self): + """ + Call the wrapped function and return the result wrapped by + DataFrameWrapper. + Also updates attributes like columns, index, and length. + + """ + if _CACHING and self.cache and self.name in _TABLE_CACHE: + logger.debug('returning table {!r} from cache'.format(self.name)) + return _TABLE_CACHE[self.name].value + + with log_start_finish( + 'call function to get frame for table {!r}'.format( + self.name), + logger): + kwargs = _collect_variables(names=self._argspec.args, + expressions=self._argspec.defaults) + frame = self._func(**kwargs) + + self._columns = list(frame.columns) + self._index = frame.index + self._len = len(frame) + + wrapped = DataFrameWrapper(self.name, frame, copy_col=self.copy_col) + + if self.cache: + _TABLE_CACHE[self.name] = CacheItem( + self.name, wrapped, self.cache_scope) + + return wrapped + + def __call__(self): + return self._call_func() + + def to_frame(self, columns=None): + """ + Make a DataFrame with the given columns. + + Will always return a copy of the underlying table. + + Parameters + ---------- + columns : sequence, optional + Sequence of the column names desired in the DataFrame. + If None all columns are returned. + + Returns + ------- + frame : pandas.DataFrame + + """ + return self._call_func().to_frame(columns) + + def get_column(self, column_name): + """ + Returns a column as a Series. + + Parameters + ---------- + column_name : str + + Returns + ------- + column : pandas.Series + + """ + frame = self._call_func() + return DataFrameWrapper(self.name, frame, + copy_col=self.copy_col).get_column(column_name) + + def __getitem__(self, key): + return self.get_column(key) + + def __getattr__(self, key): + return self.get_column(key) + + def __len__(self): + return self._len + + def column_type(self, column_name): + """ + Report column type as one of 'local', 'series', or 'function'. + + Parameters + ---------- + column_name : str + + Returns + ------- + col_type : {'local', 'series', 'function'} + 'local' means that the column is part of the registered table, + 'series' means the column is a registered Pandas Series, + and 'function' means the column is a registered function providing + a Pandas Series. + + """ + extra_cols = list_columns_for_table(self.name) + + if column_name in extra_cols: + col = _COLUMNS[(self.name, column_name)] + + if isinstance(col, _SeriesWrapper): + return 'series' + elif isinstance(col, _ColumnFuncWrapper): + return 'function' + + elif column_name in self.local_columns: + return 'local' + + raise KeyError('column {!r} not found'.format(column_name)) + + def clear_cached(self): + """ + Remove this table's cached result and that of associated columns. + + """ + _TABLE_CACHE.pop(self.name, None) + for col in _columns_for_table(self.name).values(): + col.clear_cached() + logger.debug( + 'cleared cached result and cached columns for table {!r}'.format( + self.name)) + + def func_source_data(self): + """ + Return data about the wrapped function source, including file name, + line number, and source code. + + Returns + ------- + filename : str + lineno : int + The line number on which the function starts. + source : str + + """ + return _func_source_data(self._func) + + +class _ColumnFuncWrapper(object): + """ + Wrap a function that returns a Series. + + Parameters + ---------- + table_name : str + Table with which the column will be associated. + column_name : str + Name for the column. + func : callable + Should return a Series that has an + index matching the table to which it is being added. + cache : bool, optional + Whether to cache the result of calling the wrapped function. + cache_scope : {'step', 'iteration', 'forever'}, optional + Scope for which to cache data. Default is to cache forever + (or until manually cleared). 'iteration' caches data for each + complete iteration of the pipeline, 'step' caches data for + a single step of the pipeline. + + Attributes + ---------- + name : str + Column name. + table_name : str + Name of table this column is associated with. + cache : bool + Whether caching is enabled for this column. + + """ + def __init__( + self, table_name, column_name, func, cache=False, + cache_scope=_CS_FOREVER): + self.table_name = table_name + self.name = column_name + self._func = func + self._argspec = getargspec(func) + self.cache = cache + self.cache_scope = cache_scope + + def __call__(self): + """ + Evaluate the wrapped function and return the result. + + """ + if (_CACHING and + self.cache and + (self.table_name, self.name) in _COLUMN_CACHE): + logger.debug( + 'returning column {!r} for table {!r} from cache'.format( + self.name, self.table_name)) + return _COLUMN_CACHE[(self.table_name, self.name)].value + + with log_start_finish( + ('call function to provide column {!r} for table {!r}' + ).format(self.name, self.table_name), logger): + kwargs = _collect_variables(names=self._argspec.args, + expressions=self._argspec.defaults) + col = self._func(**kwargs) + + if self.cache: + _COLUMN_CACHE[(self.table_name, self.name)] = CacheItem( + (self.table_name, self.name), col, self.cache_scope) + + return col + + def clear_cached(self): + """ + Remove any cached result of this column. + + """ + x = _COLUMN_CACHE.pop((self.table_name, self.name), None) + if x is not None: + logger.debug( + 'cleared cached value for column {!r} in table {!r}'.format( + self.name, self.table_name)) + + def func_source_data(self): + """ + Return data about the wrapped function source, including file name, + line number, and source code. + + Returns + ------- + filename : str + lineno : int + The line number on which the function starts. + source : str + + """ + return _func_source_data(self._func) + + +class _SeriesWrapper(object): + """ + Wrap a Series for the purpose of giving it the same interface as a + `_ColumnFuncWrapper`. + + Parameters + ---------- + table_name : str + Table with which the column will be associated. + column_name : str + Name for the column. + series : pandas.Series + Series with index matching the table to which it is being added. + + Attributes + ---------- + name : str + Column name. + table_name : str + Name of table this column is associated with. + + """ + def __init__(self, table_name, column_name, series): + self.table_name = table_name + self.name = column_name + self._column = series + + def __call__(self): + return self._column + + def clear_cached(self): + """ + Here for compatibility with `_ColumnFuncWrapper`. + + """ + pass + + +class _InjectableFuncWrapper(object): + """ + Wraps a function that will provide an injectable value elsewhere. + + Parameters + ---------- + name : str + func : callable + cache : bool, optional + Whether to cache the result of calling the wrapped function. + cache_scope : {'step', 'iteration', 'forever'}, optional + Scope for which to cache data. Default is to cache forever + (or until manually cleared). 'iteration' caches data for each + complete iteration of the pipeline, 'step' caches data for + a single step of the pipeline. + + Attributes + ---------- + name : str + Name of this injectable. + cache : bool + Whether caching is enabled for this injectable function. + + """ + def __init__(self, name, func, cache=False, cache_scope=_CS_FOREVER): + self.name = name + self._func = func + self._argspec = getargspec(func) + self.cache = cache + self.cache_scope = cache_scope + + def __call__(self): + if _CACHING and self.cache and self.name in _INJECTABLE_CACHE: + logger.debug( + 'returning injectable {!r} from cache'.format(self.name)) + return _INJECTABLE_CACHE[self.name].value + + with log_start_finish( + 'call function to provide injectable {!r}'.format(self.name), + logger): + kwargs = _collect_variables(names=self._argspec.args, + expressions=self._argspec.defaults) + result = self._func(**kwargs) + + if self.cache: + _INJECTABLE_CACHE[self.name] = CacheItem( + self.name, result, self.cache_scope) + + return result + + def clear_cached(self): + """ + Clear a cached result for this injectable. + + """ + x = _INJECTABLE_CACHE.pop(self.name, None) + if x: + logger.debug( + 'injectable {!r} removed from cache'.format(self.name)) + + +class _StepFuncWrapper(object): + """ + Wrap a step function for argument matching. + + Parameters + ---------- + step_name : str + func : callable + + Attributes + ---------- + name : str + Name of step. + + """ + def __init__(self, step_name, func): + self.name = step_name + self._func = func + self._argspec = getargspec(func) + + def __call__(self): + with log_start_finish('calling step {!r}'.format(self.name), logger): + kwargs = _collect_variables(names=self._argspec.args, + expressions=self._argspec.defaults) + return self._func(**kwargs) + + def _tables_used(self): + """ + Tables injected into the step. + + Returns + ------- + tables : set of str + + """ + args = list(self._argspec.args) + if self._argspec.defaults: + default_args = list(self._argspec.defaults) + else: + default_args = [] + # Combine names from argument names and argument default values. + names = args[:len(args) - len(default_args)] + default_args + tables = set() + for name in names: + parent_name = name.split('.')[0] + if is_table(parent_name): + tables.add(parent_name) + return tables + + def func_source_data(self): + """ + Return data about a step function's source, including file name, + line number, and source code. + + Returns + ------- + filename : str + lineno : int + The line number on which the function starts. + source : str + + """ + return _func_source_data(self._func) + + +def is_table(name): + """ + Returns whether a given name refers to a registered table. + + """ + return name in _TABLES + + +def list_tables(): + """ + List of table names. + + """ + return list(_TABLES.keys()) + + +def list_columns(): + """ + List of (table name, registered column name) pairs. + + """ + return list(_COLUMNS.keys()) + + +def list_steps(): + """ + List of registered step names. + + """ + return list(_STEPS.keys()) + + +def list_injectables(): + """ + List of registered injectables. + + """ + return list(_INJECTABLES.keys()) + + +def list_broadcasts(): + """ + List of registered broadcasts as (cast table name, onto table name). + + """ + return list(_BROADCASTS.keys()) + + +def is_expression(name): + """ + Checks whether a given name is a simple variable name or a compound + variable expression. + + Parameters + ---------- + name : str + + Returns + ------- + is_expr : bool + + """ + return '.' in name + + +def _collect_variables(names, expressions=None): + """ + Map labels and expressions to registered variables. + + Handles argument matching. + + Example: + + _collect_variables(names=['zones', 'zone_id'], + expressions=['parcels.zone_id']) + + Would return a dict representing: + + {'parcels': , + 'zone_id': } + + Parameters + ---------- + names : list of str + List of registered variable names and/or labels. + If mixing names and labels, labels must come at the end. + expressions : list of str, optional + List of registered variable expressions for labels defined + at end of `names`. Length must match the number of labels. + + Returns + ------- + variables : dict + Keys match `names`. Values correspond to registered variables, + which may be wrappers or evaluated functions if appropriate. + + """ + # Map registered variable labels to expressions. + if not expressions: + expressions = [] + offset = len(names) - len(expressions) + labels_map = dict(tz.concatv( + tz.compatibility.zip(names[:offset], names[:offset]), + tz.compatibility.zip(names[offset:], expressions))) + + all_variables = tz.merge(_INJECTABLES, _TABLES) + variables = {} + for label, expression in labels_map.items(): + # In the future, more registered variable expressions could be + # supported. Currently supports names of registered variables + # and references to table columns. + if '.' in expression: + # Registered variable expression refers to column. + table_name, column_name = expression.split('.') + table = get_table(table_name) + variables[label] = table.get_column(column_name) + else: + thing = all_variables[expression] + if isinstance(thing, (_InjectableFuncWrapper, TableFuncWrapper)): + # Registered variable object is function. + variables[label] = thing() + else: + variables[label] = thing + + return variables + + +def add_table( + table_name, table, cache=False, cache_scope=_CS_FOREVER, + copy_col=True): + """ + Register a table with Orca. + + Parameters + ---------- + table_name : str + Should be globally unique to this table. + table : pandas.DataFrame or function + If a function, the function should return a DataFrame. + The function's argument names and keyword argument values + will be matched to registered variables when the function + needs to be evaluated by Orca. + cache : bool, optional + Whether to cache the results of a provided callable. Does not + apply if `table` is a DataFrame. + cache_scope : {'step', 'iteration', 'forever'}, optional + Scope for which to cache data. Default is to cache forever + (or until manually cleared). 'iteration' caches data for each + complete iteration of the pipeline, 'step' caches data for + a single step of the pipeline. + copy_col : bool, optional + Whether to return copies when evaluating columns. + + Returns + ------- + wrapped : `DataFrameWrapper` or `TableFuncWrapper` + + """ + if isinstance(table, Callable): + table = TableFuncWrapper(table_name, table, cache=cache, + cache_scope=cache_scope, copy_col=copy_col) + else: + table = DataFrameWrapper(table_name, table, copy_col=copy_col) + + # clear any cached data from a previously registered table + table.clear_cached() + + logger.debug('registering table {!r}'.format(table_name)) + _TABLES[table_name] = table + + return table + + +def table( + table_name=None, cache=False, cache_scope=_CS_FOREVER, copy_col=True): + """ + Decorates functions that return DataFrames. + + Decorator version of `add_table`. Table name defaults to + name of function. + + The function's argument names and keyword argument values + will be matched to registered variables when the function + needs to be evaluated by Orca. + The argument name "iter_var" may be used to have the current + iteration variable injected. + + """ + def decorator(func): + if table_name: + name = table_name + else: + name = func.__name__ + add_table( + name, func, cache=cache, cache_scope=cache_scope, + copy_col=copy_col) + return func + return decorator + + +def get_raw_table(table_name): + """ + Get a wrapped table by name and don't do anything to it. + + Parameters + ---------- + table_name : str + + Returns + ------- + table : DataFrameWrapper or TableFuncWrapper + + """ + if is_table(table_name): + return _TABLES[table_name] + else: + raise KeyError('table not found: {}'.format(table_name)) + + +def get_table(table_name): + """ + Get a registered table. + + Decorated functions will be converted to `DataFrameWrapper`. + + Parameters + ---------- + table_name : str + + Returns + ------- + table : `DataFrameWrapper` + + """ + table = get_raw_table(table_name) + if isinstance(table, TableFuncWrapper): + table = table() + return table + + +def table_type(table_name): + """ + Returns the type of a registered table. + + The type can be either "dataframe" or "function". + + Parameters + ---------- + table_name : str + + Returns + ------- + table_type : {'dataframe', 'function'} + + """ + table = get_raw_table(table_name) + + if isinstance(table, DataFrameWrapper): + return 'dataframe' + elif isinstance(table, TableFuncWrapper): + return 'function' + + +def add_column( + table_name, column_name, column, cache=False, cache_scope=_CS_FOREVER): + """ + Add a new column to a table from a Series or callable. + + Parameters + ---------- + table_name : str + Table with which the column will be associated. + column_name : str + Name for the column. + column : pandas.Series or callable + Series should have an index matching the table to which it + is being added. If a callable, the function's argument + names and keyword argument values will be matched to + registered variables when the function needs to be + evaluated by Orca. The function should return a Series. + cache : bool, optional + Whether to cache the results of a provided callable. Does not + apply if `column` is a Series. + cache_scope : {'step', 'iteration', 'forever'}, optional + Scope for which to cache data. Default is to cache forever + (or until manually cleared). 'iteration' caches data for each + complete iteration of the pipeline, 'step' caches data for + a single step of the pipeline. + + """ + if isinstance(column, Callable): + column = \ + _ColumnFuncWrapper( + table_name, column_name, column, + cache=cache, cache_scope=cache_scope) + else: + column = _SeriesWrapper(table_name, column_name, column) + + # clear any cached data from a previously registered column + column.clear_cached() + + logger.debug('registering column {!r} on table {!r}'.format( + column_name, table_name)) + _COLUMNS[(table_name, column_name)] = column + + return column + + +def column(table_name, column_name=None, cache=False, cache_scope=_CS_FOREVER): + """ + Decorates functions that return a Series. + + Decorator version of `add_column`. Series index must match + the named table. Column name defaults to name of function. + + The function's argument names and keyword argument values + will be matched to registered variables when the function + needs to be evaluated by Orca. + The argument name "iter_var" may be used to have the current + iteration variable injected. + The index of the returned Series must match the named table. + + """ + def decorator(func): + if column_name: + name = column_name + else: + name = func.__name__ + add_column( + table_name, name, func, cache=cache, cache_scope=cache_scope) + return func + return decorator + + +def list_columns_for_table(table_name): + """ + Return a list of all the extra columns registered for a given table. + + Parameters + ---------- + table_name : str + + Returns + ------- + columns : list of str + + """ + return [cname for tname, cname in _COLUMNS.keys() if tname == table_name] + + +def _columns_for_table(table_name): + """ + Return all of the columns registered for a given table. + + Parameters + ---------- + table_name : str + + Returns + ------- + columns : dict of column wrappers + Keys will be column names. + + """ + return {cname: col + for (tname, cname), col in _COLUMNS.items() + if tname == table_name} + + +def column_map(tables, columns): + """ + Take a list of tables and a list of column names and resolve which + columns come from which table. + + Parameters + ---------- + tables : sequence of _DataFrameWrapper or _TableFuncWrapper + Could also be sequence of modified pandas.DataFrames, the important + thing is that they have ``.name`` and ``.columns`` attributes. + columns : sequence of str + The column names of interest. + + Returns + ------- + col_map : dict + Maps table names to lists of column names. + """ + if not columns: + return {t.name: None for t in tables} + + columns = set(columns) + colmap = { + t.name: list(set(t.columns).intersection(columns)) for t in tables} + foundcols = tz.reduce( + lambda x, y: x.union(y), (set(v) for v in colmap.values())) + if foundcols != columns: + raise RuntimeError('Not all required columns were found. ' + 'Missing: {}'.format(list(columns - foundcols))) + return colmap + + +def get_raw_column(table_name, column_name): + """ + Get a wrapped, registered column. + + This function cannot return columns that are part of wrapped + DataFrames, it's only for columns registered directly through Orca. + + Parameters + ---------- + table_name : str + column_name : str + + Returns + ------- + wrapped : _SeriesWrapper or _ColumnFuncWrapper + + """ + try: + return _COLUMNS[(table_name, column_name)] + except KeyError: + raise KeyError('column {!r} not found for table {!r}'.format( + column_name, table_name)) + + +def _memoize_function(f, name, cache_scope=_CS_FOREVER): + """ + Wraps a function for memoization and ties it's cache into the + Orca cacheing system. + + Parameters + ---------- + f : function + name : str + Name of injectable. + cache_scope : {'step', 'iteration', 'forever'}, optional + Scope for which to cache data. Default is to cache forever + (or until manually cleared). 'iteration' caches data for each + complete iteration of the pipeline, 'step' caches data for + a single step of the pipeline. + + """ + cache = {} + + @wraps(f) + def wrapper(*args, **kwargs): + try: + cache_key = ( + args or None, frozenset(kwargs.items()) if kwargs else None) + in_cache = cache_key in cache + except TypeError: + raise TypeError( + 'function arguments must be hashable for memoization') + + if _CACHING and in_cache: + return cache[cache_key] + else: + result = f(*args, **kwargs) + cache[cache_key] = result + return result + + wrapper.__wrapped__ = f + wrapper.cache = cache + wrapper.clear_cached = lambda: cache.clear() + _MEMOIZED[name] = CacheItem(name, wrapper, cache_scope) + + return wrapper + + +def add_injectable( + name, value, autocall=True, cache=False, cache_scope=_CS_FOREVER, + memoize=False): + """ + Add a value that will be injected into other functions. + + Parameters + ---------- + name : str + value + If a callable and `autocall` is True then the function's + argument names and keyword argument values will be matched + to registered variables when the function needs to be + evaluated by Orca. The return value will + be passed to any functions using this injectable. In all other + cases, `value` will be passed through untouched. + autocall : bool, optional + Set to True to have injectable functions automatically called + (with argument matching) and the result injected instead of + the function itself. + cache : bool, optional + Whether to cache the return value of an injectable function. + Only applies when `value` is a callable and `autocall` is True. + cache_scope : {'step', 'iteration', 'forever'}, optional + Scope for which to cache data. Default is to cache forever + (or until manually cleared). 'iteration' caches data for each + complete iteration of the pipeline, 'step' caches data for + a single step of the pipeline. + memoize : bool, optional + If autocall is False it is still possible to cache function results + by setting this flag to True. Cached values are stored in a dictionary + keyed by argument values, so the argument values must be hashable. + Memoized functions have their caches cleared according to the same + rules as universal caching. + + """ + if isinstance(value, Callable): + if autocall: + value = _InjectableFuncWrapper( + name, value, cache=cache, cache_scope=cache_scope) + # clear any cached data from a previously registered value + value.clear_cached() + elif not autocall and memoize: + value = _memoize_function(value, name, cache_scope=cache_scope) + + logger.debug('registering injectable {!r}'.format(name)) + _INJECTABLES[name] = value + + +def injectable( + name=None, autocall=True, cache=False, cache_scope=_CS_FOREVER, + memoize=False): + """ + Decorates functions that will be injected into other functions. + + Decorator version of `add_injectable`. Name defaults to + name of function. + + The function's argument names and keyword argument values + will be matched to registered variables when the function + needs to be evaluated by Orca. + The argument name "iter_var" may be used to have the current + iteration variable injected. + + """ + def decorator(func): + if name: + n = name + else: + n = func.__name__ + add_injectable( + n, func, autocall=autocall, cache=cache, cache_scope=cache_scope, + memoize=memoize) + return func + return decorator + + +def is_injectable(name): + """ + Checks whether a given name can be mapped to an injectable. + + """ + return name in _INJECTABLES + + +def get_raw_injectable(name): + """ + Return a raw, possibly wrapped injectable. + + Parameters + ---------- + name : str + + Returns + ------- + inj : _InjectableFuncWrapper or object + + """ + if is_injectable(name): + return _INJECTABLES[name] + else: + raise KeyError('injectable not found: {!r}'.format(name)) + + +def injectable_type(name): + """ + Classify an injectable as either 'variable' or 'function'. + + Parameters + ---------- + name : str + + Returns + ------- + inj_type : {'variable', 'function'} + If the injectable is an automatically called function or any other + type of callable the type will be 'function', all other injectables + will be have type 'variable'. + + """ + inj = get_raw_injectable(name) + if isinstance(inj, (_InjectableFuncWrapper, Callable)): + return 'function' + else: + return 'variable' + + +def get_injectable(name): + """ + Get an injectable by name. *Does not* evaluate wrapped functions. + + Parameters + ---------- + name : str + + Returns + ------- + injectable + Original value or evaluated value of an _InjectableFuncWrapper. + + """ + i = get_raw_injectable(name) + return i() if isinstance(i, _InjectableFuncWrapper) else i + + +def get_injectable_func_source_data(name): + """ + Return data about an injectable function's source, including file name, + line number, and source code. + + Parameters + ---------- + name : str + + Returns + ------- + filename : str + lineno : int + The line number on which the function starts. + source : str + + """ + if injectable_type(name) != 'function': + raise ValueError('injectable {!r} is not a function'.format(name)) + + inj = get_raw_injectable(name) + + if isinstance(inj, _InjectableFuncWrapper): + return _func_source_data(inj._func) + elif hasattr(inj, '__wrapped__'): + return _func_source_data(inj.__wrapped__) + else: + return _func_source_data(inj) + + +def add_step(step_name, func): + """ + Add a step function to Orca. + + The function's argument names and keyword argument values + will be matched to registered variables when the function + needs to be evaluated by Orca. + The argument name "iter_var" may be used to have the current + iteration variable injected. + + Parameters + ---------- + step_name : str + func : callable + + """ + if isinstance(func, Callable): + logger.debug('registering step {!r}'.format(step_name)) + _STEPS[step_name] = _StepFuncWrapper(step_name, func) + else: + raise TypeError('func must be a callable') + + +def step(step_name=None): + """ + Decorates functions that will be called by the `run` function. + + Decorator version of `add_step`. step name defaults to + name of function. + + The function's argument names and keyword argument values + will be matched to registered variables when the function + needs to be evaluated by Orca. + The argument name "iter_var" may be used to have the current + iteration variable injected. + + """ + def decorator(func): + if step_name: + name = step_name + else: + name = func.__name__ + add_step(name, func) + return func + return decorator + + +def is_step(step_name): + """ + Check whether a given name refers to a registered step. + + """ + return step_name in _STEPS + + +def get_step(step_name): + """ + Get a wrapped step by name. + + Parameters + ---------- + + """ + if is_step(step_name): + return _STEPS[step_name] + else: + raise KeyError('no step named {}'.format(step_name)) + + +Broadcast = namedtuple( + 'Broadcast', + ['cast', 'onto', 'cast_on', 'onto_on', 'cast_index', 'onto_index']) + + +def broadcast(cast, onto, cast_on=None, onto_on=None, + cast_index=False, onto_index=False): + """ + Register a rule for merging two tables by broadcasting one onto + the other. + + Parameters + ---------- + cast, onto : str + Names of registered tables. + cast_on, onto_on : str, optional + Column names used for merge, equivalent of ``left_on``/``right_on`` + parameters of pandas.merge. + cast_index, onto_index : bool, optional + Whether to use table indexes for merge. Equivalent of + ``left_index``/``right_index`` parameters of pandas.merge. + + """ + logger.debug( + 'registering broadcast of table {!r} onto {!r}'.format(cast, onto)) + _BROADCASTS[(cast, onto)] = \ + Broadcast(cast, onto, cast_on, onto_on, cast_index, onto_index) + + +def _get_broadcasts(tables): + """ + Get the broadcasts associated with a set of tables. + + Parameters + ---------- + tables : sequence of str + Table names for which broadcasts have been registered. + + Returns + ------- + casts : dict of `Broadcast` + Keys are tuples of strings like (cast_name, onto_name). + + """ + tables = set(tables) + casts = tz.keyfilter( + lambda x: x[0] in tables and x[1] in tables, _BROADCASTS) + if tables - set(tz.concat(casts.keys())): + raise ValueError('Not enough links to merge all tables.') + return casts + + +def is_broadcast(cast_name, onto_name): + """ + Checks whether a relationship exists for broadcast `cast_name` + onto `onto_name`. + + """ + return (cast_name, onto_name) in _BROADCASTS + + +def get_broadcast(cast_name, onto_name): + """ + Get a single broadcast. + + Broadcasts are stored data about how to do a Pandas join. + A Broadcast object is a namedtuple with these attributes: + + - cast: the name of the table being broadcast + - onto: the name of the table onto which "cast" is broadcast + - cast_on: The optional name of a column on which to join. + None if the table index will be used instead. + - onto_on: The optional name of a column on which to join. + None if the table index will be used instead. + - cast_index: True if the table index should be used for the join. + - onto_index: True if the table index should be used for the join. + + Parameters + ---------- + cast_name : str + The name of the table being braodcast. + onto_name : str + The name of the table onto which `cast_name` is broadcast. + + Returns + ------- + broadcast : Broadcast + + """ + if is_broadcast(cast_name, onto_name): + return _BROADCASTS[(cast_name, onto_name)] + else: + raise KeyError( + 'no rule found for broadcasting {!r} onto {!r}'.format( + cast_name, onto_name)) + + +# utilities for merge_tables +def _all_reachable_tables(t): + """ + A generator that provides all the names of tables that can be + reached via merges starting at the given target table. + + """ + for k, v in t.items(): + for tname in _all_reachable_tables(v): + yield tname + yield k + + +def _recursive_getitem(d, key): + """ + Descend into a dict of dicts to return the one that contains + a given key. Every value in the dict must be another dict. + + """ + if key in d: + return d + else: + for v in d.values(): + return _recursive_getitem(v, key) + else: + raise KeyError('Key not found: {}'.format(key)) + + +def _dict_value_to_pairs(d): + """ + Takes the first value of a dictionary (which it self should be + a dictionary) and turns it into a series of {key: value} dicts. + + For example, _dict_value_to_pairs({'c': {'a': 1, 'b': 2}}) will yield + {'a': 1} and {'b': 2}. + + """ + d = d[tz.first(d)] + + for k, v in d.items(): + yield {k: v} + + +def _is_leaf_node(merge_node): + """ + Returns True for dicts like {'a': {}}. + + """ + return len(merge_node) == 1 and not next(iter(merge_node.values())) + + +def _next_merge(merge_node): + """ + Gets a node that has only leaf nodes below it. This table and + the ones below are ready to be merged to make a new leaf node. + + """ + if all(_is_leaf_node(d) for d in _dict_value_to_pairs(merge_node)): + return merge_node + else: + for d in tz.remove(_is_leaf_node, _dict_value_to_pairs(merge_node)): + return _next_merge(d) + else: + raise OrcaError('No node found for next merge.') + + +def merge_tables(target, tables, columns=None, drop_intersection=True): + """ + Merge a number of tables onto a target table. Tables must have + registered merge rules via the `broadcast` function. + + Parameters + ---------- + target : str, DataFrameWrapper, or TableFuncWrapper + Name of the table (or wrapped table) onto which tables will be merged. + tables : list of `DataFrameWrapper`, `TableFuncWrapper`, or str + All of the tables to merge. Should include the target table. + columns : list of str, optional + If given, columns will be mapped to `tables` and only those columns + will be requested from each table. The final merged table will have + only these columns. By default all columns are used from every + table. + drop_intersection : bool + If True, keep the left most occurence of any column name if it occurs + on more than one table. This prevents getting back the same column + with suffixes applied by pd.merge. If false, columns names will be + suffixed with the table names - e.g. zone_id_buildings and + zone_id_parcels. + + Returns + ------- + merged : pandas.DataFrame + + """ + # allow target to be string or table wrapper + if isinstance(target, (DataFrameWrapper, TableFuncWrapper)): + target = target.name + + # allow tables to be strings or table wrappers + tables = [get_table(t) + if not isinstance(t, (DataFrameWrapper, TableFuncWrapper)) else t + for t in tables] + + merges = {t.name: {} for t in tables} + tables = {t.name: t for t in tables} + casts = _get_broadcasts(tables.keys()) + logger.debug( + 'attempting to merge tables {} to target table {}'.format( + tables.keys(), target)) + + # relate all the tables by registered broadcasts + for table, onto in casts: + merges[onto][table] = merges[table] + merges = {target: merges[target]} + + # verify that all the tables can be merged to the target + all_tables = set(_all_reachable_tables(merges)) + + if all_tables != set(tables.keys()): + raise RuntimeError( + ('Not all tables can be merged to target "{}". Unlinked tables: {}' + ).format(target, list(set(tables.keys()) - all_tables))) + + # add any columns necessary for indexing into other tables + # during merges + if columns: + columns = list(columns) + for c in casts.values(): + if c.onto_on: + columns.append(c.onto_on) + if c.cast_on: + columns.append(c.cast_on) + + # get column map for which columns go with which table + colmap = column_map(tables.values(), columns) + + # get frames + frames = {name: t.to_frame(columns=colmap[name]) + for name, t in tables.items()} + + past_intersections = set() + + # perform merges until there's only one table left + while merges[target]: + nm = _next_merge(merges) + onto = tz.first(nm) + onto_table = frames[onto] + + # loop over all the tables that can be broadcast onto + # the onto_table and merge them all in. + for cast in nm[onto]: + cast_table = frames[cast] + bc = casts[(cast, onto)] + + with log_start_finish( + 'merge tables {} and {}'.format(onto, cast), logger): + + intersection = set(onto_table.columns).\ + intersection(cast_table.columns) + # intersection is ok if it's the join key + intersection.discard(bc.onto_on) + intersection.discard(bc.cast_on) + # otherwise drop so as not to create conflicts + if drop_intersection: + cast_table = cast_table.drop(intersection, axis=1) + else: + # add suffix to past intersections which wouldn't get + # picked up by the merge - these we have to rename by hand + renames = dict(zip( + past_intersections, + [c+'_'+onto for c in past_intersections] + )) + onto_table = onto_table.rename(columns=renames) + + # keep track of past intersections in case there's an odd + # number of intersections + past_intersections = past_intersections.union(intersection) + + onto_table = pd.merge( + onto_table, cast_table, + suffixes=['_'+onto, '_'+cast], + left_on=bc.onto_on, right_on=bc.cast_on, + left_index=bc.onto_index, right_index=bc.cast_index) + + # replace the existing table with the merged one + frames[onto] = onto_table + + # free up space by dropping the cast table + del frames[cast] + + # mark the onto table as having no more things to broadcast + # onto it. + _recursive_getitem(merges, onto)[onto] = {} + + logger.debug('finished merge') + return frames[target] + + +def get_step_table_names(steps): + """ + Returns a list of table names injected into the provided steps. + + Parameters + ---------- + steps: list of str + Steps to gather table inputs from. + + Returns + ------- + list of str + + """ + table_names = set() + for s in steps: + table_names |= get_step(s)._tables_used() + return list(table_names) + + +def write_tables(fname, table_names=None, prefix=None, compress=False, local=False): + """ + Writes tables to a pandas.HDFStore file. + + Parameters + ---------- + fname : str + File name for HDFStore. Will be opened in append mode and closed + at the end of this function. + table_names: list of str, optional, default None + List of tables to write. If None, all registered tables will + be written. + prefix: str + If not None, used to prefix the output table names so that + multiple iterations can go in the same file. + compress: boolean + Whether to compress output file using standard HDF5-readable + zlib compression, default False. + + """ + if table_names is None: + table_names = list_tables() + + tables = (get_table(t) for t in table_names) + key_template = '{}/{{}}'.format(prefix) if prefix is not None else '{}' + + # set compression options to zlib level-1 if compress arg is True + complib = compress and 'zlib' or None + complevel = compress and 1 or 0 + + with pd.HDFStore(fname, mode='a', complib=complib, complevel=complevel) as store: + for t in tables: + # if local arg is True, store only local columns + columns = None + if local is True: + columns = t.local_columns + store[key_template.format(t.name)] = t.to_frame(columns=columns) + + +iter_step = namedtuple('iter_step', 'step_num,step_name') + + +def run(steps, iter_vars=None, data_out=None, out_interval=1, + out_base_tables=None, out_run_tables=None, compress=False, + out_base_local=True, out_run_local=True): + """ + Run steps in series, optionally repeatedly over some sequence. + The current iteration variable is set as a global injectable + called ``iter_var``. + + Parameters + ---------- + steps : list of str + List of steps to run identified by their name. + iter_vars : iterable, optional + The values of `iter_vars` will be made available as an injectable + called ``iter_var`` when repeatedly running `steps`. + data_out : str, optional + An optional filename to which all tables injected into any step + in `steps` will be saved every `out_interval` iterations. + File will be a pandas HDF data store. + out_interval : int, optional + Iteration interval on which to save data to `data_out`. For example, + 2 will save out every 2 iterations, 5 every 5 iterations. + Default is every iteration. + The results of the first and last iterations are always included. + The input (base) tables are also included and prefixed with `base/`, + these represent the state of the system before any steps have been + executed. + The interval is defined relative to the first iteration. For example, + a run begining in 2015 with an out_interval of 2, will write out + results for 2015, 2017, etc. + out_base_tables: list of str, optional, default None + List of base tables to write. If not provided, tables injected + into 'steps' will be written. + out_run_tables: list of str, optional, default None + List of run tables to write. If not provided, tables injected + into 'steps' will be written. + compress: boolean, optional, default False + Whether to compress output file using standard HDF5 zlib compression. + Compression yields much smaller files using slightly more CPU. + out_base_local: boolean, optional, default True + For tables in out_base_tables, whether to store only local columns (True) + or both, local and computed columns (False). + out_run_local: boolean, optional, default True + For tables in out_run_tables, whether to store only local columns (True) + or both, local and computed columns (False). + """ + iter_vars = iter_vars or [None] + max_i = len(iter_vars) + + # get the tables to write out + if out_base_tables is None or out_run_tables is None: + step_tables = get_step_table_names(steps) + + if out_base_tables is None: + out_base_tables = step_tables + + if out_run_tables is None: + out_run_tables = step_tables + + # write out the base (inputs) + if data_out: + add_injectable('iter_var', iter_vars[0]) + write_tables(data_out, out_base_tables, + prefix='base', compress=compress, local=out_base_local) + + # run the steps + for i, var in enumerate(iter_vars, start=1): + add_injectable('iter_var', var) + + if var is not None: + logger.debug( + 'running iteration {} with iteration value {!r}'.format( + i, var)) + + for j, step_name in enumerate(steps): + add_injectable('iter_step', iter_step(j, step_name)) + with log_start_finish( + 'run step {!r}'.format(step_name), logger, + logging.INFO): + step = get_step(step_name) + step() + clear_cache(scope=_CS_STEP) + + # write out the results for the current iteration + if data_out: + if (i - 1) % out_interval == 0 or i == max_i: + write_tables(data_out, out_run_tables, + prefix=var, compress=compress, local=out_run_local) + + clear_cache(scope=_CS_ITER) + + +@contextmanager +def injectables(**kwargs): + """ + Temporarily add injectables to the pipeline environment. + Takes only keyword arguments. + + Injectables will be returned to their original state when the context + manager exits. + + """ + global _INJECTABLES + + original = _INJECTABLES.copy() + _INJECTABLES.update(kwargs) + yield + _INJECTABLES = original + + +@contextmanager +def temporary_tables(**kwargs): + """ + Temporarily set DataFrames as registered tables. + + Tables will be returned to their original state when the context + manager exits. Caching is not enabled for tables registered via + this function. + + """ + global _TABLES + + original = _TABLES.copy() + + for k, v in kwargs.items(): + if not isinstance(v, pd.DataFrame): + raise ValueError('tables only accepts DataFrames') + add_table(k, v) + + yield + + _TABLES = original + + +def eval_variable(name, **kwargs): + """ + Execute a single variable function registered with Orca + and return the result. Any keyword arguments are temporarily set + as injectables. This gives the value as would be injected into a function. + + Parameters + ---------- + name : str + Name of variable to evaluate. + Use variable expressions to specify columns. + + Returns + ------- + object + For injectables and columns this directly returns whatever + object is returned by the registered function. + For tables this returns a DataFrameWrapper as if the table + had been injected into a function. + + """ + with injectables(**kwargs): + vars = _collect_variables([name], [name]) + return vars[name] + + +def eval_step(name, **kwargs): + """ + Evaluate a step as would be done within the pipeline environment + and return the result. Any keyword arguments are temporarily set + as injectables. + + Parameters + ---------- + name : str + Name of step to run. + + Returns + ------- + object + Anything returned by a step. (Though note that in Orca runs + return values from steps are ignored.) + + """ + with injectables(**kwargs): + return get_step(name)() diff --git a/activitysim/core/pipeline.py b/activitysim/core/pipeline.py index aeddcd198..445e8c165 100644 --- a/activitysim/core/pipeline.py +++ b/activitysim/core/pipeline.py @@ -1,21 +1,31 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import next +from builtins import map +from builtins import object + +from future.utils import iteritems + import os -import time +import logging import datetime as dt -import cPickle - -import numpy as np import pandas as pd -import orca -import logging -import inject -from util import memory_info -from util import df_size +from . import orca +from . import inject +from . import config +from . import random +from . import tracing +from . import mem + +from . import util +from .tracing import print_elapsed_time -import random -import tracing -from tracing import print_elapsed_time logger = logging.getLogger(__name__) @@ -23,8 +33,7 @@ # (which are also columns in the checkpoints dataframe stored in hte pipeline store) TIMESTAMP = 'timestamp' CHECKPOINT_NAME = 'checkpoint_name' -PRNG_STEP_NUM = 'prng_step_num' -NON_TABLE_COLUMNS = [CHECKPOINT_NAME, TIMESTAMP, PRNG_STEP_NUM] +NON_TABLE_COLUMNS = [CHECKPOINT_NAME, TIMESTAMP] # name used for storing the checkpoints dataframe to the pipeline store CHECKPOINT_TABLE_NAME = 'checkpoints' @@ -32,6 +41,12 @@ # name of the first step/checkpoint created when teh pipeline is started INITIAL_CHECKPOINT_NAME = 'init' +# special value for resume_after meaning last checkpoint +LAST_CHECKPOINT = '_' + +# single character prefix for run_list model name to indicate that no checkpoint should be saved +NO_CHECKPOINT_PREFIX = '_' + class Pipeline(object): def __init__(self): @@ -53,6 +68,8 @@ def init_state(self): self.pipeline_store = None + self.is_open = False + def rng(self): return self._rng @@ -61,14 +78,28 @@ def rng(self): _PIPELINE = Pipeline() +def be_open(): + + if not _PIPELINE.is_open: + raise RuntimeError("Pipeline is not open!") + + +def pipeline_table_key(table_name, checkpoint_name): + if checkpoint_name: + key = "%s/%s" % (table_name, checkpoint_name) + else: + key = table_name + return key + + def close_on_exit(file, name): assert name not in _PIPELINE.open_files _PIPELINE.open_files[name] = file def close_open_files(): - for name, file in _PIPELINE.open_files.iteritems(): - print "Closing %s" % name + for name, file in iteritems(_PIPELINE.open_files): + print("Closing %s" % name) file.close() _PIPELINE.open_files.clear() @@ -86,7 +117,7 @@ def open_pipeline_store(overwrite=False): if _PIPELINE.pipeline_store is not None: raise RuntimeError("Pipeline store is already open!") - pipeline_file_path = orca.get_injectable('pipeline_path') + pipeline_file_path = config.pipeline_file_path(inject.get_injectable('pipeline_file_name')) if overwrite: try: @@ -95,7 +126,7 @@ def open_pipeline_store(overwrite=False): os.unlink(pipeline_file_path) except Exception as e: print(e) - logger.warn("Error removing %s: %s" % (e,)) + logger.warning("Error removing %s: %s" % (pipeline_file_path, e)) _PIPELINE.pipeline_store = pd.HDFStore(pipeline_file_path, mode='a') @@ -117,36 +148,9 @@ def get_rn_generator(): ------- activitysim.random.Random """ - return _PIPELINE.rng() -def set_rn_generator_base_seed(seed): - """ - Like seed for numpy.random.RandomState, but generalized for use with all random streams. - - Provide a base seed that will be added to the seeds of all random streams. - The default base seed value is 0, so set_base_seed(0) is a NOP - - set_rn_generator_base_seed(1) will (e.g.) provide a different set of random streams - than the default, but will provide repeatable results re-running or resuming the simulation - - set_rn_generator_base_seed(None) will set the base seed to a random and unpredictable integer - and so provides "fully pseudo random" non-repeatable streams with different results every time - - Must be called before open_pipeline() or pipeline.run() - - Parameters - ---------- - seed : int or None - """ - - if _PIPELINE.last_checkpoint: - raise RuntimeError("Can only call set_rn_generator_base_seed before the first step.") - - _PIPELINE.rng().set_base_seed(seed) - - def read_df(table_name, checkpoint_name=None): """ Read a pandas dataframe from the pipeline store. @@ -170,13 +174,8 @@ def read_df(table_name, checkpoint_name=None): """ - if checkpoint_name: - key = "%s/%s" % (table_name, checkpoint_name) - else: - key = table_name - store = get_pipeline_store() - df = store[key] + df = store[pipeline_table_key(table_name, checkpoint_name)] return df @@ -203,14 +202,11 @@ def write_df(df, table_name, checkpoint_name=None): # coerce column names to str as unicode names will cause PyTables to pickle them df.columns = df.columns.astype(str) - if checkpoint_name: - key = "%s/%s" % (table_name, checkpoint_name) - else: - key = table_name - store = get_pipeline_store() - store[key] = df + store[pipeline_table_key(table_name, checkpoint_name)] = df + + store.flush() def rewrap(table_name, df=None): @@ -253,10 +249,11 @@ def rewrap(table_name, df=None): for column_name in orca.list_columns_for_table(table_name): # logger.debug("pop %s.%s: %s" % (table_name, column_name, t.column_type(column_name))) - orca.orca._COLUMNS.pop((table_name, column_name), None) + # fixme + orca._COLUMNS.pop((table_name, column_name), None) # remove from orca's table list - orca.orca._TABLES.pop(table_name, None) + orca._TABLES.pop(table_name, None) assert df is not None @@ -294,7 +291,7 @@ def add_checkpoint(checkpoint_name): continue logger.debug("add_checkpoint '%s' table '%s' %s" % - (checkpoint_name, table_name, df_size(df))) + (checkpoint_name, table_name, util.df_size(df))) write_df(df, table_name, checkpoint_name) # remember which checkpoint it was last written @@ -305,13 +302,11 @@ def add_checkpoint(checkpoint_name): _PIPELINE.last_checkpoint[CHECKPOINT_NAME] = checkpoint_name _PIPELINE.last_checkpoint[TIMESTAMP] = timestamp - # current state of the random number generator - _PIPELINE.last_checkpoint[PRNG_STEP_NUM] = _PIPELINE.rng().step_num - # append to the array of checkpoint history _PIPELINE.checkpoints.append(_PIPELINE.last_checkpoint.copy()) # create a pandas dataframe of the checkpoint history, one row per checkpoint + checkpoints = pd.DataFrame(_PIPELINE.checkpoints) # convert empty values to str so PyTables doesn't pickle object types @@ -334,11 +329,9 @@ def checkpointed_tables(): Return a list of the names of all checkpointed tables """ - return [name for name, checkpoint_name in _PIPELINE.last_checkpoint.iteritems() + return [name for name, checkpoint_name in iteritems(_PIPELINE.last_checkpoint) if checkpoint_name and name not in NON_TABLE_COLUMNS] - return [name for name in _PIPELINE.last_checkpoint.keys() if name not in NON_TABLE_COLUMNS] - def load_checkpoint(checkpoint_name): """ @@ -356,8 +349,9 @@ def load_checkpoint(checkpoint_name): checkpoints = read_df(CHECKPOINT_TABLE_NAME) - if checkpoint_name == '_': + if checkpoint_name == LAST_CHECKPOINT: checkpoint_name = checkpoints[CHECKPOINT_NAME].iloc[-1] + logger.info("loading checkpoint '%s'" % checkpoint_name) try: # truncate rows after target checkpoint @@ -365,6 +359,7 @@ def load_checkpoint(checkpoint_name): checkpoints = checkpoints.loc[:i] except IndexError: msg = "Couldn't find checkpoint '%s' in checkpoints" % (checkpoint_name,) + print(checkpoints[CHECKPOINT_NAME]) logger.error(msg) raise RuntimeError(msg) @@ -373,7 +368,7 @@ def load_checkpoint(checkpoint_name): # drop tables with empty names for checkpoint in checkpoints: - for key in checkpoint.keys(): + for key in list(checkpoint.keys()): if key not in NON_TABLE_COLUMNS and not checkpoint[key]: del checkpoint[key] @@ -399,13 +394,19 @@ def load_checkpoint(checkpoint_name): loaded_tables[table_name] = df # register for tracing in order that tracing.register_traceable_table wants us to register them - for table_name in tracing.traceable_tables(): + traceable_tables = inject.get_injectable('traceable_tables', []) + for table_name in traceable_tables: if table_name in loaded_tables: tracing.register_traceable_table(table_name, loaded_tables[table_name]) - # set random state to pickled state at end of last checkpoint - logger.debug("resetting random state") - _PIPELINE.rng().load_channels(_PIPELINE.last_checkpoint[PRNG_STEP_NUM]) + # add tables of known rng channels + rng_channels = inject.get_injectable('rng_channels', []) + if rng_channels: + logger.debug("loading random channels %s" % rng_channels) + for table_name in rng_channels: + if table_name in loaded_tables: + logger.debug("adding channel %s" % (table_name,)) + _PIPELINE.rng().add_channel(table_name, loaded_tables[table_name]) def split_arg(s, sep, default=''): @@ -413,7 +414,7 @@ def split_arg(s, sep, default=''): split str s in two at first sep, returning empty string as second result if no sep """ r = s.split(sep, 2) - r = map(str.strip, r) + r = list(map(str.strip, r)) arg = r[0] @@ -438,7 +439,7 @@ def run_model(model_name): model_name is assumed to be the name of a registered orca step """ - if not _PIPELINE.last_checkpoint: + if not _PIPELINE.is_open: raise RuntimeError("Pipeline not initialized! Did you call open_pipeline?") # can't run same model more than once @@ -458,7 +459,7 @@ def run_model(model_name): args = {} # check for no_checkpoint prefix - if step_name[0] == '_': + if step_name[0] == NO_CHECKPOINT_PREFIX: step_name = step_name[1:] checkpoint = False else: @@ -466,17 +467,18 @@ def run_model(model_name): inject.set_step_args(args) + t0 = print_elapsed_time() orca.run([step_name]) + t0 = print_elapsed_time("run_model step '%s'" % model_name, t0, debug=True) inject.set_step_args(None) _PIPELINE.rng().end_step(model_name) if checkpoint: - t0 = print_elapsed_time() add_checkpoint(model_name) - t0 = print_elapsed_time("add_checkpoint '%s'" % model_name, t0, debug=True) + t0 = print_elapsed_time("run_model add_checkpoint '%s'" % model_name, t0, debug=True) else: - logger.warn("##### skipping %s checkpoint for %s\n" % (step_name, model_name)) + logger.info("##### skipping %s checkpoint for %s" % (step_name, model_name)) def open_pipeline(resume_after=None): @@ -492,13 +494,15 @@ def open_pipeline(resume_after=None): name of checkpoint to load from pipeline store """ - logger.info("open_pipeline...") + logger.info("open_pipeline") + + if _PIPELINE.is_open: + raise RuntimeError("Pipeline is already open!") - if orca.is_injectable('channel_info'): - channel_info = inject.get_injectable('channel_info', None) - if channel_info: - logger.info("initialize ran_generator channel_info") - get_rn_generator().set_channel_info(channel_info) + _PIPELINE.init_state() + _PIPELINE.is_open = True + + get_rn_generator().set_base_seed(inject.get_injectable('rng_base_seed', 0)) if resume_after: # open existing pipeline @@ -517,11 +521,27 @@ def open_pipeline(resume_after=None): logger.debug("open_pipeline complete") +def last_checkpoint(): + """ + + Returns + ------- + last_checkpoint: str + name of last checkpoint + """ + + be_open() + + return _PIPELINE.last_checkpoint[CHECKPOINT_NAME] + + def close_pipeline(): """ Close any known open files """ + be_open() + close_open_files() _PIPELINE.pipeline_store.close() @@ -550,14 +570,19 @@ def run(models, resume_after=None): model_name of checkpoint to load checkpoint and AFTER WHICH to resume model run """ - if resume_after and resume_after in models: - models = models[models.index(resume_after) + 1:] - t0 = print_elapsed_time() open_pipeline(resume_after) t0 = print_elapsed_time('open_pipeline', t0) + if resume_after == LAST_CHECKPOINT: + resume_after = _PIPELINE.last_checkpoint[CHECKPOINT_NAME] + + if resume_after: + logger.info("resume_after %s" % resume_after) + if resume_after in models: + models = models[models.index(resume_after) + 1:] + # preload any bulky injectables (e.g. skims) not in pipeline if orca.is_injectable('preload_injectables'): orca.get_injectable('preload_injectables') @@ -565,13 +590,10 @@ def run(models, resume_after=None): t0 = print_elapsed_time() for model in models: - t1 = print_elapsed_time() - run_model(model) - t1 = print_elapsed_time("run_model %s" % model, t1) - logger.debug('#mem after %s, %s' % (model, memory_info())) + run_model(model) - t0 = print_elapsed_time("run (%s models)" % len(models), t0) + t0 = print_elapsed_time("run_model (%s models)" % len(models), t0) # don't close the pipeline, as the user may want to read intermediate results from the store @@ -596,6 +618,8 @@ def get_table(table_name, checkpoint_name=None): df : pandas.DataFrame """ + be_open() + # orca table not in checkpoints (e.g. a merged table) if table_name not in _PIPELINE.last_checkpoint and orca.is_table(table_name): if checkpoint_name is not None: @@ -639,6 +663,8 @@ def get_checkpoints(): """ Get pandas dataframe of info about all checkpoints stored in pipeline + pipeline doesn't have to be open + Returns ------- checkpoints_df : pandas.DataFrame @@ -650,13 +676,13 @@ def get_checkpoints(): if store: df = store[CHECKPOINT_TABLE_NAME] else: - pipeline_file_path = orca.get_injectable('pipeline_path') + pipeline_file_path = config.pipeline_file_path(orca.get_injectable('pipeline_file_name')) df = pd.read_hdf(pipeline_file_path, CHECKPOINT_TABLE_NAME) # non-table columns first (column order in df is random because created from a dict) table_names = [name for name in df.columns.values if name not in NON_TABLE_COLUMNS] - df.index.name = 'step_num' + df = df[NON_TABLE_COLUMNS + table_names] return df @@ -681,12 +707,14 @@ def replace_table(table_name, df): df : pandas DataFrame """ + be_open() + rewrap(table_name, df) _PIPELINE.replaced_tables[table_name] = True -def extend_table(table_name, df): +def extend_table(table_name, df, axis=0): """ add new table or extend (add rows) to an existing table @@ -697,17 +725,32 @@ def extend_table(table_name, df): df : pandas DataFrame """ + be_open() + + assert axis in [0, 1] + if orca.is_table(table_name): - extend_df = orca.get_table(table_name).to_frame() + table_df = orca.get_table(table_name).to_frame() - # don't expect indexes to overlap - assert len(extend_df.index.intersection(df.index)) == 0 + if axis == 0: + # don't expect indexes to overlap + assert len(table_df.index.intersection(df.index)) == 0 + missing_df_str_columns = [c for c in table_df.columns + if c not in df.columns and table_df[c].dtype == 'O'] + else: + # expect indexes be same + assert table_df.index.equals(df.index) + new_df_columns = [c for c in df.columns if c not in table_df.columns] + df = df[new_df_columns] - # preserve existing column order (concat reorders columns) - columns = list(extend_df.columns) + [c for c in df.columns if c not in extend_df.columns] + # preserve existing column order + df = pd.concat([table_df, df], sort=False, axis=axis) - df = pd.concat([extend_df, df])[columns] + # backfill missing df columns that were str (object) type in table_df + if axis == 0: + for c in missing_df_str_columns: + df[c] = df[c].fillna('') replace_table(table_name, df) @@ -716,6 +759,8 @@ def extend_table(table_name, df): def drop_table(table_name): + be_open() + if orca.is_table(table_name): logger.debug("drop_table dropping orca table '%s'" % table_name) @@ -726,10 +771,10 @@ def drop_table(table_name): for column_name in orca.list_columns_for_table(table_name): # logger.debug("pop %s.%s: %s" % (table_name, column_name, t.column_type(column_name))) - orca.orca._COLUMNS.pop((table_name, column_name), None) + orca._COLUMNS.pop((table_name, column_name), None) # remove from orca's table list - orca.orca._TABLES.pop(table_name, None) + orca._TABLES.pop(table_name, None) if table_name in _PIPELINE.replaced_tables: diff --git a/activitysim/core/random.py b/activitysim/core/random.py index 100e80ea9..4bbe6e993 100644 --- a/activitysim/core/random.py +++ b/activitysim/core/random.py @@ -1,23 +1,42 @@ -import collections +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import range +from builtins import object + +import logging +import hashlib import numpy as np import pandas as pd -import inject from .tracing import print_elapsed_time -import logging - logger = logging.getLogger(__name__) # one more than 0xFFFFFFFF so we can wrap using: int64 % _MAX_SEED _MAX_SEED = (1 << 32) +_SEED_MASK = 0xffffffff -# not arbitrary, as we count on incrementing step_num from NULL_STEP_NUM to 0 -NULL_STEP_NUM = -1 -MAX_STEPS = 100 +def hash32(s): + """ + + Parameters + ---------- + s: str + + Returns + ------- + 32 bit unsigned hash + """ + s = s.encode('utf8') + h = hashlib.md5(s).hexdigest() + return int(h, base=16) & _SEED_MASK class SimpleChannel(object): @@ -38,91 +57,96 @@ class SimpleChannel(object): speed matters because we reseed on-the-fly for every call because creating a different RandomState object for each row uses too much memory (5K per RandomState object) - So instead, multiply the domain_df index by the number of steps required for the channel - add the step_num to the row_seed to get a unique seed for each (domain_df index, step_num) - tuple. - - Currently, it is possible that random streams for rows in different tables may coincide. - This would be easy to avoid with either seed arrays or fast jump/offset. - numpy random seeds are unsigned int32 so there are 4,294,967,295 available seeds. That is probably just about enough to distribute evenly, for most cities, depending on the number of households, persons, tours, trips, and steps. + So we use (global_seed + channel_seed + step_seed + row_index) % (1 << 32) + to get an int32 seed rather than a tuple. + We do read in the whole households and persons tables at start time, so we could note the max index values. But we might then want a way to ensure stability between the test, example, and full datasets. I am punting on this for now. """ - def __init__(self, channel_name, base_seed, domain_df, step_num): + def __init__(self, channel_name, base_seed, domain_df, step_name): - self.name = channel_name self.base_seed = base_seed # ensure that every channel is different, even for the same df index values and max_steps - self.unique_channel_seed = hash(self.name) % _MAX_SEED - - assert (step_num == NULL_STEP_NUM) or step_num >= 0 - self.step_num = step_num + self.channel_name = channel_name + self.channel_seed = hash32(self.channel_name) - assert (self.step_num < MAX_STEPS) + self.step_name = None + self.step_seed = None + self.row_states = None # create dataframe to hold state for every df row - self.row_states = self.create_row_states_for_domain(domain_df) + self.extend_domain(domain_df) + assert self.row_states.shape[0] == domain_df.shape[0] - def create_row_states_for_domain(self, domain_df): + if step_name: + self.begin_step(step_name) + + def init_row_states_for_step(self, row_states): """ - Create a dataframe with same index as domain_df and a single column + initialize row states (in place) for new step + with stable, predictable, repeatable row_seeds for that domain_df index value See notes on the seed generation strategy in class comment above. Parameters ---------- - domain_df : pandas.dataframe - domain dataframe with index values for which random streams are to be generated - - Returns - ------- - row_states : pandas.DataFrame + row_states """ - # dataframe to hold state for every df row - row_states = pd.DataFrame(columns=['row_seed', 'offset'], index=domain_df.index) + assert self.step_name + + if self.step_name and not row_states.empty: + + row_states['row_seed'] = (self.base_seed + + self.channel_seed + + self.step_seed + + row_states.index) % _MAX_SEED - if not row_states.empty: - row_states['row_seed'] = (self.base_seed + self.unique_channel_seed + - row_states.index * MAX_STEPS) % _MAX_SEED + # number of rands pulled this step row_states['offset'] = 0 return row_states def extend_domain(self, domain_df): """ - Extend existing row_state df by adding seed info for each row in domain_df + Extend or create row_state df by adding seed info for each row in domain_df - It is assumed that the index values of the component tables are disjoint and - there will be no ambiguity/collisions between them + If extending, the index values of new tables must be disjoint so + there will be no ambiguity/collisions between rows Parameters ---------- domain_df : pandas.DataFrame domain dataframe with index values for which random streams are to be generated and well-known index name corresponding to the channel + """ - step_name : str or None - provided when reloading so we can restore step_name and step_num + if domain_df.empty: + logger.warning("extend_domain for channel %s for empty domain_df" % self.channel_name) - step_num : int or None - """ + # dataframe to hold state for every df row + row_states = pd.DataFrame(columns=['row_seed', 'offset'], index=domain_df.index) - # these should be new rows, no intersection with existing row_states - assert len(self.row_states.index.intersection(domain_df.index)) == 0 + if self.step_name and not row_states.empty: + self.init_row_states_for_step(row_states) - new_row_states = self.create_row_states_for_domain(domain_df) - self.row_states = pd.concat([self.row_states, new_row_states]) + if self.row_states is None: + self.row_states = row_states + else: + # row_states already exists, so we are extending + # if extending, these should be new rows, no intersection with existing row_states + assert len(self.row_states.index.intersection(domain_df.index)) == 0 + self.row_states = pd.concat([self.row_states, row_states]) - def begin_step(self, step_num): + def begin_step(self, step_name): """ Reset channel state for a new state @@ -132,24 +156,36 @@ def begin_step(self, step_num): pipeline step name for this step """ - self.step_num = step_num + assert self.step_name is None - if self.step_num >= MAX_STEPS: - raise RuntimeError("Too many steps: %s (max %s) for channel '%s'" - % (self.step_num, MAX_STEPS, self.name)) + self.step_name = step_name + self.step_seed = hash32(self.step_name) - # number of rands pulled this step - self.row_states['offset'] = 0 + self.init_row_states_for_step(self.row_states) # standard constant to use for choice_for_df instead of fast-forwarding rand stream self.multi_choice_offset = None + def end_step(self, step_name): + + assert self.step_name == step_name + + self.step_name = None + self.step_seed = None + self.row_states['offset'] = 0 + self.row_states['row_seed'] = 0 + def _generators_for_df(self, df): """ Python generator function for iterating over numpy prngs (nomenclature collision!) seeded and fast-forwarded on-the-fly to the appropriate position in the channel's random number stream for each row in df. + WARNING: + since we are reusing a single underlying randomstate, + prng must be called when yielded as generated sequence, + not serialized and called later after iterator finishes + Parameters ---------- df : pandas.DataFrame @@ -165,8 +201,7 @@ def _generators_for_df(self, df): prng = np.random.RandomState() for row in df_row_states.itertuples(): - seed = (row.row_seed + self.step_num) % _MAX_SEED - prng.seed(seed) + prng.seed(row.row_seed) if row.offset: # consume rands @@ -203,12 +238,73 @@ def random_for_df(self, df, step_name, n=1): rands : 2-D ndarray array the same length as df, with n floats in range [0, 1) for each df row """ + + assert self.step_name + assert self.step_name == step_name + + # - reminder: prng must be called when yielded as generated sequence, not serialized generators = self._generators_for_df(df) + rands = np.asanyarray([prng.rand(n) for prng in generators]) # update offset for rows we handled self.row_states.loc[df.index, 'offset'] += n return rands + def lognormal_for_df(self, df, step_name, mu, sigma): + """ + Return a floating point random number in lognormal distribution for each row in df + using the appropriate random channel for each row. + + Subsequent calls (in the same step) will return the next rand for each df row + + The resulting array will be the same length (and order) as df + This method is designed to support alternative selection from a probability array + + The columns in df are ignored; the index name and values are used to determine + which random number sequence to to use. + + If "true pseudo random" behavior is desired (i.e. NOT repeatable) the set_base_seed + method (q.v.) may be used to globally reseed all random streams. + + Parameters + ---------- + df : pandas.DataFrame or Series + df or series with index name and values corresponding to a registered channel + + mu : float or pd.Series or array of floats with one value per df row + sigma : float or array of floats with one value per df row + + Returns + ------- + rands : 2-D ndarray + array the same length as df, with n floats in range [0, 1) for each df row + """ + + assert self.step_name + assert self.step_name == step_name + + def to_series(x): + if np.isscalar(x): + return [x] * len(df) + elif isinstance(x, pd.Series): + return x.values + return x + + # - reminder: prng must be called when yielded as generated sequence, not serialized + generators = self._generators_for_df(df) + + mu = to_series(mu) + sigma = to_series(sigma) + + rands = \ + np.asanyarray([prng.lognormal(mean=mu[i], sigma=sigma[i]) + for i, prng in enumerate(generators)]) + + # update offset for rows we handled + self.row_states.loc[df.index, 'offset'] += 1 + + return rands + def choice_for_df(self, df, step_name, a, size, replace): """ Apply numpy.random.choice once for each row in df @@ -245,6 +341,9 @@ def choice_for_df(self, df, step_name, a, size, replace): The generated random samples for each row concatenated into a single (flat) array """ + assert self.step_name + assert self.step_name == step_name + # initialize the generator iterator generators = self._generators_for_df(df) @@ -253,7 +352,7 @@ def choice_for_df(self, df, step_name, a, size, replace): if not self.multi_choice_offset: # FIXME - if replace, should we estimate rands_consumed? if replace: - logger.warn("choice_for_df MULTI_CHOICE_FF with replace") + logger.warning("choice_for_df MULTI_CHOICE_FF with replace") # update offset for rows we handled self.row_states.loc[df.index, 'offset'] += size @@ -264,48 +363,16 @@ class Random(object): def __init__(self): - # dict mapping df index_name to channel (table) name - self.index_to_channel_map = {} - self.channels = {} + + # dict mapping df index name to channel name + self.index_to_channel = {} + self.step_name = None - self.step_num = NULL_STEP_NUM self.step_seed = None self.base_seed = 0 self.global_rng = np.random.RandomState() - def set_channel_info(self, channel_info): - - assert len(self.channels) == 0 - assert len(self.index_to_channel_map) == 0 - - # for mapping index name to channel name - self.index_to_channel_map = \ - {index_name: channel_name for channel_name, index_name in channel_info.iteritems()} - - def get_channel_name_for_df(self, df): - """ - Return the channel name corresponding to the index name of df - - We expect that the random number channel can be determined by the name of the index of the - dataframe accompanying the request. This mapping was specified in channel_info - - This function internally encapsulates the knowledge of that mapping. - - Parameters - ---------- - df : pandas.DataFrame - domain_df or a df passed to random number/choice methods with well known index name - - Returns - ------- - channel_name : str - """ - channel_name = self.index_to_channel_map.get(df.index.name, None) - if channel_name is None: - raise RuntimeError("No channel with index name '%s'" % df.index.name) - return channel_name - def get_channel_for_df(self, df): """ Return the channel for this df. Channel should already have been loaded/added. @@ -316,9 +383,10 @@ def get_channel_for_df(self, df): either a domain_df for a channel being added or extended or a df for which random values are to be generated """ - channel_name = self.get_channel_name_for_df(df) - if channel_name not in self.channels: - raise RuntimeError("Channel '%s' has not yet been added." % channel_name) + + channel_name = self.index_to_channel.get(df.index.name, None) + if channel_name is None: + raise RuntimeError("No channel with index name '%s'" % df.index.name) return self.channels[channel_name] # step handling @@ -336,18 +404,16 @@ def begin_step(self, step_name): assert self.step_name is None assert step_name is not None - assert step_name != self.step_name self.step_name = step_name - self.step_num += 1 - self.step_seed = hash(step_name) % _MAX_SEED + self.step_seed = hash32(step_name) seed = [self.base_seed, self.step_seed] self.global_rng = np.random.RandomState(seed) for c in self.channels: - self.channels[c].begin_step(self.step_num) + self.channels[c].begin_step(self.step_name) def end_step(self, step_name): """ @@ -362,13 +428,16 @@ def end_step(self, step_name): assert self.step_name is not None assert self.step_name == step_name + for c in self.channels: + self.channels[c].end_step(self.step_name) + self.step_name = None self.step_seed = None self.global_rng = None # channel management - def add_channel(self, domain_df, channel_name): + def add_channel(self, channel_name, domain_df): """ Create or extend a channel for generating random number streams for domain_df. @@ -385,18 +454,11 @@ def add_channel(self, domain_df, channel_name): channel_name : str expected channel name provided as a consistency check - step_name : str or None - for channels being loaded (resumed) we need the step_name and step_num to maintain - consistent step numbering - - step_num : int or NULL_STEP_NUM - for channels being loaded (resumed) we need the step_name and step_num to maintain - consistent step numbering """ - assert channel_name == self.get_channel_name_for_df(domain_df) - if channel_name in self.channels: + + assert channel_name == self.index_to_channel[domain_df.index.name] logger.debug("Random: extending channel '%s' %s ids" % (channel_name, len(domain_df.index))) channel = self.channels[channel_name] @@ -404,44 +466,31 @@ def add_channel(self, domain_df, channel_name): channel.extend_domain(domain_df) else: - logger.debug("Random: adding channel '%s' %s ids" % - (channel_name, len(domain_df.index))) + logger.debug("Adding channel '%s' %s ids" % (channel_name, len(domain_df.index))) channel = SimpleChannel(channel_name, self.base_seed, domain_df, - self.step_num + self.step_name ) self.channels[channel_name] = channel + self.index_to_channel[domain_df.index.name] = channel_name - def load_channels(self, step_num): + def drop_channel(self, channel_name): """ - Called on resume to initialize channels for existing saved tables - All channels should have been registered by a call to set_channel_info. - This method checks to see if any of them have an injectable table + Drop channel that won't be used again (saves memory) Parameters ---------- - step_num - - Returns - ------- - + channel_name """ - self.step_num = step_num - for index_name in self.index_to_channel_map: - - channel_name = self.index_to_channel_map[index_name] - df = inject.get_table(channel_name, None) - - if df is not None: - logger.debug("loading channel %s" % (channel_name,)) - self.add_channel(df, channel_name=channel_name) - self.channels[channel_name].begin_step(step_num) - else: - logger.debug("skipping channel %s" % (channel_name,)) + if channel_name in self.channels: + logger.debug("Dropping channel '%s'" % (channel_name, )) + del self.channels[channel_name] + else: + logger.error("drop_channel called with unknown channel '%s'" % (channel_name,)) def set_base_seed(self, seed=None): """ @@ -466,7 +515,7 @@ def set_base_seed(self, seed=None): if self.step_name is not None or self.channels: raise RuntimeError("Can only call set_base_seed before the first step.") - assert len(self.channels.keys()) == 0 + assert len(list(self.channels.keys())) == 0 if seed is None: self.base_seed = np.random.RandomState().randint(_MAX_SEED) @@ -497,6 +546,16 @@ def get_global_rng(self): assert self.step_name is not None return self.global_rng + def get_external_rng(self, one_off_step_name): + """ + Return a numpy random number generator for step-independent one_off use + + exists to allow sampling of input tables consistent no matter what step they are called in + """ + + seed = [self.base_seed, hash32(one_off_step_name)] + return np.random.RandomState(seed) + def random_for_df(self, df, n=1): """ Return a single floating point random number in range [0, 1) for each row in df @@ -540,6 +599,43 @@ def random_for_df(self, df, n=1): rands = channel.random_for_df(df, self.step_name, n) return rands + def lognormal_for_df(self, df, mu, sigma): + """ + Return a single floating point random number in range [0, 1) for each row in df + using the appropriate random channel for each row. + + Subsequent calls (in the same step) will return the next rand for each df row + + The resulting array will be the same length (and order) as df + This method is designed to support alternative selection from a probability array + + The columns in df are ignored; the index name and values are used to determine + which random number sequence to to use. + + We assume that we can identify the channel to used based on the name of df.index + This channel should have already been registered by a call to add_channel (q.v.) + + If "true pseudo random" behavior is desired (i.e. NOT repeatable) the set_base_seed + method (q.v.) may be used to globally reseed all random streams. + + Parameters + ---------- + df : pandas.DataFrame + df with index name and values corresponding to a registered channel + + mu : float or array of floats with one value per df row + sigma : float or array of floats with one value per df row + + Returns + ------- + rands : 1-D ndarray the same length as df + a single float in lognormal distribution for each row in df + """ + + channel = self.get_channel_for_df(df) + rands = channel.lognormal_for_df(df, self.step_name, mu, sigma) + return rands + def choice_for_df(self, df, a, size, replace): """ Apply numpy.random.choice once for each row in df diff --git a/activitysim/core/simulate.py b/activitysim/core/simulate.py index a85a564dc..c5ce468ab 100644 --- a/activitysim/core/simulate.py +++ b/activitysim/core/simulate.py @@ -1,11 +1,18 @@ # ActivitySim # See full license in LICENSE.txt. -from __future__ import print_function +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import range -from math import ceil +from future.utils import listvalues + + +import sys import os import logging +from collections import OrderedDict import numpy as np import pandas as pd @@ -14,11 +21,11 @@ from . import logit from . import tracing from . import pipeline - +from . import config from . import util from . import assign - from . import chunk +from . import mem logger = logging.getLogger(__name__) @@ -34,12 +41,38 @@ def random_rows(df, n): return df -def read_model_spec(fpath, fname, +def uniquify_spec_index(spec): + + # uniquify spec index inplace + # ensure uniqueness of spec index by appending comment with dupe count + # this allows us to use pandas dot to compute_utilities + dict = OrderedDict() + for expr in spec.index: + dict[assign.uniquify_key(dict, expr, template="{} # ({})")] = expr + + # bug + prev_index_name = spec.index.name + spec.index = list(dict.keys()) + spec.index.name = prev_index_name + + assert spec.index.is_unique + + +def read_model_alts(file_path, set_index=None): + df = pd.read_csv(file_path, comment='#') + if set_index: + df.set_index(set_index, inplace=True) + return df + + +def read_model_spec(model_settings=None, file_name=None, spec_dir=None, description_name="Description", expression_name="Expression"): """ Read a CSV model specification into a Pandas DataFrame or Series. + file_path : str absolute or relative path to file + The CSV is expected to have columns for component descriptions and expressions, plus one or more alternatives. @@ -49,10 +82,13 @@ def read_model_spec(fpath, fname, Parameters ---------- - fpath : str - path to directory containing file. - fname : str - Name of a CSV spec file + model_settings : dict + name of spec_file is in model_settings['SPEC'] and file is relative to configs + file_name : str + file_name id spec file in configs folder (or in spec_dir is specified) + spec_dir : str + directory in which to fine spec file if not in configs + description_name : str, optional Name of the column in `fname` that contains the component description. expression_name : str, optional @@ -65,8 +101,23 @@ def read_model_spec(fpath, fname, expression values are set as the table index. """ - with open(os.path.join(fpath, fname)) as f: - spec = pd.read_csv(f, comment='#') + assert (model_settings or file_name) and not (model_settings and file_name), \ + "expect either model_spec or file_name argument" + + if model_settings is not None: + assert isinstance(model_settings, dict) + file_name = model_settings['SPEC'] + else: + assert isinstance(file_name, str) + if not file_name.lower().endswith('.csv'): + file_name = '%s.csv' % (file_name,) + + if spec_dir is not None: + file_path = os.path.join(spec_dir, file_name) + else: + file_path = config.config_file_path(file_name) + + spec = pd.read_csv(file_path, comment='#') spec = spec.dropna(subset=[expression_name]) @@ -76,16 +127,95 @@ def read_model_spec(fpath, fname, spec = spec.set_index(expression_name).fillna(0) + # ensure uniqueness of spec index by appending comment with dupe count + # this allows us to use pandas dot to compute_utilities + uniquify_spec_index(spec) + # drop any rows with all zeros since they won't have any effect (0 marginal utility) zero_rows = (spec == 0).all(axis=1) if zero_rows.any(): - logger.debug("dropping %s all-zero rows from %s" % (zero_rows.sum(), fname)) + logger.debug("dropping %s all-zero rows from %s" % (zero_rows.sum(), file_path)) spec = spec.loc[~zero_rows] return spec -def eval_variables(exprs, df, locals_d=None, target_type=np.float64): +def eval_utilities(spec, choosers, locals_d=None, trace_label=None, have_trace_targets=False): + + # fixme - restore tracing and _check_for_variability + + t0 = tracing.print_elapsed_time() + + # if False: #fixme SLOWER + # expression_values = eval_variables(spec.index, choosers, locals_d) + # # chunk.log_df(trace_label, 'expression_values', expression_values) + # # if trace_label and tracing.has_trace_targets(choosers): + # # tracing.trace_df(expression_values, '%s.expression_values' % trace_label, + # # column_labels=['expression', None]) + # # if config.setting('check_for_variability'): + # # _check_for_variability(expression_values, trace_label) + # utilities = compute_utilities(expression_values, spec) + # + # # chunk.log_df(trace_label, 'expression_values', None) + # t0 = tracing.print_elapsed_time(" eval_utilities SLOWER", t0) + # + # return utilities + + # - eval spec expressions + + # avoid altering caller's passed-in locals_d parameter (they may be looping) + locals_dict = assign.local_utilities() + if locals_d is not None: + locals_dict.update(locals_d) + globals_dict = {} + + locals_dict['df'] = choosers + + exprs = spec.index + expression_values = np.empty((spec.shape[0], choosers.shape[0])) + for i, expr in enumerate(exprs): + try: + if expr.startswith('@'): + expression_values[i] = eval(expr[1:], globals_dict, locals_dict) + else: + expression_values[i] = choosers.eval(expr) + except Exception as err: + logger.exception("Variable evaluation failed for: %s" % str(expr)) + raise err + + # - compute_utilities + utilities = np.dot(expression_values.transpose(), spec.astype(np.float64).values) + utilities = pd.DataFrame(data=utilities, index=choosers.index, columns=spec.columns) + + t0 = tracing.print_elapsed_time(" eval_utilities", t0) + + if have_trace_targets: + + # get int offsets of the trace_targets (offsets of bool=True values) + trace_targets = tracing.trace_targets(choosers) + offsets = np.nonzero(trace_targets)[0] + + # get array of expression_values + # expression_values.shape = (len(spec), len(choosers)) + # data.shape = (len(spec), len(offsets)) + data = expression_values[:, offsets] + + # columns is chooser index as str + column_labels = choosers.index[trace_targets].astype(str) + # index is utility expressions + index = spec.index + + trace_df = pd.DataFrame(data=data, columns=column_labels, index=index) + + tracing.trace_df(trace_df, '%s.expression_values' % trace_label, + slicer=None, transpose=False, + column_labels=column_labels, + index_label='expression') + + return utilities + + +def eval_variables(exprs, df, locals_d=None): """ Evaluate a set of variable expressions from a spec in the context of a given data table. @@ -101,6 +231,10 @@ def eval_variables(exprs, df, locals_d=None, target_type=np.float64): Users should take care that these expressions must result in a Pandas Series. + # FIXME - for performance, it is essential that spec and expression_values + # FIXME - not contain booleans when dotted with spec values + # FIXME - or the arrays will be converted to dtype=object within dot() + Parameters ---------- exprs : sequence of str @@ -108,8 +242,6 @@ def eval_variables(exprs, df, locals_d=None, target_type=np.float64): locals_d : Dict This is a dictionary of local variables that will be the environment for an evaluation of an expression that begins with @ - target_type: dtype or None - type to coerce results or None if no coercion desired Returns ------- @@ -125,37 +257,42 @@ def eval_variables(exprs, df, locals_d=None, target_type=np.float64): locals_dict['df'] = df - def to_series(x): - if np.isscalar(x): - return pd.Series([x] * len(df), index=df.index) - return x + def to_array(x): + + if x is None or np.isscalar(x): + a = np.asanyarray([x] * len(df.index)) + elif isinstance(x, pd.Series): + # fixme + # assert x.index.equals(df.index) + # save a little RAM + a = x.values + else: + a = x + + # FIXME - for performance, it is essential that spec and expression_values + # FIXME - not contain booleans when dotted with spec values + # FIXME - or the arrays will be converted to dtype=object within dot() + if not np.issubdtype(a.dtype, np.number): + a = a.astype(np.int8) - value_list = [] - print('eval_variables', end='') # print ... for each expression + return a + + values = OrderedDict() for expr in exprs: - print('.', end='') # print ... - # logger.debug("eval_variables: %s" % expr) - # logger.debug("eval_variables %s" % util.memory_info()) try: if expr.startswith('@'): - expr_values = to_series(eval(expr[1:], globals_dict, locals_dict)) + expr_values = to_array(eval(expr[1:], globals_dict, locals_dict)) else: - expr_values = df.eval(expr) - value_list.append((expr, expr_values)) + expr_values = to_array(df.eval(expr)) + # read model spec should ensure uniqueness, otherwise we should uniquify + assert expr not in values + values[expr] = expr_values except Exception as err: - print() # print ... logger.exception("Variable evaluation failed for: %s" % str(expr)) raise err - print() # print ... - - values = pd.DataFrame.from_items(value_list) - # FIXME - for performance, it is essential that spec and expression_values - # FIXME - not contain booleans when dotted with spec values - # FIXME - or the arrays will be converted to dtype=object within dot() - if target_type is not None: - values = values.astype(target_type) + values = util.df_from_dict(values, index=df.index) return values @@ -173,6 +310,12 @@ def compute_utilities(expression_values, spec): spec = spec.astype(np.float64) + # pandas.dot depends on column names of expression_values matching spec index values + # expressions should have been uniquified when spec was read + # we could do it here if need be, and then set spec.index and expression_values.columns equal + assert spec.index.is_unique + assert (spec.index.values == expression_values.columns.values).all() + utilities = expression_values.dot(spec) return utilities @@ -205,7 +348,7 @@ def set_skim_wrapper_targets(df, skims): elif isinstance(skims, dict): # it it is a dict, then check for known types, ignore anything we don't recognize as a skim # (this allows putting skim column names in same dict as skims for use in locals_dicts) - for skim in skims.values(): + for skim in listvalues(skims): if isinstance(skim, SkimDictWrapper) or isinstance(skim, SkimStackWrapper): skim.set_df(df) else: @@ -243,10 +386,10 @@ def _check_for_variability(expression_values, trace_label): has_missing_vals += 1 if no_variability > 0: - logger.warn("%s: %s columns have no variability" % (trace_label, no_variability)) + logger.warning("%s: %s columns have no variability" % (trace_label, no_variability)) if has_missing_vals > 0: - logger.warn("%s: %s columns have missing values" % (trace_label, has_missing_vals)) + logger.warning("%s: %s columns have missing values" % (trace_label, has_missing_vals)) def compute_nested_exp_utilities(raw_utilities, nest_spec): @@ -343,7 +486,7 @@ def compute_base_probabilities(nested_probabilities, nests, spec): ---------- nested_probabilities : pandas.DataFrame dataframe with the nested probabilities for nest leafs and nodes - nest_spec : dict + nests : dict Nest tree dict from the model spec yaml file spec : pandas.Dataframe simple simulate spec so we can return columns in appropriate order @@ -410,32 +553,24 @@ def eval_mnl(choosers, spec, locals_d, custom_chooser, of `spec`. """ - trace_label = tracing.extend_trace_label(trace_label, 'mnl') - have_trace_targets = trace_label and tracing.has_trace_targets(choosers) + trace_label = tracing.extend_trace_label(trace_label, 'eval_mnl') + have_trace_targets = tracing.has_trace_targets(choosers) - check_for_variability = tracing.check_for_variability() - - expression_values = eval_variables(spec.index, choosers, locals_d) - - if check_for_variability: - _check_for_variability(expression_values, trace_label) - - # matrix product of spec expression_values with utility coefficients of alternatives - # sums the partial utilities (represented by each spec row) of the alternatives - # resulting in a dataframe with one row per chooser and one column per alternative - # pandas.dot depends on column names of expression_values matching spec index values + if have_trace_targets: + tracing.trace_df(choosers, '%s.choosers' % trace_label) - utilities = compute_utilities(expression_values, spec) + utilities = eval_utilities(spec, choosers, locals_d, trace_label, have_trace_targets) + chunk.log_df(trace_label, "utilities", utilities) if have_trace_targets: - # report these now in case utils_to_probs throws error on zero-probs - tracing.trace_df(choosers, '%s.choosers' % trace_label) tracing.trace_df(utilities, '%s.utilities' % trace_label, column_labels=['alternative', 'utility']) - tracing.trace_df(expression_values, '%s.expression_values' % trace_label, - column_labels=['expression', None]) probs = logit.utils_to_probs(utilities, trace_label=trace_label, trace_choosers=choosers) + chunk.log_df(trace_label, "probs", probs) + + del utilities + chunk.log_df(trace_label, 'utilities', None) if have_trace_targets: # report these now in case make_choices throws error on bad_choices @@ -448,12 +583,8 @@ def eval_mnl(choosers, spec, locals_d, custom_chooser, else: choices, rands = logit.make_choices(probs, trace_label=trace_label) - cum_size = chunk.log_df_size(trace_label, 'choosers', choosers, cum_size=None) - - cum_size = chunk.log_df_size(trace_label, 'expression_values', expression_values, cum_size) - cum_size = chunk.log_df_size(trace_label, "utilities", utilities, cum_size) - cum_size = chunk.log_df_size(trace_label, "probs", probs, cum_size) - chunk.log_chunk_size(trace_label, cum_size) + del probs + chunk.log_df(trace_label, 'probs', None) if have_trace_targets: tracing.trace_df(choices, '%s.choices' % trace_label, @@ -499,43 +630,53 @@ def eval_nl(choosers, spec, nest_spec, locals_d, custom_chooser, of `spec`. """ - trace_label = tracing.extend_trace_label(trace_label, 'nl') - have_trace_targets = trace_label and tracing.has_trace_targets(choosers) - - check_for_variability = tracing.check_for_variability() + trace_label = tracing.extend_trace_label(trace_label, 'eval_nl') + assert trace_label + have_trace_targets = tracing.has_trace_targets(choosers) - # column names of expression_values match spec index values - expression_values = eval_variables(spec.index, choosers, locals_d) + if have_trace_targets: + tracing.trace_df(choosers, '%s.choosers' % trace_label) - if check_for_variability: - _check_for_variability(expression_values, trace_label) + raw_utilities = eval_utilities(spec, choosers, locals_d, trace_label, have_trace_targets) + chunk.log_df(trace_label, "raw_utilities", raw_utilities) - # raw utilities of all the leaves - raw_utilities = compute_utilities(expression_values, spec) + if have_trace_targets: + tracing.trace_df(raw_utilities, '%s.raw_utilities' % trace_label, + column_labels=['alternative', 'utility']) # exponentiated utilities of leaves and nests nested_exp_utilities = compute_nested_exp_utilities(raw_utilities, nest_spec) + chunk.log_df(trace_label, "nested_exp_utilities", nested_exp_utilities) - # probabilities of alternatives relative to siblings sharing the same nest - nested_probabilities = compute_nested_probabilities(nested_exp_utilities, nest_spec, - trace_label=trace_label) - - # global (flattened) leaf probabilities based on relative nest coefficients (in spec order) - base_probabilities = compute_base_probabilities(nested_probabilities, nest_spec, spec) + del raw_utilities + chunk.log_df(trace_label, 'raw_utilities', None) if have_trace_targets: - # report these now in case of no_choices - tracing.trace_df(choosers, '%s.choosers' % trace_label) - tracing.trace_df(raw_utilities, '%s.raw_utilities' % trace_label, - column_labels=['alternative', 'utility']) tracing.trace_df(nested_exp_utilities, '%s.nested_exp_utilities' % trace_label, column_labels=['alternative', 'utility']) + + # probabilities of alternatives relative to siblings sharing the same nest + nested_probabilities = \ + compute_nested_probabilities(nested_exp_utilities, nest_spec, trace_label=trace_label) + chunk.log_df(trace_label, "nested_probabilities", nested_probabilities) + + del nested_exp_utilities + chunk.log_df(trace_label, 'nested_exp_utilities', None) + + if have_trace_targets: tracing.trace_df(nested_probabilities, '%s.nested_probabilities' % trace_label, column_labels=['alternative', 'probability']) + + # global (flattened) leaf probabilities based on relative nest coefficients (in spec order) + base_probabilities = compute_base_probabilities(nested_probabilities, nest_spec, spec) + chunk.log_df(trace_label, "base_probabilities", base_probabilities) + + del nested_probabilities + chunk.log_df(trace_label, 'nested_probabilities', None) + + if have_trace_targets: tracing.trace_df(base_probabilities, '%s.base_probabilities' % trace_label, column_labels=['alternative', 'probability']) - tracing.trace_df(expression_values, '%s.expression_values' % trace_label, - column_labels=['expression', None]) # note base_probabilities could all be zero since we allowed all probs for nests to be zero # check here to print a clear message but make_choices will raise error if probs don't sum to 1 @@ -558,13 +699,8 @@ def eval_nl(choosers, spec, nest_spec, locals_d, custom_chooser, else: choices, rands = logit.make_choices(base_probabilities, trace_label=trace_label) - cum_size = chunk.log_df_size(trace_label, 'choosers', choosers, cum_size=None) - cum_size = chunk.log_df_size(trace_label, "expression_values", expression_values, cum_size) - cum_size = chunk.log_df_size(trace_label, "raw_utilities", raw_utilities, cum_size) - cum_size = chunk.log_df_size(trace_label, "nested_exp_utils", nested_exp_utilities, cum_size) - cum_size = chunk.log_df_size(trace_label, "nested_probs", nested_probabilities, cum_size) - cum_size = chunk.log_df_size(trace_label, "base_probs", base_probabilities, cum_size) - chunk.log_chunk_size(trace_label, cum_size) + del base_probabilities + chunk.log_df(trace_label, 'base_probabilities', None) if have_trace_targets: tracing.trace_df(choices, '%s.choices' % trace_label, @@ -641,8 +777,8 @@ def simple_simulate_rpc(chunk_size, choosers, spec, nest_spec, trace_label): num_choosers = len(choosers.index) # if not chunking, then return num_choosers - if chunk_size == 0: - return num_choosers + # if chunk_size == 0: + # return num_choosers, 0 chooser_row_size = len(choosers.columns) @@ -682,10 +818,8 @@ def simple_simulate(choosers, spec, nest_spec, skims=None, locals_d=None, assert len(choosers) > 0 - rows_per_chunk = simple_simulate_rpc(chunk_size, choosers, spec, nest_spec, trace_label) - - logger.info("simple_simulate rows_per_chunk %s num_choosers %s" % - (rows_per_chunk, len(choosers.index))) + rows_per_chunk, effective_chunk_size = \ + simple_simulate_rpc(chunk_size, choosers, spec, nest_spec, trace_label) result_list = [] # segment by person type and pick the right spec for each person type @@ -696,6 +830,8 @@ def simple_simulate(choosers, spec, nest_spec, skims=None, locals_d=None, chunk_trace_label = tracing.extend_trace_label(trace_label, 'chunk_%s' % i) \ if num_chunks > 1 else trace_label + chunk.log_open(chunk_trace_label, chunk_size, effective_chunk_size) + choices = _simple_simulate( chooser_chunk, spec, nest_spec, skims, locals_d, @@ -703,6 +839,8 @@ def simple_simulate(choosers, spec, nest_spec, skims=None, locals_d=None, chunk_trace_label, trace_choice_name) + chunk.log_close(chunk_trace_label) + result_list.append(choices) if len(result_list) > 1: @@ -723,45 +861,34 @@ def eval_mnl_logsums(choosers, spec, locals_d, trace_label=None): Index will be that of `choosers`, values will be logsum across spec column values """ - trace_label = tracing.extend_trace_label(trace_label, 'mnl') - have_trace_targets = trace_label and tracing.has_trace_targets(choosers) + # FIXME - untested and not currently used by any models... - check_for_variability = tracing.check_for_variability() + trace_label = tracing.extend_trace_label(trace_label, 'eval_mnl_logsums') + have_trace_targets = tracing.has_trace_targets(choosers) logger.debug("running eval_mnl_logsums") - # t0 = tracing.print_elapsed_time() - expression_values = eval_variables(spec.index, choosers, locals_d) - # t0 = tracing.print_elapsed_time("eval_variables", t0, debug=True) + # trace choosers + if have_trace_targets: + tracing.trace_df(choosers, '%s.choosers' % trace_label) - if check_for_variability: - _check_for_variability(expression_values, trace_label) + utilities = eval_utilities(spec, choosers, locals_d, trace_label, have_trace_targets) + chunk.log_df(trace_label, "utilities", utilities) - # utility values - utilities = compute_utilities(expression_values, spec) - # t0 = tracing.print_elapsed_time("compute_utilities", t0, debug=True) + if have_trace_targets: + tracing.trace_df(utilities, '%s.raw_utilities' % trace_label, + column_labels=['alternative', 'utility']) + # - logsums # logsum is log of exponentiated utilities summed across columns of each chooser row - utils_arr = utilities.as_matrix().astype('float') - logsums = np.log(np.exp(utils_arr).sum(axis=1)) + logsums = np.log(np.exp(utilities.values).sum(axis=1)) logsums = pd.Series(logsums, index=choosers.index) + chunk.log_df(trace_label, "logsums", logsums) - cum_size = chunk.log_df_size(trace_label, 'choosers', choosers, cum_size=None) - cum_size = chunk.log_df_size(trace_label, 'expression_values', expression_values, cum_size) - cum_size = chunk.log_df_size(trace_label, "utilities", utilities, cum_size) - chunk.log_chunk_size(trace_label, cum_size) - + # trace utilities if have_trace_targets: - # add logsum to utilities for tracing - utilities['logsum'] = logsums - - tracing.trace_df(choosers, '%s.choosers' % trace_label) - tracing.trace_df(utilities, '%s.utilities' % trace_label, - column_labels=['alternative', 'utility']) tracing.trace_df(logsums, '%s.logsums' % trace_label, column_labels=['alternative', 'logsum']) - tracing.trace_df(expression_values, '%s.expression_values' % trace_label, - column_labels=['expression', None]) return logsums @@ -776,53 +903,42 @@ def eval_nl_logsums(choosers, spec, nest_spec, locals_d, trace_label=None): Index will be that of `choosers`, values will be nest logsum based on spec column values """ - trace_label = tracing.extend_trace_label(trace_label, 'nl') - have_trace_targets = trace_label and tracing.has_trace_targets(choosers) - - check_for_variability = tracing.check_for_variability() + trace_label = tracing.extend_trace_label(trace_label, 'eval_nl_logsums') + have_trace_targets = tracing.has_trace_targets(choosers) - logger.debug("running eval_nl_logsums") - # t0 = tracing.print_elapsed_time() - - # column names of expression_values match spec index values - expression_values = eval_variables(spec.index, choosers, locals_d) - # t0 = tracing.print_elapsed_time("eval_variables", t0, debug=True) + # trace choosers + if have_trace_targets: + tracing.trace_df(choosers, '%s.choosers' % trace_label) - if check_for_variability: - _check_for_variability(expression_values, trace_label) - # t0 = tracing.print_elapsed_time("_check_for_variability", t0, debug=True) + raw_utilities = eval_utilities(spec, choosers, locals_d, trace_label, have_trace_targets) + chunk.log_df(trace_label, "raw_utilities", raw_utilities) - # raw utilities of all the leaves - raw_utilities = compute_utilities(expression_values, spec) - # t0 = tracing.print_elapsed_time("expression_values.dot", t0, debug=True) + if have_trace_targets: + tracing.trace_df(raw_utilities, '%s.raw_utilities' % trace_label, + column_labels=['alternative', 'utility']) - # exponentiated utilities of leaves and nests + # - exponentiated utilities of leaves and nests nested_exp_utilities = compute_nested_exp_utilities(raw_utilities, nest_spec) - # t0 = tracing.print_elapsed_time("compute_nested_exp_utilities", t0, debug=True) + chunk.log_df(trace_label, "nested_exp_utilities", nested_exp_utilities) + + del raw_utilities # done with raw_utilities + chunk.log_df(trace_label, 'raw_utilities', None) + # - logsums logsums = np.log(nested_exp_utilities.root) logsums = pd.Series(logsums, index=choosers.index) - # t0 = tracing.print_elapsed_time("logsums", t0, debug=True) - - cum_size = chunk.log_df_size(trace_label, 'choosers', choosers, cum_size=None) - cum_size = chunk.log_df_size(trace_label, 'expression_values', expression_values, cum_size) - cum_size = chunk.log_df_size(trace_label, "raw_utilities", raw_utilities, cum_size) - cum_size = chunk.log_df_size(trace_label, "nested_exp_utils", nested_exp_utilities, cum_size) - chunk.log_chunk_size(trace_label, cum_size) + chunk.log_df(trace_label, "logsums", logsums) if have_trace_targets: # add logsum to nested_exp_utilities for tracing nested_exp_utilities['logsum'] = logsums - - tracing.trace_df(choosers, '%s.choosers' % trace_label) - tracing.trace_df(raw_utilities, '%s.raw_utilities' % trace_label, - column_labels=['alternative', 'utility']) tracing.trace_df(nested_exp_utilities, '%s.nested_exp_utilities' % trace_label, column_labels=['alternative', 'utility']) tracing.trace_df(logsums, '%s.logsums' % trace_label, column_labels=['alternative', 'logsum']) - tracing.trace_df(expression_values, '%s.expression_values' % trace_label, - column_labels=['expression', None]) + + del nested_exp_utilities # done with nested_exp_utilities + chunk.log_df(trace_label, 'nested_exp_utilities', None) return logsums @@ -857,8 +973,8 @@ def simple_simulate_logsums_rpc(chunk_size, choosers, spec, nest_spec, trace_lab num_choosers = len(choosers.index) # if not chunking, then return num_choosers - if chunk_size == 0: - return num_choosers + # if chunk_size == 0: + # return num_choosers, 0 chooser_row_size = len(choosers.columns) @@ -866,8 +982,8 @@ def simple_simulate_logsums_rpc(chunk_size, choosers, spec, nest_spec, trace_lab # expression_values for each spec row # utilities for each alt extra_columns = spec.shape[0] + spec.shape[1] - logger.warn("simple_simulate_logsums_rpc rows_per_chunk not validated for mnl" - " so chunk sizing might be a bit off") + logger.warning("simple_simulate_logsums_rpc rows_per_chunk not validated for mnl" + " so chunk sizing might be a bit off") else: # expression_values for each spec row # raw_utilities for each alt @@ -898,9 +1014,8 @@ def simple_simulate_logsums(choosers, spec, nest_spec, assert len(choosers) > 0 - rows_per_chunk = simple_simulate_logsums_rpc(chunk_size, choosers, spec, nest_spec, trace_label) - logger.info("%s chunk_size %s num_choosers %s, rows_per_chunk %s" % - (trace_label, chunk_size, len(choosers.index), rows_per_chunk)) + rows_per_chunk, effective_chunk_size = \ + simple_simulate_logsums_rpc(chunk_size, choosers, spec, nest_spec, trace_label) result_list = [] # segment by person type and pick the right spec for each person type @@ -911,11 +1026,15 @@ def simple_simulate_logsums(choosers, spec, nest_spec, chunk_trace_label = tracing.extend_trace_label(trace_label, 'chunk_%s' % i) \ if num_chunks > 1 else trace_label + chunk.log_open(chunk_trace_label, chunk_size, effective_chunk_size) + logsums = _simple_simulate_logsums( chooser_chunk, spec, nest_spec, skims, locals_d, chunk_trace_label) + chunk.log_close(chunk_trace_label) + result_list.append(logsums) if len(result_list) > 1: diff --git a/activitysim/core/skim.py b/activitysim/core/skim.py index 942d3d10d..f7ca29d6c 100644 --- a/activitysim/core/skim.py +++ b/activitysim/core/skim.py @@ -1,8 +1,19 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import range +from builtins import object + +from future.utils import iteritems +from future.utils import listvalues + import logging +from collections import OrderedDict + import numpy as np import pandas as pd @@ -13,43 +24,77 @@ class OffsetMapper(object): + """ + Utility to map skim zone ids to ordinal offsets (e.g. numpy array indices) + + Can map either by a fixed offset (e.g. -1 to map 1-based to 0-based) + or by an explicit mapping of zone id to offset (slower but more flexible) + """ def __init__(self, offset_int=None): self.offset_series = None self.offset_int = offset_int def set_offset_list(self, offset_list): + """ + Specify the zone ids corresponding to the offsets (ordinal positions) + set_offset_list([10, 20, 30, 40]) + map([30, 20, 40]) + returns offsets [2, 1, 3] + + Parameters + ---------- + offset_list : list of int + """ assert isinstance(offset_list, list) assert self.offset_int is None - # for performance, check if this is a simple int-based series + # - for performance, check if this is a simple int-based series first_offset = offset_list[0] - if (offset_list == range(first_offset, len(offset_list)+first_offset)): + if (offset_list == list(range(first_offset, len(offset_list)+first_offset))): offset_int = -1 * first_offset # print "set_offset_list substituting offset_int of %s" % offset_int self.set_offset_int(offset_int) return if self.offset_series is None: - self.offset_series = pd.Series(data=range(len(offset_list)), index=offset_list) + self.offset_series = pd.Series(data=list(range(len(offset_list))), index=offset_list) else: # make sure it offsets are the same assert (offset_list == self.offset_series.index).all() def set_offset_int(self, offset_int): + """ + specify fixed offset (e.g. -1 to map 1-based to 0-based) + + Parameters + ---------- + offset_int : int + """ # should be some kind of integer - assert long(offset_int) == offset_int + assert int(offset_int) == offset_int assert self.offset_series is None if self.offset_int is None: - self.offset_int = offset_int + self.offset_int = int(offset_int) else: # make sure it is the same assert offset_int == self.offset_int def map(self, zone_ids): + """ + map zone_ids to offsets + + Parameters + ---------- + zone_ids + + Returns + ------- + offsets : numpy array of int + """ # print "\nmap_offsets zone_ids", zone_ids @@ -60,8 +105,6 @@ def map(self, zone_ids): offsets = np.asanyarray(quick_loc_series(zone_ids, self.offset_series)) elif self.offset_int: - # should be some kind of integer - assert long(self.offset_int) == self.offset_int assert (self.offset_series is None) offsets = zone_ids + self.offset_int else: @@ -105,27 +148,20 @@ def get(self, orig, dest): values : 1D array """ - # only working with numpy in here - orig = np.asanyarray(orig) - dest = np.asanyarray(dest) - out_shape = orig.shape - # filter orig and dest to only the real-number pairs - notnan = ~(np.isnan(orig) | np.isnan(dest)) - orig = orig[notnan].astype('int') - dest = dest[notnan].astype('int') + # fixme - remove? + assert not (np.isnan(orig) | np.isnan(dest)).any() + + # only working with numpy in here + orig = np.asanyarray(orig).astype(int) + dest = np.asanyarray(dest).astype(int) orig = self.offset_mapper.map(orig) dest = self.offset_mapper.map(dest) result = self.data[orig, dest] - # add the nans back to the result - out = np.empty(out_shape) - out[notnan] = result - out[~notnan] = np.nan - - return out + return result class SkimDict(object): @@ -137,39 +173,21 @@ class SkimDict(object): Note that keys are either strings or tuples of two strings (to support stacking of skims.) """ - def __init__(self): - self.skims = {} - self.offset_mapper = OffsetMapper() - - def set(self, key, skim_data): - """ - Set skim data for key - - Parameters - ---------- - key : hashable - The key (identifier) for this skim object - skim_data : Skim - The skim object + def __init__(self, skim_data, skim_info): - Returns - ------- - Nothing - """ + self.skim_info = skim_info + self.skim_data = skim_data - if not isinstance(key, str): - assert isinstance(key, tuple) and len(key) == 2 - assert isinstance(key[0], str) and isinstance(key[1], str) + self.offset_mapper = OffsetMapper() + self.usage = set() - self.skims[key] = np.asanyarray(skim_data) + def touch(self, key): - # print "\n### %s" % (key,) - # print "type(skim_data)", type(skim_data) - # print "skim_data.shape", skim_data.shape + self.usage.add(key) def get(self, key): """ - Get an available skim object (not the lookup) + Get an available wrapped skim object (not the lookup) Parameters ---------- @@ -181,7 +199,15 @@ def get(self, key): skim: Skim The skim object """ - return SkimWrapper(self.skims[key], self.offset_mapper) + + block, offset = self.skim_info['block_offsets'].get(key) + block_data = self.skim_data[block] + + self.touch(key) + + data = block_data[:, :, offset] + + return SkimWrapper(data, self.offset_mapper) def wrap(self, left_key, right_key): """ @@ -318,62 +344,55 @@ class SkimStack(object): def __init__(self, skim_dict): - self.skims_data = {} - self.skim_keys_to_indexes = {} self.offset_mapper = skim_dict.offset_mapper + self.skim_dict = skim_dict + + # - key1_blocks dict maps key1 to block number + # DISTWALK: 0, + # DRV_COM_WLK_BOARDS: 0, ... + key1_block_offsets = skim_dict.skim_info['key1_block_offsets'] + self.key1_blocks = {k: v[0] for k, v in iteritems(key1_block_offsets)} - # pass to make dictionary of dictionaries where highest level is unique - # first items of the tuples and the 2nd level is the second items of - # the tuples - for key, skim_data in skim_dict.skims.iteritems(): - if not isinstance(key, tuple) or not len(key) == 2: - logger.debug("SkimStack __init__ skipping key: %s" % key) + # - skim_dim3 dict maps key1 to dict of key2 absolute offsets into block + # DRV_COM_WLK_BOARDS: {'MD': 4, 'AM': 3, 'PM': 5}, ... + block_offsets = skim_dict.skim_info['block_offsets'] + skim_dim3 = OrderedDict() + for skim_key in block_offsets: + + if not isinstance(skim_key, tuple): continue - logger.debug("SkimStack __init__ loading key: %s" % (key,)) - skim_key1, skim_key2 = key - # logger.debug("SkimStack init key: key1='%s' key2='%s'" % (skim_key1, skim_key2)) - # FIXME - this copys object reference - self.skims_data.setdefault(skim_key1, {})[skim_key2] = skim_data - - # print "\n### %s" % (key,) - # print "type(skim_data)", type(skim_data) - # print "skim_data.shape", skim_data.shape - - # second pass to turn the each highest level value into a 3D array - # with a dictionary to make second level keys to indexes - for skim_key1, value in self.skims_data.iteritems(): - # FIXME - this actually copies/creates new stacked data - self.skims_data[skim_key1] = np.dstack(value.values()) - self.skim_keys_to_indexes[skim_key1] = dict(zip(value.keys(), range(len(value)))) - logger.info("SkimStack.__init__ loaded %s keys with %s total skims" - % (len(self.skim_keys_to_indexes), - sum([len(d) for d in self.skim_keys_to_indexes.values()]))) + key1, key2 = skim_key + block, offset = block_offsets[skim_key] - def __str__(self): + assert block == self.key1_blocks[key1] - return "\n".join( - "%s %s" % (key1, sub_dict) - for key1, sub_dict in self.skim_keys_to_indexes.iteritems()) + skim_dim3.setdefault(key1, OrderedDict())[key2] = offset - # def key_count(self): - # return len(self.skim_keys_to_indexes.keys()) - # - # def contains(self, key): - # return key in self.skims_data + self.skim_dim3 = skim_dim3 - def get(self, key): - return self.skims_data[key], self.skim_keys_to_indexes[key] + logger.info("SkimStack.__init__ loaded %s keys with %s total skims" + % (len(self.skim_dim3), + sum([len(d) for d in listvalues(self.skim_dim3)]))) + + self.usage = set() + + def touch(self, key): + self.usage.add(key) def lookup(self, orig, dest, dim3, key): orig = self.offset_mapper.map(orig) dest = self.offset_mapper.map(dest) - assert key in self.skims_data, "SkimStack key %s missing" % key + assert key in self.key1_blocks, "SkimStack key %s missing" % key + assert key in self.skim_dim3, "SkimStack key %s missing" % key + + block = self.key1_blocks[key] + stacked_skim_data = self.skim_dict.skim_data[block] + skim_keys_to_indexes = self.skim_dim3[key] - stacked_skim_data = self.skims_data[key] - skim_keys_to_indexes = self.skim_keys_to_indexes[key] + self.touch(key) # skim_indexes = dim3.map(skim_keys_to_indexes).astype('int') # this should be faster than map @@ -391,7 +410,7 @@ def wrap(self, left_key, right_key, skim_key): class SkimStackWrapper(object): """ - A SkimStackWrapper object wraps a skims object to add an additional wrinkle of + A SkimStackWrapper object wraps a SkimStack object to add an additional wrinkle of lookup functionality. Upon init the separate skims objects are processed into a 3D matrix so that lookup of the different skims can be performed quickly for each row in the dataframe. In this very @@ -509,7 +528,7 @@ def __init__(self, df): """ self.df = df - self.data = df.as_matrix() + self.data = df.values self.offset_mapper = OffsetMapper() self.offset_mapper.set_offset_list(list(df.index)) diff --git a/activitysim/core/steps/output.py b/activitysim/core/steps/output.py index c19f3a09d..6182729b5 100644 --- a/activitysim/core/steps/output.py +++ b/activitysim/core/steps/output.py @@ -1,18 +1,81 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import logging -import os +import sys import pandas as pd +from collections import OrderedDict + from activitysim.core import pipeline from activitysim.core import inject +from activitysim.core import config from activitysim.core.config import setting logger = logging.getLogger(__name__) +def track_skim_usage(output_dir): + """ + write statistics on skim usage (diagnostic to detect loading of un-needed skims) + + FIXME - have not yet implemented a facility to avoid loading of unused skims + + Parameters + ---------- + output_dir: str + + """ + pd.options.display.max_columns = 500 + pd.options.display.max_rows = 100 + + checkpoints = pipeline.get_checkpoints() + tables = OrderedDict() + + skim_dict = inject.get_injectable('skim_dict') + skim_stack = inject.get_injectable('skim_stack', None) + + mode = 'wb' if sys.version_info < (3,) else 'w' + with open(config.output_file_path('skim_usage.txt'), mode) as output_file: + + print("\n### skim_dict usage", file=output_file) + for key in skim_dict.usage: + print(key, file=output_file) + + if skim_stack is None: + + unused_keys = {k for k in skim_dict.skim_info['omx_keys']} - \ + {k for k in skim_dict.usage} + + print("\n### unused skim keys", file=output_file) + for key in unused_keys: + print(key, file=output_file) + + else: + + print("\n### skim_stack usage", file=output_file) + for key in skim_stack.usage: + print(key, file=output_file) + + unused = {k for k in skim_dict.skim_info['omx_keys'] if not isinstance(k, tuple)} - \ + {k for k in skim_dict.usage if not isinstance(k, tuple)} + print("\n### unused skim str keys", file=output_file) + for key in unused: + print(key, file=output_file) + + unused = {k[0] for k in skim_dict.skim_info['omx_keys'] if isinstance(k, tuple)} - \ + {k[0] for k in skim_dict.usage if isinstance(k, tuple)} - \ + {k for k in skim_stack.usage} + print("\n### unused skim dim3 keys", file=output_file) + for key in unused: + print(key, file=output_file) + + def write_data_dictionary(output_dir): """ Write table_name, number of rows, columns, and bytes for each checkpointed table @@ -28,15 +91,93 @@ def write_data_dictionary(output_dir): output_tables = pipeline.checkpointed_tables() # write data dictionary for all checkpointed_tables - with open(os.path.join(output_dir, 'data_dict.txt'), 'w') as file: + + mode = 'wb' if sys.version_info < (3,) else 'w' + with open(config.output_file_path('data_dict.txt'), mode) as output_file: for table_name in output_tables: df = inject.get_table(table_name, None).to_frame() - print >> file, "\n### %s %s" % (table_name, df.shape) - print >> file, df.dtypes - - rows, columns = df.shape - bytes = df.memory_usage(index=True).sum() + print("\n### %s %s" % (table_name, df.shape), file=output_file) + print('index:', df.index.name, df.index.dtype, file=output_file) + print(df.dtypes, file=output_file) + + +# def xwrite_data_dictionary(output_dir): +# """ +# Write table_name, number of rows, columns, and bytes for each checkpointed table +# +# Parameters +# ---------- +# output_dir: str +# +# """ +# pd.options.display.max_columns = 500 +# pd.options.display.max_rows = 100 +# +# checkpoints = pipeline.get_checkpoints() +# tables = OrderedDict() +# +# table_names = [c for c in checkpoints if c not in pipeline.NON_TABLE_COLUMNS] +# +# with open(config.output_file_path('data_dict.txt'), 'wb') as file: +# +# for index, row in checkpoints.iterrows(): +# +# checkpoint = row[pipeline.CHECKPOINT_NAME] +# +# print("\n##########################################", file=file) +# print("# %s" % checkpoint, file=file) +# print("##########################################", file=file) +# +# for table_name in table_names: +# +# if row[table_name] == '' and table_name in tables: +# print("\n### %s dropped %s" % (checkpoint, table_name, ), file=file) +# del tables[table_name] +# +# if row[table_name] == checkpoint: +# df = pipeline.get_table(table_name, checkpoint) +# info = tables.get(table_name, None) +# if info is None: +# +# print("\n### %s created %s %s\n" % +# (checkpoint, table_name, df.shape), file=file) +# +# print(df.dtypes, file=file) +# print('index:', df.index.name, df.index.dtype, file=file) +# +# else: +# new_cols = [c for c in df.columns.values if c not in info['columns']] +# dropped_cols = [c for c in info['columns'] if c not in df.columns.values] +# new_rows = df.shape[0] - info['num_rows'] +# if new_cols: +# +# print("\n### %s added %s columns to %s %s\n" % +# (checkpoint, len(new_cols), table_name, df.shape), file=file) +# print(df[new_cols].dtypes, file=file) +# +# if dropped_cols: +# print("\n### %s dropped %s columns from %s %s\n" % +# (checkpoint, len(dropped_cols), table_name, df.shape), +# file=file) +# print(dropped_cols, file=file) +# +# if new_rows > 0: +# print("\n### %s added %s rows to %s %s" % +# (checkpoint, new_rows, table_name, df.shape), file=file) +# elif new_rows < 0: +# print("\n### %s dropped %s rows from %s %s" % +# (checkpoint, new_rows, table_name, df.shape), file=file) +# else: +# if not new_cols and not dropped_cols: +# print("\n### %s modified %s %s" % +# (checkpoint, table_name, df.shape), file=file) +# +# tables[table_name] = { +# 'checkpoint_name': checkpoint, +# 'columns': df.columns.values, +# 'num_rows': df.shape[0] +# } def write_tables(output_dir): @@ -76,8 +217,6 @@ def write_tables(output_dir): output_tables_settings = setting(output_tables_settings_name) - output_tables_list = pipeline.checkpointed_tables() - if output_tables_settings is None: logger.info("No output_tables specified in settings file. Nothing to write.") return @@ -90,32 +229,26 @@ def write_tables(output_dir): raise "expected %s action '%s' to be either 'include' or 'skip'" % \ (output_tables_settings_name, action) + checkpointed_tables = pipeline.checkpointed_tables() if action == 'include': output_tables_list = tables elif action == 'skip': - output_tables_list = [t for t in output_tables_list if t not in tables] - - # should provide option to also write checkpoints? - # output_tables_list.append("checkpoints.csv") + output_tables_list = [t for t in checkpointed_tables if t not in tables] for table_name in output_tables_list: - table = inject.get_table(table_name, None) - if table is None: - logger.warn("Skipping '%s': Table not found." % table_name) - continue + if table_name == 'checkpoints': + df = pipeline.get_checkpoints() + else: + if table_name not in checkpointed_tables: + logger.warning("Skipping '%s': Table not found." % table_name) + continue + df = pipeline.get_table(table_name) - df = table.to_frame() file_name = "%s%s.csv" % (prefix, table_name) - logger.info("writing output file %s" % file_name) - file_path = os.path.join(output_dir, file_name) + file_path = config.output_file_path(file_name) # include the index if it has a name or is a MultiIndex write_index = df.index.name is not None or isinstance(df.index, pd.core.index.MultiIndex) df.to_csv(file_path, index=write_index) - - if (action == 'include') == ('checkpoints' in tables): - # write checkpoints - file_name = "%s%s.csv" % (prefix, 'checkpoints') - pipeline.get_checkpoints().to_csv(os.path.join(output_dir, file_name)) diff --git a/activitysim/core/test/configs/custom_logging.yaml b/activitysim/core/test/configs/custom_logging.yaml index 5ab887121..71f1e6d4f 100644 --- a/activitysim/core/test/configs/custom_logging.yaml +++ b/activitysim/core/test/configs/custom_logging.yaml @@ -9,18 +9,18 @@ logging: # Configuring the default (root) logger is highly recommended root: - level: !!python/name:logging.NOTSET + level: NOTSET handlers: [console] loggers: activitysim: - level: !!python/name:logging.DEBUG + level: DEBUG handlers: [console, logfile] propagate: false orca: - level: !!python/name:logging.INFO + level: INFO handlers: [console, logfile] propagate: false @@ -28,27 +28,27 @@ logging: logfile: class: logging.FileHandler - filename: !!python/object/apply:activitysim.core.tracing.log_file_path ['xasim.log'] + filename: !!python/object/apply:activitysim.core.config.log_file_path ['xasim.log'] mode: w formatter: simpleFormatter - level: !!python/name:logging.NOTSET + level: NOTSET console: class: logging.StreamHandler stream: ext://sys.stdout formatter: simpleFormatter - #level: !!python/name:logging.NOTSET - level: !!python/name:logging.WARN + #level: NOTSET + level: WARNING formatters: simpleFormatter: - class: !!python/name:logging.Formatter + class: logging.Formatter format: '%(levelname)s - %(name)s - %(message)s' datefmt: '%d/%m/%Y %H:%M:%S' fileFormatter: - class: !!python/name:logging.Formatter + class: logging.Formatter format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' datefmt: '%d/%m/%Y %H:%M:%S' diff --git a/activitysim/core/test/configs/logging.yaml b/activitysim/core/test/configs/logging.yaml index 28f5a159a..35067d008 100644 --- a/activitysim/core/test/configs/logging.yaml +++ b/activitysim/core/test/configs/logging.yaml @@ -9,18 +9,18 @@ logging: # Configuring the default (root) logger is highly recommended root: - level: !!python/name:logging.NOTSET + level: NOTSET handlers: [console] loggers: activitysim: - level: !!python/name:logging.DEBUG + level: DEBUG handlers: [console, logfile] propagate: false orca: - level: !!python/name:logging.INFO + level: INFO handlers: [console, logfile] propagate: false @@ -28,27 +28,27 @@ logging: logfile: class: logging.FileHandler - filename: !!python/object/apply:activitysim.core.tracing.log_file_path ['activitysim.log'] + filename: !!python/object/apply:activitysim.core.config.log_file_path ['activitysim.log'] mode: w formatter: simpleFormatter - level: !!python/name:logging.NOTSET + level: NOTSET console: class: logging.StreamHandler stream: ext://sys.stdout formatter: simpleFormatter - #level: !!python/name:logging.NOTSET - level: !!python/name:logging.WARN + #level: NOTSET + level: WARNING formatters: simpleFormatter: - class: !!python/name:logging.Formatter + class: logging.Formatter format: '%(levelname)s - %(name)s - %(message)s' datefmt: '%d/%m/%Y %H:%M:%S' fileFormatter: - class: !!python/name:logging.Formatter + class: logging.Formatter format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' datefmt: '%d/%m/%Y %H:%M:%S' diff --git a/activitysim/core/test/extensions/__init__.py b/activitysim/core/test/extensions/__init__.py index ba5d55cf5..4512a2508 100644 --- a/activitysim/core/test/extensions/__init__.py +++ b/activitysim/core/test/extensions/__init__.py @@ -1 +1,2 @@ -import steps +from __future__ import absolute_import +from . import steps diff --git a/activitysim/core/test/extensions/steps.py b/activitysim/core/test/extensions/steps.py index 7a76abd29..3c9ad44bf 100644 --- a/activitysim/core/test/extensions/steps.py +++ b/activitysim/core/test/extensions/steps.py @@ -1,9 +1,13 @@ +from __future__ import (absolute_import, division, print_function, ) import pandas as pd from activitysim.core import inject from activitysim.core import pipeline from activitysim.core import tracing +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + @inject.step() def step1(): @@ -58,10 +62,10 @@ def step_forget_tab(): @inject.step() def create_households(trace_hh_id): - df = pd.DataFrame({'HHID': [1, 2, 3], 'TAZ': {100, 100, 101}}) + df = pd.DataFrame({'household_id': [1, 2, 3], 'TAZ': {100, 100, 101}}) inject.add_table('households', df) - pipeline.get_rn_generator().add_channel(df, 'households') + pipeline.get_rn_generator().add_channel('households', df) if trace_hh_id: tracing.register_traceable_table('households', df) diff --git a/activitysim/core/test/test_assign.py b/activitysim/core/test/test_assign.py index 27946f32b..19051577f 100644 --- a/activitysim/core/test/test_assign.py +++ b/activitysim/core/test/test_assign.py @@ -1,19 +1,20 @@ # ActivitySim # See full license in LICENSE.txt. -import os.path +from __future__ import (absolute_import, division, print_function, ) + +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +import os.path import logging import logging.config -import numpy.testing as npt import numpy as np import pandas as pd -import pandas.util.testing as pdt import pytest -import orca - from .. import assign from .. import tracing from .. import inject @@ -30,7 +31,7 @@ def close_handlers(): def teardown_function(func): - orca.clear_cache() + inject.clear_cache() inject.reinject_decorated_tables() @@ -77,7 +78,7 @@ def test_assign_variables(capsys, spec_name, data): results, trace_results, trace_assigned_locals \ = assign.assign_variables(spec, data, locals_d, trace_rows=None) - print results + print(results) assert list(results.columns) == ['target1', 'target2', 'target3'] assert list(results.target1) == [True, False, False] @@ -95,7 +96,7 @@ def test_assign_variables(capsys, spec_name, data): assert list(results.target3) == [530, 530, 550] # should assign trace_results for second row in data - print trace_results + print(trace_results) assert trace_results is not None assert '_scalar' in trace_results.columns @@ -106,7 +107,7 @@ def test_assign_variables(capsys, spec_name, data): assert list(trace_results['_temp']) == [9] assert list(trace_results['target3']) == [530] - print "trace_assigned_locals", trace_assigned_locals + print("trace_assigned_locals", trace_assigned_locals) assert trace_assigned_locals['_DF_COL_NAME'] == 'thing2' # shouldn't have been changed even though it was a target @@ -130,7 +131,7 @@ def test_assign_variables_aliased(capsys, data): = assign.assign_variables(spec, data, locals_d, df_alias='aliased_df', trace_rows=trace_rows) - print results + print(results) assert list(results.columns) == ['target1', 'target2', 'target3'] assert list(results.target1) == [True, False, False] @@ -138,7 +139,7 @@ def test_assign_variables_aliased(capsys, data): assert list(results.target3) == [530, 530, 550] # should assign trace_results for second row in data - print trace_results + print(trace_results) assert trace_results is not None assert '_scalar' in trace_results.columns @@ -159,7 +160,7 @@ def test_assign_variables_failing(capsys, data): close_handlers() output_dir = os.path.join(os.path.dirname(__file__), 'output') - orca.add_injectable("output_dir", output_dir) + inject.add_injectable("output_dir", output_dir) tracing.config_logger(basic=True) @@ -179,7 +180,7 @@ def test_assign_variables_failing(capsys, data): out, err = capsys.readouterr() # don't consume output - print out + print(out) # undefined variable should raise error assert "'undefined_variable' is not defined" in str(excinfo.value) diff --git a/activitysim/core/test/test_inject_defaults.py b/activitysim/core/test/test_inject_defaults.py index 917cdb355..5f9b98af9 100644 --- a/activitysim/core/test/test_inject_defaults.py +++ b/activitysim/core/test/test_inject_defaults.py @@ -1,50 +1,48 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) + +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import os -import tempfile -import numpy as np -import orca import pytest -import yaml from .. import inject -# Also note that the following import statement has the side-effect of registering injectables: -from .. import inject_defaults +# Note that the following import statement has the side-effect of registering injectables: +from .. import config def teardown_function(func): - orca.clear_cache() + inject.clear_cache() inject.reinject_decorated_tables() def test_defaults(): - orca.clear_cache() + inject.clear_cache() with pytest.raises(RuntimeError) as excinfo: - orca.get_injectable("configs_dir") + inject.get_injectable("configs_dir") assert "directory does not exist" in str(excinfo.value) with pytest.raises(RuntimeError) as excinfo: - orca.get_injectable("data_dir") + inject.get_injectable("data_dir") assert "directory does not exist" in str(excinfo.value) with pytest.raises(RuntimeError) as excinfo: - output_dir = orca.get_injectable("output_dir") - print "output_dir", output_dir + output_dir = inject.get_injectable("output_dir") + print("output_dir", output_dir) assert "directory does not exist" in str(excinfo.value) configs_dir = os.path.join(os.path.dirname(__file__), 'configs_test_defaults') - orca.add_injectable("configs_dir", configs_dir) + inject.add_injectable("configs_dir", configs_dir) - settings = orca.get_injectable("settings") + settings = inject.get_injectable("settings") assert isinstance(settings, dict) data_dir = os.path.join(os.path.dirname(__file__), 'data') - orca.add_injectable("data_dir", data_dir) - - # default values if not specified in settings - assert orca.get_injectable("chunk_size") == 0 + inject.add_injectable("data_dir", data_dir) diff --git a/activitysim/core/test/test_logit.py b/activitysim/core/test/test_logit.py index 9798b51e2..b90ce9d6e 100644 --- a/activitysim/core/test/test_logit.py +++ b/activitysim/core/test/test_logit.py @@ -5,13 +5,13 @@ import numpy as np import pandas as pd -import orca import pandas.util.testing as pdt import pytest from ..simulate import eval_variables from .. import logit +from .. import inject @pytest.fixture(scope='module') @@ -22,10 +22,10 @@ def data_dir(): def add_canonical_dirs(): configs_dir = os.path.join(os.path.dirname(__file__), 'configs') - orca.add_injectable("configs_dir", configs_dir) + inject.add_injectable("configs_dir", configs_dir) output_dir = os.path.join(os.path.dirname(__file__), 'output') - orca.add_injectable("output_dir", output_dir) + inject.add_injectable("output_dir", output_dir) # this is lifted straight from urbansim's test_mnl.py @@ -65,7 +65,7 @@ def utilities(choosers, spec, test_data): vars = eval_variables(spec.index, choosers) utils = vars.dot(spec).astype('float') return pd.DataFrame( - utils.as_matrix().reshape(test_data['probabilities'].shape), + utils.values.reshape(test_data['probabilities'].shape), columns=test_data['probabilities'].columns) @@ -78,7 +78,7 @@ def test_utils_to_probs_raises(): add_canonical_dirs() - idx = pd.Index(name='HHID', data=[1]) + idx = pd.Index(name='household_id', data=[1]) with pytest.raises(RuntimeError) as excinfo: logit.utils_to_probs(pd.DataFrame([[1, 2, np.inf, 3]], index=idx), trace_label=None) assert "infinite exponentiated utilities" in str(excinfo.value) @@ -124,14 +124,16 @@ def interaction_alts(): def test_interaction_dataset_no_sample(interaction_choosers, interaction_alts): expected = pd.DataFrame({ 'attr': ['a'] * 4 + ['b'] * 4 + ['c'] * 4 + ['b'] * 4, - 'prop': [10, 20, 30, 40] * 4, - 'chooser_idx': ['w'] * 4 + ['x'] * 4 + ['y'] * 4 + ['z'] * 4}, + 'prop': [10, 20, 30, 40] * 4}, index=[1, 2, 3, 4] * 4) interacted = logit.interaction_dataset( interaction_choosers, interaction_alts) interacted, expected = interacted.align(expected, axis=1) + + print("interacted\n", interacted) + print("expected\n", expected) pdt.assert_frame_equal(interacted, expected) @@ -139,8 +141,7 @@ def test_interaction_dataset_sampled( interaction_choosers, interaction_alts): expected = pd.DataFrame({ 'attr': ['a'] * 2 + ['b'] * 2 + ['c'] * 2 + ['b'] * 2, - 'prop': [30, 40, 10, 30, 40, 10, 20, 10], - 'chooser_idx': ['w'] * 2 + ['x'] * 2 + ['y'] * 2 + ['z'] * 2}, + 'prop': [30, 40, 10, 30, 40, 10, 20, 10]}, index=[3, 4, 1, 3, 4, 1, 2, 1]) interacted = logit.interaction_dataset( diff --git a/activitysim/core/test/test_mergetables.py b/activitysim/core/test/test_mergetables.py new file mode 100644 index 000000000..0cad197c4 --- /dev/null +++ b/activitysim/core/test/test_mergetables.py @@ -0,0 +1,257 @@ +# Orca +# Copyright (C) 2016 UrbanSim Inc. +# See full license in LICENSE. + +import pandas as pd +import pytest + +from .. import orca +from .utils_testing import assert_frames_equal + + +def setup_function(func): + orca.clear_all() + + +def teardown_function(func): + orca.clear_all() + + +@pytest.fixture +def dfa(): + return orca.DataFrameWrapper('a', pd.DataFrame( + {'a1': [1, 2, 3], + 'a2': [4, 5, 6], + 'a3': [7, 8, 9]}, + index=['aa', 'ab', 'ac'])) + + +@pytest.fixture +def dfz(): + return orca.DataFrameWrapper('z', pd.DataFrame( + {'z1': [90, 91], + 'z2': [92, 93], + 'z3': [94, 95], + 'z4': [96, 97], + 'z5': [98, 99]}, + index=['za', 'zb'])) + + +@pytest.fixture +def dfb(): + return orca.DataFrameWrapper('b', pd.DataFrame( + {'b1': range(10, 15), + 'b2': range(15, 20), + 'a_id': ['ac', 'ac', 'ab', 'aa', 'ab'], + 'z_id': ['zb', 'zb', 'za', 'za', 'zb']}, + index=['ba', 'bb', 'bc', 'bd', 'be'])) + + +@pytest.fixture +def dfc(): + return orca.DataFrameWrapper('c', pd.DataFrame( + {'c1': range(20, 30), + 'c2': range(30, 40), + 'b_id': ['ba', 'bd', 'bb', 'bc', 'bb', 'ba', 'bb', 'bc', 'bd', 'bb']}, + index=['ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'cg', 'ch', 'ci', 'cj'])) + + +@pytest.fixture +def dfg(): + return orca.DataFrameWrapper('g', pd.DataFrame( + {'g1': [1, 2, 3]}, + index=['ga', 'gb', 'gc'])) + + +@pytest.fixture +def dfh(): + return orca.DataFrameWrapper('h', pd.DataFrame( + {'h1': range(10, 15), + 'g_id': ['ga', 'gb', 'gc', 'ga', 'gb']}, + index=['ha', 'hb', 'hc', 'hd', 'he'])) + + +def all_broadcasts(): + orca.broadcast('a', 'b', cast_index=True, onto_on='a_id') + orca.broadcast('z', 'b', cast_index=True, onto_on='z_id') + orca.broadcast('b', 'c', cast_index=True, onto_on='b_id') + orca.broadcast('g', 'h', cast_index=True, onto_on='g_id') + + +def test_recursive_getitem(): + assert orca._recursive_getitem({'a': {}}, 'a') == {'a': {}} + assert orca._recursive_getitem( + {'a': {'b': {'c': {'d': {}, 'e': {}}}}}, 'e') == {'d': {}, 'e': {}} + + with pytest.raises(KeyError): + orca._recursive_getitem({'a': {'b': {'c': {'d': {}, 'e': {}}}}}, 'f') + + +def test_dict_value_to_pairs(): + assert sorted(orca._dict_value_to_pairs({'c': {'a': 1, 'b': 2}}), + key=lambda d: next(iter(d))) == \ + [{'a': 1}, {'b': 2}] + + +def test_is_leaf_node(): + assert orca._is_leaf_node({'b': {'a': {}}}) is False + assert orca._is_leaf_node({'a': {}}) is True + + +def test_next_merge(): + assert orca._next_merge({'d': {'c': {}, 'b': {'a': {}}}}) == \ + {'b': {'a': {}}} + assert orca._next_merge({'b': {'a': {}, 'z': {}}}) == \ + {'b': {'a': {}, 'z': {}}} + + +def test_merge_tables_raises(dfa, dfz, dfb, dfg, dfh): + all_broadcasts() + + with pytest.raises(RuntimeError): + orca.merge_tables('b', [dfa, dfb, dfz, dfg, dfh]) + + +def test_merge_tables1(dfa, dfz, dfb): + all_broadcasts() + + merged = orca.merge_tables('b', [dfa, dfz, dfb]) + + expected = pd.merge( + dfa.to_frame(), dfb.to_frame(), left_index=True, right_on='a_id') + expected = pd.merge( + expected, dfz.to_frame(), left_on='z_id', right_index=True) + + assert_frames_equal(merged, expected) + + +def test_merge_tables2(dfa, dfz, dfb, dfc): + all_broadcasts() + + merged = orca.merge_tables(dfc, [dfa, dfz, dfb, dfc]) + + expected = pd.merge( + dfa.to_frame(), dfb.to_frame(), left_index=True, right_on='a_id') + expected = pd.merge( + expected, dfz.to_frame(), left_on='z_id', right_index=True) + expected = pd.merge( + expected, dfc.to_frame(), left_index=True, right_on='b_id') + + assert_frames_equal(merged, expected) + + +def test_merge_tables_cols(dfa, dfz, dfb, dfc): + all_broadcasts() + + merged = orca.merge_tables( + 'c', [dfa, dfz, dfb, dfc], columns=['a1', 'b1', 'z1', 'c1']) + + expected = pd.DataFrame( + {'c1': range(20, 30), + 'b1': [10, 13, 11, 12, 11, 10, 11, 12, 13, 11], + 'a1': [3, 1, 3, 2, 3, 3, 3, 2, 1, 3], + 'z1': [91, 90, 91, 90, 91, 91, 91, 90, 90, 91]}, + index=['ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'cg', 'ch', 'ci', 'cj']) + + assert_frames_equal(merged, expected) + + +def test_merge_tables3(): + df_a = pd.DataFrame( + {'a': [0, 1]}, + index=['a0', 'a1']) + df_b = pd.DataFrame( + {'b': [2, 3, 4, 5, 6], + 'a_id': ['a0', 'a1', 'a1', 'a0', 'a1']}, + index=['b0', 'b1', 'b2', 'b3', 'b4']) + df_c = pd.DataFrame( + {'c': [7, 8, 9]}, + index=['c0', 'c1', 'c2']) + df_d = pd.DataFrame( + {'d': [10, 11, 12, 13, 15, 16, 16, 17, 18, 19], + 'b_id': ['b2', 'b0', 'b3', 'b3', 'b1', 'b4', 'b1', 'b4', 'b3', 'b3'], + 'c_id': ['c0', 'c1', 'c1', 'c0', 'c0', 'c2', 'c1', 'c2', 'c1', 'c2']}, + index=['d0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9']) + + orca.add_table('a', df_a) + orca.add_table('b', df_b) + orca.add_table('c', df_c) + orca.add_table('d', df_d) + + orca.broadcast(cast='a', onto='b', cast_index=True, onto_on='a_id') + orca.broadcast(cast='b', onto='d', cast_index=True, onto_on='b_id') + orca.broadcast(cast='c', onto='d', cast_index=True, onto_on='c_id') + + df = orca.merge_tables(target='d', tables=['a', 'b', 'c', 'd']) + + expected = pd.merge(df_a, df_b, left_index=True, right_on='a_id') + expected = pd.merge(expected, df_d, left_index=True, right_on='b_id') + expected = pd.merge(df_c, expected, left_index=True, right_on='c_id') + + assert_frames_equal(df, expected) + + +def test_merge_tables_dup_columns(): + # I'm intentionally setting the zone-ids to something different when joined + # in a real case they'd likely be the same but the whole point of this + # test is to see if we can get them back with different names tied to each + # table and they need to be different to test if that's working + hh_df = pd.DataFrame({'zone_id': [1, 1, 2], 'building_id': [5, 5, 6]}) + orca.add_table('households', hh_df) + + bldg_df = pd.DataFrame( + {'zone_id': [2, 3], 'parcel_id': [0, 1]}, index=[5, 6]) + orca.add_table('buildings', bldg_df) + + parcels_df = pd.DataFrame({'zone_id': [4, 5]}, index=[0, 1]) + orca.add_table('parcels', parcels_df) + + orca.broadcast( + 'buildings', 'households', cast_index=True, onto_on='building_id') + orca.broadcast('parcels', 'buildings', cast_index=True, onto_on='parcel_id') + + df = orca.merge_tables( + target='households', tables=['households', 'buildings', 'parcels']) + + expected = pd.DataFrame( + {'building_id': [5, 5, 6], 'parcel_id': [0, 0, 1], 'zone_id': [1, 1, 2]}) + assert_frames_equal(df, expected) + + df = orca.merge_tables( + target='households', + tables=['households', 'buildings', 'parcels'], + drop_intersection=False) + + expected = pd.DataFrame({ + 'building_id': [5, 5, 6], + 'parcel_id': [0, 0, 1], + 'zone_id_households': [1, 1, 2], + 'zone_id_buildings': [2, 2, 3], + 'zone_id_parcels': [4, 4, 5] + }) + assert_frames_equal(df, expected) + + df = orca.merge_tables( + target='households', + tables=['households', 'buildings'], + drop_intersection=False) + + expected = pd.DataFrame({ + 'building_id': [5, 5, 6], + 'parcel_id': [0, 0, 1], + 'zone_id_households': [1, 1, 2], + 'zone_id_buildings': [2, 2, 3] + }) + assert_frames_equal(df, expected) + + df = orca.merge_tables( + target='households', + tables=['households', 'buildings'] + ) + + expected = pd.DataFrame({ + 'building_id': [5, 5, 6], + 'parcel_id': [0, 0, 1], + 'zone_id': [1, 1, 2] + }) + assert_frames_equal(df, expected) diff --git a/activitysim/core/test/test_orca.py b/activitysim/core/test/test_orca.py new file mode 100644 index 000000000..f040a8c28 --- /dev/null +++ b/activitysim/core/test/test_orca.py @@ -0,0 +1,1267 @@ +# Orca +# Copyright (C) 2016 UrbanSim Inc. +# See full license in LICENSE. + +import os +import tempfile + +import tables +import pandas as pd +import pytest +from pandas.util import testing as pdt + +from activitysim.core import orca +from activitysim.core import inject +from .utils_testing import assert_frames_equal + + +def setup_function(func): + orca.clear_all() + orca.enable_cache() + + +def teardown_function(func): + orca.clear_all() + orca.enable_cache() + # be nice to the others tests that expect decorated injectables to be there + inject.reinject_decorated_tables() + + +@pytest.fixture +def df(): + return pd.DataFrame( + [[1, 4], + [2, 5], + [3, 6]], + columns=['a', 'b'], + index=['x', 'y', 'z']) + + +def test_tables(df): + wrapped_df = orca.add_table('test_frame', df) + + @orca.table() + def test_func(test_frame): + return test_frame.to_frame() / 2 + + assert set(orca.list_tables()) == {'test_frame', 'test_func'} + + table = orca.get_table('test_frame') + assert table is wrapped_df + assert table.columns == ['a', 'b'] + assert table.local_columns == ['a', 'b'] + assert len(table) == 3 + pdt.assert_index_equal(table.index, df.index) + pdt.assert_series_equal(table.get_column('a'), df.a) + pdt.assert_series_equal(table.a, df.a) + pdt.assert_series_equal(table['b'], df['b']) + + table = orca._TABLES['test_func'] + assert table.index is None + assert table.columns == [] + assert len(table) is 0 + pdt.assert_frame_equal(table.to_frame(), df / 2) + pdt.assert_frame_equal(table.to_frame([]), df[[]]) + pdt.assert_frame_equal(table.to_frame(columns=['a']), df[['a']] / 2) + pdt.assert_frame_equal(table.to_frame(columns='a'), df[['a']] / 2) + pdt.assert_index_equal(table.index, df.index) + pdt.assert_series_equal(table.get_column('a'), df.a / 2) + pdt.assert_series_equal(table.a, df.a / 2) + pdt.assert_series_equal(table['b'], df['b'] / 2) + assert len(table) == 3 + assert table.columns == ['a', 'b'] + + +def test_table_func_cache(df): + orca.add_injectable('x', 2) + + @orca.table(cache=True) + def table(variable='x'): + return df * variable + + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 2) + orca.add_injectable('x', 3) + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 2) + orca.get_table('table').clear_cached() + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 3) + orca.add_injectable('x', 4) + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 3) + orca.clear_cache() + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 4) + orca.add_injectable('x', 5) + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 4) + orca.add_table('table', table) + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 5) + + +def test_table_func_cache_disabled(df): + orca.add_injectable('x', 2) + + @orca.table('table', cache=True) + def asdf(x): + return df * x + + orca.disable_cache() + + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 2) + orca.add_injectable('x', 3) + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 3) + + orca.enable_cache() + + orca.add_injectable('x', 4) + pdt.assert_frame_equal(orca.get_table('table').to_frame(), df * 3) + + +def test_table_copy(df): + orca.add_table('test_frame_copied', df, copy_col=True) + orca.add_table('test_frame_uncopied', df, copy_col=False) + orca.add_table('test_func_copied', lambda: df, copy_col=True) + orca.add_table('test_func_uncopied', lambda: df, copy_col=False) + + @orca.table(copy_col=True) + def test_funcd_copied(): + return df + + @orca.table(copy_col=False) + def test_funcd_uncopied(): + return df + + @orca.table(copy_col=True) + def test_funcd_copied2(test_frame_copied): + # local returns original, but it is copied by copy_col. + return test_frame_copied.local + + @orca.table(copy_col=True) + def test_funcd_copied3(test_frame_uncopied): + # local returns original, but it is copied by copy_col. + return test_frame_uncopied.local + + @orca.table(copy_col=False) + def test_funcd_uncopied2(test_frame_copied): + # local returns original. + return test_frame_copied.local + + @orca.table(copy_col=False) + def test_funcd_uncopied3(test_frame_uncopied): + # local returns original. + return test_frame_uncopied.local + + orca.add_table('test_cache_copied', lambda: df, cache=True, copy_col=True) + orca.add_table( + 'test_cache_uncopied', lambda: df, cache=True, copy_col=False) + + @orca.table(cache=True, copy_col=True) + def test_cached_copied(): + return df + + @orca.table(cache=True, copy_col=False) + def test_cached_uncopied(): + return df + + # Create tables with computed columns. + orca.add_table( + 'test_copied_columns', pd.DataFrame(index=df.index), copy_col=True) + orca.add_table( + 'test_uncopied_columns', pd.DataFrame(index=df.index), copy_col=False) + for column_name in ['a', 'b']: + label = "test_frame_uncopied.{}".format(column_name) + + def func(col=label): + return col + for table_name in ['test_copied_columns', 'test_uncopied_columns']: + orca.add_column(table_name, column_name, func) + + for name in ['test_frame_uncopied', 'test_func_uncopied', + 'test_funcd_uncopied', 'test_funcd_uncopied2', + 'test_funcd_uncopied3', 'test_cache_uncopied', + 'test_cached_uncopied', 'test_uncopied_columns', + 'test_frame_copied', 'test_func_copied', + 'test_funcd_copied', 'test_funcd_copied2', + 'test_funcd_copied3', 'test_cache_copied', + 'test_cached_copied', 'test_copied_columns']: + table = orca.get_table(name) + table2 = orca.get_table(name) + + # to_frame will always return a copy. + if 'columns' in name: + assert_frames_equal(table.to_frame(), df) + else: + pdt.assert_frame_equal(table.to_frame(), df) + assert table.to_frame() is not df + pdt.assert_frame_equal(table.to_frame(), table.to_frame()) + assert table.to_frame() is not table.to_frame() + pdt.assert_series_equal(table.to_frame()['a'], df['a']) + assert table.to_frame()['a'] is not df['a'] + pdt.assert_series_equal(table.to_frame()['a'], + table.to_frame()['a']) + assert table.to_frame()['a'] is not table.to_frame()['a'] + + if 'uncopied' in name: + pdt.assert_series_equal(table['a'], df['a']) + assert table['a'] is df['a'] + pdt.assert_series_equal(table['a'], table2['a']) + assert table['a'] is table2['a'] + else: + pdt.assert_series_equal(table['a'], df['a']) + assert table['a'] is not df['a'] + pdt.assert_series_equal(table['a'], table2['a']) + assert table['a'] is not table2['a'] + + +def test_columns_for_table(): + orca.add_column( + 'table1', 'col10', pd.Series([1, 2, 3], index=['a', 'b', 'c'])) + orca.add_column( + 'table2', 'col20', pd.Series([10, 11, 12], index=['x', 'y', 'z'])) + + @orca.column('table1') + def col11(): + return pd.Series([4, 5, 6], index=['a', 'b', 'c']) + + @orca.column('table2', 'col21') + def asdf(): + return pd.Series([13, 14, 15], index=['x', 'y', 'z']) + + t1_col_names = orca.list_columns_for_table('table1') + assert set(t1_col_names) == {'col10', 'col11'} + + t2_col_names = orca.list_columns_for_table('table2') + assert set(t2_col_names) == {'col20', 'col21'} + + t1_cols = orca._columns_for_table('table1') + assert 'col10' in t1_cols and 'col11' in t1_cols + + t2_cols = orca._columns_for_table('table2') + assert 'col20' in t2_cols and 'col21' in t2_cols + + +def test_columns_and_tables(df): + orca.add_table('test_frame', df) + + @orca.table() + def test_func(test_frame): + return test_frame.to_frame() / 2 + + orca.add_column('test_frame', 'c', pd.Series([7, 8, 9], index=df.index)) + + @orca.column('test_func', 'd') + def asdf(test_func): + return test_func.to_frame(columns=['b'])['b'] * 2 + + @orca.column('test_func') + def e(column='test_func.d'): + return column + 1 + + test_frame = orca.get_table('test_frame') + assert set(test_frame.columns) == set(['a', 'b', 'c']) + assert_frames_equal( + test_frame.to_frame(), + pd.DataFrame( + {'a': [1, 2, 3], + 'b': [4, 5, 6], + 'c': [7, 8, 9]}, + index=['x', 'y', 'z'])) + assert_frames_equal( + test_frame.to_frame(columns=['a', 'c']), + pd.DataFrame( + {'a': [1, 2, 3], + 'c': [7, 8, 9]}, + index=['x', 'y', 'z'])) + + test_func_df = orca._TABLES['test_func'] + assert set(test_func_df.columns) == set(['d', 'e']) + assert_frames_equal( + test_func_df.to_frame(), + pd.DataFrame( + {'a': [0.5, 1, 1.5], + 'b': [2, 2.5, 3], + 'c': [3.5, 4, 4.5], + 'd': [4., 5., 6.], + 'e': [5., 6., 7.]}, + index=['x', 'y', 'z'])) + assert_frames_equal( + test_func_df.to_frame(columns=['b', 'd']), + pd.DataFrame( + {'b': [2, 2.5, 3], + 'd': [4., 5., 6.]}, + index=['x', 'y', 'z'])) + assert set(test_func_df.columns) == set(['a', 'b', 'c', 'd', 'e']) + + assert set(orca.list_columns()) == { + ('test_frame', 'c'), ('test_func', 'd'), ('test_func', 'e')} + + +def test_column_cache(df): + orca.add_injectable('x', 2) + series = pd.Series([1, 2, 3], index=['x', 'y', 'z']) + key = ('table', 'col') + + @orca.table() + def table(): + return df + + @orca.column(*key, cache=True) + def column(variable='x'): + return series * variable + + def c(): + return orca._COLUMNS[key] + + pdt.assert_series_equal(c()(), series * 2) + orca.add_injectable('x', 3) + pdt.assert_series_equal(c()(), series * 2) + c().clear_cached() + pdt.assert_series_equal(c()(), series * 3) + orca.add_injectable('x', 4) + pdt.assert_series_equal(c()(), series * 3) + orca.clear_cache() + pdt.assert_series_equal(c()(), series * 4) + orca.add_injectable('x', 5) + pdt.assert_series_equal(c()(), series * 4) + orca.get_table('table').clear_cached() + pdt.assert_series_equal(c()(), series * 5) + orca.add_injectable('x', 6) + pdt.assert_series_equal(c()(), series * 5) + orca.add_column(*key, column=column, cache=True) + pdt.assert_series_equal(c()(), series * 6) + + +def test_column_cache_disabled(df): + orca.add_injectable('x', 2) + series = pd.Series([1, 2, 3], index=['x', 'y', 'z']) + key = ('table', 'col') + + @orca.table() + def table(): + return df + + @orca.column(*key, cache=True) + def column(x): + return series * x + + def c(): + return orca._COLUMNS[key] + + orca.disable_cache() + + pdt.assert_series_equal(c()(), series * 2) + orca.add_injectable('x', 3) + pdt.assert_series_equal(c()(), series * 3) + + orca.enable_cache() + + orca.add_injectable('x', 4) + pdt.assert_series_equal(c()(), series * 3) + + +def test_update_col(df): + wrapped = orca.add_table('table', df) + + wrapped.update_col('b', pd.Series([7, 8, 9], index=df.index)) + pdt.assert_series_equal( + wrapped['b'], pd.Series([7, 8, 9], index=df.index, name='b')) + + a_dtype = wrapped['a'].dtype + + # test 1 - cast the data type before the update + wrapped.update_col_from_series('a', pd.Series(dtype=a_dtype)) + pdt.assert_series_equal(wrapped['a'], df['a']) + + # test 2 - let the update method do the cast + wrapped.update_col_from_series('a', pd.Series(), True) + pdt.assert_series_equal(wrapped['a'], df['a']) + + # test 3 - don't cast, should raise an error + with pytest.raises(ValueError): + wrapped.update_col_from_series('a', pd.Series()) + + wrapped.update_col_from_series('a', pd.Series([99], index=['y'])) + pdt.assert_series_equal( + wrapped['a'], pd.Series([1, 99, 3], index=df.index, name='a')) + + +class _FakeTable(object): + def __init__(self, name, columns): + self.name = name + self.columns = columns + + +@pytest.fixture +def fta(): + return _FakeTable('a', ['aa', 'ab', 'ac']) + + +@pytest.fixture +def ftb(): + return _FakeTable('b', ['bx', 'by', 'bz']) + + +def test_column_map_raises(fta, ftb): + with pytest.raises(RuntimeError): + orca.column_map([fta, ftb], ['aa', 'by', 'bz', 'cw']) + + +def test_column_map_none(fta, ftb): + assert orca.column_map([fta, ftb], None) == {'a': None, 'b': None} + + +def test_column_map(fta, ftb): + result = orca.column_map([fta, ftb], ['aa', 'by', 'bz']) + assert result['a'] == ['aa'] + assert sorted(result['b']) == ['by', 'bz'] + + result = orca.column_map([fta, ftb], ['by', 'bz']) + assert result['a'] == [] + assert sorted(result['b']) == ['by', 'bz'] + + +def test_is_step(): + @orca.step() + def test_step(): + pass + + assert orca.is_step('test_step') is True + assert orca.is_step('not_a_step') is False + + +def test_steps(df): + orca.add_table('test_table', df) + + df2 = df / 2 + orca.add_table('test_table2', df2) + + @orca.step() + def test_step(test_table, test_column='test_table2.b'): + tt = test_table.to_frame() + test_table['a'] = tt['a'] + tt['b'] + pdt.assert_series_equal(test_column, df2['b']) + + with pytest.raises(KeyError): + orca.get_step('asdf') + + step = orca.get_step('test_step') + assert step._tables_used() == set(['test_table', 'test_table2']) + step() + + table = orca.get_table('test_table') + pdt.assert_frame_equal( + table.to_frame(), + pd.DataFrame( + {'a': [5, 7, 9], + 'b': [4, 5, 6]}, + index=['x', 'y', 'z'])) + + assert orca.list_steps() == ['test_step'] + + +def test_step_run(df): + orca.add_table('test_table', df) + + @orca.table() + def table_func(test_table): + tt = test_table.to_frame() + tt['c'] = [7, 8, 9] + return tt + + @orca.column('table_func') + def new_col(test_table, table_func): + tt = test_table.to_frame() + tf = table_func.to_frame(columns=['c']) + return tt['a'] + tt['b'] + tf['c'] + + @orca.step() + def test_step1(iter_var, test_table, table_func): + tf = table_func.to_frame(columns=['new_col']) + test_table[iter_var] = tf['new_col'] + iter_var + + @orca.step('test_step2') + def asdf(table='test_table'): + tt = table.to_frame() + table['a'] = tt['a'] ** 2 + + orca.run(steps=['test_step1', 'test_step2'], iter_vars=[2000, 3000]) + + test_table = orca.get_table('test_table') + assert_frames_equal( + test_table.to_frame(), + pd.DataFrame( + {'a': [1, 16, 81], + 'b': [4, 5, 6], + 2000: [2012, 2015, 2018], + 3000: [3012, 3017, 3024]}, + index=['x', 'y', 'z'])) + + m = orca.get_step('test_step1') + assert set(m._tables_used()) == {'test_table', 'table_func'} + + +def test_step_func_source_data(): + @orca.step() + def test_step(): + return 'orca' + + filename, lineno, source = orca.get_step('test_step').func_source_data() + + assert filename.endswith('test_orca.py') + assert isinstance(lineno, int) + assert source == ( + " @orca.step()\n" + " def test_step():\n" + " return 'orca'\n") + + +def test_get_broadcast(): + orca.broadcast('a', 'b', cast_on='ax', onto_on='bx') + orca.broadcast('x', 'y', cast_on='yx', onto_index=True) + + assert orca.is_broadcast('a', 'b') is True + assert orca.is_broadcast('b', 'a') is False + + with pytest.raises(KeyError): + orca.get_broadcast('b', 'a') + + ab = orca.get_broadcast('a', 'b') + assert isinstance(ab, orca.Broadcast) + assert ab == ('a', 'b', 'ax', 'bx', False, False) + + xy = orca.get_broadcast('x', 'y') + assert isinstance(xy, orca.Broadcast) + assert xy == ('x', 'y', 'yx', None, False, True) + + +def test_get_broadcasts(): + orca.broadcast('a', 'b') + orca.broadcast('b', 'c') + orca.broadcast('z', 'b') + orca.broadcast('f', 'g') + + with pytest.raises(ValueError): + orca._get_broadcasts(['a', 'b', 'g']) + + assert set(orca._get_broadcasts(['a', 'b', 'c', 'z']).keys()) == \ + {('a', 'b'), ('b', 'c'), ('z', 'b')} + assert set(orca._get_broadcasts(['a', 'b', 'z']).keys()) == \ + {('a', 'b'), ('z', 'b')} + assert set(orca._get_broadcasts(['a', 'b', 'c']).keys()) == \ + {('a', 'b'), ('b', 'c')} + + assert set(orca.list_broadcasts()) == \ + {('a', 'b'), ('b', 'c'), ('z', 'b'), ('f', 'g')} + + +def test_collect_variables(df): + orca.add_table('df', df) + + @orca.table() + def df_func(): + return df + + @orca.column('df') + def zzz(): + return df['a'] / 2 + + orca.add_injectable('answer', 42) + + @orca.injectable() + def injected(): + return 'injected' + + @orca.table('source table', cache=True) + def source(): + return df + + with pytest.raises(KeyError): + orca._collect_variables(['asdf']) + + with pytest.raises(KeyError): + orca._collect_variables(names=['df'], expressions=['asdf']) + + names = ['df', 'df_func', 'answer', 'injected', 'source_label', 'df_a'] + expressions = ['source table', 'df.a'] + things = orca._collect_variables(names, expressions) + + assert set(things.keys()) == set(names) + assert isinstance(things['source_label'], orca.DataFrameWrapper) + pdt.assert_frame_equal(things['source_label'].to_frame(), df) + assert isinstance(things['df_a'], pd.Series) + pdt.assert_series_equal(things['df_a'], df['a']) + + +def test_collect_variables_expression_only(df): + @orca.table() + def table(): + return df + + vars = orca._collect_variables(['a'], ['table.a']) + pdt.assert_series_equal(vars['a'], df.a) + + +def test_injectables(): + orca.add_injectable('answer', 42) + + @orca.injectable() + def func1(answer): + return answer * 2 + + @orca.injectable('func2', autocall=False) + def asdf(variable='x'): + return variable / 2 + + @orca.injectable() + def func3(func2): + return func2(4) + + @orca.injectable() + def func4(func='func1'): + return func / 2 + + assert orca._INJECTABLES['answer'] == 42 + assert orca._INJECTABLES['func1']() == 42 * 2 + assert orca._INJECTABLES['func2'](4) == 2 + assert orca._INJECTABLES['func3']() == 2 + assert orca._INJECTABLES['func4']() == 42 + + assert orca.get_injectable('answer') == 42 + assert orca.get_injectable('func1') == 42 * 2 + assert orca.get_injectable('func2')(4) == 2 + assert orca.get_injectable('func3') == 2 + assert orca.get_injectable('func4') == 42 + + with pytest.raises(KeyError): + orca.get_injectable('asdf') + + assert set(orca.list_injectables()) == \ + {'answer', 'func1', 'func2', 'func3', 'func4'} + + +def test_injectables_combined(df): + @orca.injectable() + def column(): + return pd.Series(['a', 'b', 'c'], index=df.index) + + @orca.table() + def table(): + return df + + @orca.step() + def step(table, column): + df = table.to_frame() + df['new'] = column + orca.add_table('table', df) + + orca.run(steps=['step']) + + table_wr = orca.get_table('table').to_frame() + + pdt.assert_frame_equal(table_wr[['a', 'b']], df) + pdt.assert_series_equal(table_wr['new'], pd.Series(column(), name='new')) + + +def test_injectables_cache(): + x = 2 + + @orca.injectable(autocall=True, cache=True) + def inj(): + return x * x + + def i(): + return orca._INJECTABLES['inj'] + + assert i()() == 4 + x = 3 + assert i()() == 4 + i().clear_cached() + assert i()() == 9 + x = 4 + assert i()() == 9 + orca.clear_cache() + assert i()() == 16 + x = 5 + assert i()() == 16 + orca.add_injectable('inj', inj, autocall=True, cache=True) + assert i()() == 25 + + +def test_injectables_cache_disabled(): + x = 2 + + @orca.injectable(autocall=True, cache=True) + def inj(): + return x * x + + def i(): + return orca._INJECTABLES['inj'] + + orca.disable_cache() + + assert i()() == 4 + x = 3 + assert i()() == 9 + + orca.enable_cache() + + assert i()() == 9 + x = 4 + assert i()() == 9 + + orca.disable_cache() + assert i()() == 16 + + +def test_memoized_injectable(): + outside = 'x' + + @orca.injectable(autocall=False, memoize=True) + def x(s): + return outside + s + + assert 'x' in orca._MEMOIZED + + def getx(): + return orca.get_injectable('x') + + assert hasattr(getx(), 'cache') + assert hasattr(getx(), 'clear_cached') + + assert getx()('y') == 'xy' + outside = 'z' + assert getx()('y') == 'xy' + + getx().clear_cached() + + assert getx()('y') == 'zy' + + +def test_memoized_injectable_cache_off(): + outside = 'x' + + @orca.injectable(autocall=False, memoize=True) + def x(s): + return outside + s + + def getx(): + return orca.get_injectable('x')('y') + + orca.disable_cache() + + assert getx() == 'xy' + outside = 'z' + assert getx() == 'zy' + + orca.enable_cache() + outside = 'a' + + assert getx() == 'zy' + + orca.disable_cache() + + assert getx() == 'ay' + + +def test_clear_cache_all(df): + @orca.table(cache=True) + def table(): + return df + + @orca.column('table', cache=True) + def z(table): + return df.a + + @orca.injectable(cache=True) + def x(): + return 'x' + + @orca.injectable(autocall=False, memoize=True) + def y(s): + return s + 'y' + + orca.eval_variable('table.z') + orca.eval_variable('x') + orca.get_injectable('y')('x') + + assert list(orca._TABLE_CACHE.keys()) == ['table'] + assert list(orca._COLUMN_CACHE.keys()) == [('table', 'z')] + assert list(orca._INJECTABLE_CACHE.keys()) == ['x'] + assert orca._MEMOIZED['y'].value.cache == {(('x',), None): 'xy'} + + orca.clear_cache() + + assert orca._TABLE_CACHE == {} + assert orca._COLUMN_CACHE == {} + assert orca._INJECTABLE_CACHE == {} + assert orca._MEMOIZED['y'].value.cache == {} + + +def test_clear_cache_scopes(df): + @orca.table(cache=True, cache_scope='forever') + def table(): + return df + + @orca.column('table', cache=True, cache_scope='iteration') + def z(table): + return df.a + + @orca.injectable(cache=True, cache_scope='step') + def x(): + return 'x' + + @orca.injectable(autocall=False, memoize=True, cache_scope='iteration') + def y(s): + return s + 'y' + + orca.eval_variable('table.z') + orca.eval_variable('x') + orca.get_injectable('y')('x') + + assert list(orca._TABLE_CACHE.keys()) == ['table'] + assert list(orca._COLUMN_CACHE.keys()) == [('table', 'z')] + assert list(orca._INJECTABLE_CACHE.keys()) == ['x'] + assert orca._MEMOIZED['y'].value.cache == {(('x',), None): 'xy'} + + orca.clear_cache(scope='step') + + assert list(orca._TABLE_CACHE.keys()) == ['table'] + assert list(orca._COLUMN_CACHE.keys()) == [('table', 'z')] + assert orca._INJECTABLE_CACHE == {} + assert orca._MEMOIZED['y'].value.cache == {(('x',), None): 'xy'} + + orca.clear_cache(scope='iteration') + + assert list(orca._TABLE_CACHE.keys()) == ['table'] + assert orca._COLUMN_CACHE == {} + assert orca._INJECTABLE_CACHE == {} + assert orca._MEMOIZED['y'].value.cache == {} + + orca.clear_cache(scope='forever') + + assert orca._TABLE_CACHE == {} + assert orca._COLUMN_CACHE == {} + assert orca._INJECTABLE_CACHE == {} + assert orca._MEMOIZED['y'].value.cache == {} + + +def test_cache_scope(df): + orca.add_injectable('x', 11) + orca.add_injectable('y', 22) + orca.add_injectable('z', 33) + orca.add_injectable('iterations', 1) + + @orca.injectable(cache=True, cache_scope='forever') + def a(x): + return x + + @orca.injectable(cache=True, cache_scope='iteration') + def b(y): + return y + + @orca.injectable(cache=True, cache_scope='step') + def c(z): + return z + + @orca.step() + def m1(iter_var, a, b, c): + orca.add_injectable('x', iter_var + a) + orca.add_injectable('y', iter_var + b) + orca.add_injectable('z', iter_var + c) + + assert a == 11 + + @orca.step() + def m2(iter_var, a, b, c, iterations): + assert a == 11 + if iter_var == 1000: + assert b == 22 + assert c == 1033 + elif iter_var == 2000: + assert b == 1022 + assert c == 3033 + + orca.add_injectable('iterations', iterations + 1) + + orca.run(['m1', 'm2'], iter_vars=[1000, 2000]) + + +def test_table_func_local_cols(df): + @orca.table() + def table(): + return df + orca.add_column( + 'table', 'new', pd.Series(['a', 'b', 'c'], index=df.index)) + + assert orca.get_table('table').local_columns == ['a', 'b'] + + +def test_is_table(df): + orca.add_table('table', df) + assert orca.is_table('table') is True + assert orca.is_table('asdf') is False + + +@pytest.fixture +def store_name(request): + fname = tempfile.NamedTemporaryFile(suffix='.h5').name + + def fin(): + if os.path.isfile(fname): + os.remove(fname) + request.addfinalizer(fin) + + return fname + + +@pytest.mark.filterwarnings('ignore::tables.NaturalNameWarning') +def test_write_tables(df, store_name): + orca.add_table('table', df) + + @orca.step() + def step(table): + pass + + step_tables = orca.get_step_table_names(['step']) + + orca.write_tables(store_name, step_tables) + with pd.HDFStore(store_name, mode='r') as store: + assert 'table' in store + pdt.assert_frame_equal(store['table'], df) + + orca.write_tables(store_name, step_tables, prefix=1969) + + with pd.HDFStore(store_name, mode='r') as store: + assert '1969/table' in store + pdt.assert_frame_equal(store['1969/table'], df) + + +def test_write_all_tables(df, store_name): + orca.add_table('table', df) + orca.write_tables(store_name) + + with pd.HDFStore(store_name, mode='r') as store: + for t in orca.list_tables(): + assert t in store + + +@pytest.mark.filterwarnings('ignore::tables.NaturalNameWarning') +def test_run_and_write_tables(df, store_name): + orca.add_table('table', df) + + def year_key(y): + return '{}'.format(y) + + def series_year(y): + return pd.Series([y] * 3, index=df.index, name=str(y)) + + @orca.step() + def step(iter_var, table): + table[year_key(iter_var)] = series_year(iter_var) + + orca.run( + ['step'], iter_vars=range(11), data_out=store_name, out_interval=3) + + with pd.HDFStore(store_name, mode='r') as store: + for year in range(0, 11, 3): + key = '{}/table'.format(year) + assert key in store + + for x in range(year): + pdt.assert_series_equal( + store[key][year_key(x)], series_year(x)) + + assert 'base/table' in store + + for x in range(11): + pdt.assert_series_equal( + store['10/table'][year_key(x)], series_year(x)) + + +@pytest.mark.filterwarnings('ignore::tables.NaturalNameWarning') +def test_run_and_write_tables_out_tables_provided(df, store_name): + table_names = ['table', 'table2', 'table3'] + for t in table_names: + orca.add_table(t, df) + + @orca.step() + def step(iter_var, table, table2): + return + + orca.run( + ['step'], + iter_vars=range(1), + data_out=store_name, + out_base_tables=table_names, + out_run_tables=['table']) + + with pd.HDFStore(store_name, mode='r') as store: + + for t in table_names: + assert 'base/{}'.format(t) in store + + assert '0/table' in store + assert '0/table2' not in store + assert '0/table3' not in store + + +def test_get_raw_table(df): + orca.add_table('table1', df) + + @orca.table() + def table2(): + return df + + assert isinstance(orca.get_raw_table('table1'), orca.DataFrameWrapper) + assert isinstance(orca.get_raw_table('table2'), orca.TableFuncWrapper) + + assert orca.table_type('table1') == 'dataframe' + assert orca.table_type('table2') == 'function' + + +def test_get_table(df): + orca.add_table('frame', df) + + @orca.table() + def table(): + return df + + @orca.table(cache=True) + def source(): + return df + + fr = orca.get_table('frame') + ta = orca.get_table('table') + so = orca.get_table('source') + + with pytest.raises(KeyError): + orca.get_table('asdf') + + assert isinstance(fr, orca.DataFrameWrapper) + assert isinstance(ta, orca.DataFrameWrapper) + assert isinstance(so, orca.DataFrameWrapper) + + pdt.assert_frame_equal(fr.to_frame(), df) + pdt.assert_frame_equal(ta.to_frame(), df) + pdt.assert_frame_equal(so.to_frame(), df) + + +def test_cache_disabled_cm(): + x = 3 + + @orca.injectable(cache=True) + def xi(): + return x + + assert orca.get_injectable('xi') == 3 + x = 5 + assert orca.get_injectable('xi') == 3 + + with orca.cache_disabled(): + assert orca.get_injectable('xi') == 5 + + # cache still gets updated even when cacheing is off + assert orca.get_injectable('xi') == 5 + + +def test_injectables_cm(): + orca.add_injectable('a', 'a') + orca.add_injectable('b', 'b') + orca.add_injectable('c', 'c') + + with orca.injectables(): + assert orca._INJECTABLES == { + 'a': 'a', 'b': 'b', 'c': 'c' + } + + with orca.injectables(c='d', x='x', y='y', z='z'): + assert orca._INJECTABLES == { + 'a': 'a', 'b': 'b', 'c': 'd', + 'x': 'x', 'y': 'y', 'z': 'z' + } + + assert orca._INJECTABLES == { + 'a': 'a', 'b': 'b', 'c': 'c' + } + + +def test_temporary_tables_cm(): + orca.add_table('a', pd.DataFrame()) + + with orca.temporary_tables(): + assert sorted(orca._TABLES.keys()) == ['a'] + + with orca.temporary_tables(a=pd.DataFrame(), b=pd.DataFrame()): + assert sorted(orca._TABLES.keys()) == ['a', 'b'] + + assert sorted(orca._TABLES.keys()) == ['a'] + + +def test_is_expression(): + assert orca.is_expression('name') is False + assert orca.is_expression('table.column') is True + + +def test_eval_variable(df): + orca.add_injectable('x', 3) + assert orca.eval_variable('x') == 3 + + @orca.injectable() + def func(x): + return 'xyz' * x + assert orca.eval_variable('func') == 'xyzxyzxyz' + assert orca.eval_variable('func', x=2) == 'xyzxyz' + + @orca.table() + def table(x): + return df * x + pdt.assert_series_equal(orca.eval_variable('table.a'), df.a * 3) + + +def test_eval_step(df): + orca.add_injectable('x', 3) + + @orca.step() + def step(x): + return df * x + + pdt.assert_frame_equal(orca.eval_step('step'), df * 3) + pdt.assert_frame_equal(orca.eval_step('step', x=5), df * 5) + + +def test_always_dataframewrapper(df): + @orca.table() + def table(): + return df / 2 + + @orca.table() + def table2(table): + assert isinstance(table, orca.DataFrameWrapper) + return table.to_frame() / 2 + + result = orca.eval_variable('table2') + pdt.assert_frame_equal(result.to_frame(), df / 4) + + +def test_table_func_source_data(df): + @orca.table() + def table(): + return df * 2 + + t = orca.get_raw_table('table') + filename, lineno, source = t.func_source_data() + + assert filename.endswith('test_orca.py') + assert isinstance(lineno, int) + assert 'return df * 2' in source + + +def test_column_type(df): + orca.add_table('test_frame', df) + + @orca.table() + def test_func(): + return df + + s = pd.Series(range(len(df)), index=df.index) + + def col_func(): + return s + + orca.add_column('test_frame', 'col_series', s) + orca.add_column('test_func', 'col_series', s) + orca.add_column('test_frame', 'col_func', col_func) + orca.add_column('test_func', 'col_func', col_func) + + tframe = orca.get_raw_table('test_frame') + tfunc = orca.get_raw_table('test_func') + + assert tframe.column_type('a') == 'local' + assert tframe.column_type('col_series') == 'series' + assert tframe.column_type('col_func') == 'function' + + assert tfunc.column_type('a') == 'local' + assert tfunc.column_type('col_series') == 'series' + assert tfunc.column_type('col_func') == 'function' + + +def test_get_raw_column(df): + orca.add_table('test_frame', df) + + s = pd.Series(range(len(df)), index=df.index) + + def col_func(): + return s + + orca.add_column('test_frame', 'col_series', s) + orca.add_column('test_frame', 'col_func', col_func) + + assert isinstance( + orca.get_raw_column('test_frame', 'col_series'), + orca._SeriesWrapper) + assert isinstance( + orca.get_raw_column('test_frame', 'col_func'), + orca._ColumnFuncWrapper) + + +def test_column_func_source_data(df): + orca.add_table('test_frame', df) + + @orca.column('test_frame') + def col_func(): + return pd.Series(range(len(df)), index=df.index) + + s = orca.get_raw_column('test_frame', 'col_func') + filename, lineno, source = s.func_source_data() + + assert filename.endswith('test_orca.py') + assert isinstance(lineno, int) + assert 'def col_func():' in source + + +def test_is_injectable(): + orca.add_injectable('answer', 42) + assert orca.is_injectable('answer') is True + assert orca.is_injectable('nope') is False + + +def test_injectable_type(): + orca.add_injectable('answer', 42) + + @orca.injectable() + def inj1(): + return 42 + + @orca.injectable(autocall=False, memoize=True) + def power(x): + return 42 ** x + + assert orca.injectable_type('answer') == 'variable' + assert orca.injectable_type('inj1') == 'function' + assert orca.injectable_type('power') == 'function' + + +def test_get_injectable_func_source_data(): + @orca.injectable() + def inj1(): + return 42 + + @orca.injectable(autocall=False, memoize=True) + def power(x): + return 42 ** x + + def inj2(): + return 'orca' + + orca.add_injectable('inj2', inj2, autocall=False) + + filename, lineno, source = orca.get_injectable_func_source_data('inj1') + assert filename.endswith('test_orca.py') + assert isinstance(lineno, int) + assert '@orca.injectable()' in source + + filename, lineno, source = orca.get_injectable_func_source_data('power') + assert filename.endswith('test_orca.py') + assert isinstance(lineno, int) + assert '@orca.injectable(autocall=False, memoize=True)' in source + + filename, lineno, source = orca.get_injectable_func_source_data('inj2') + assert filename.endswith('test_orca.py') + assert isinstance(lineno, int) + assert 'def inj2()' in source diff --git a/activitysim/core/test/test_pipeline.py b/activitysim/core/test/test_pipeline.py index 61670811b..94966d64f 100644 --- a/activitysim/core/test/test_pipeline.py +++ b/activitysim/core/test/test_pipeline.py @@ -1,49 +1,51 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) + +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + import os -import tempfile import logging - -import numpy as np -import orca -import pandas as pd -import pandas.util.testing as pdt import pytest -import yaml -import extensions +import tables from activitysim.core import tracing from activitysim.core import pipeline from activitysim.core import inject +from .extensions import steps + # set the max households for all tests (this is to limit memory use on travis) HOUSEHOLDS_SAMPLE_SIZE = 100 HH_ID = 961042 -def setup(): +def setup_function(): + + inject.reinject_decorated_tables() - orca.orca._INJECTABLES.pop('skim_dict', None) - orca.orca._INJECTABLES.pop('skim_stack', None) + inject.remove_injectable('skim_dict') + inject.remove_injectable('skim_stack') configs_dir = os.path.join(os.path.dirname(__file__), 'configs') - orca.add_injectable("configs_dir", configs_dir) + inject.add_injectable("configs_dir", configs_dir) output_dir = os.path.join(os.path.dirname(__file__), 'output') - orca.add_injectable("output_dir", output_dir) + inject.add_injectable("output_dir", output_dir) data_dir = os.path.join(os.path.dirname(__file__), 'data') - orca.add_injectable("data_dir", data_dir) + inject.add_injectable("data_dir", data_dir) - orca.clear_cache() + inject.clear_cache() tracing.config_logger() def teardown_function(func): - orca.clear_cache() + inject.clear_cache() inject.reinject_decorated_tables() @@ -57,9 +59,14 @@ def close_handlers(): logger.setLevel(logging.NOTSET) +# @pytest.mark.filterwarnings('ignore::tables.NaturalNameWarning') def test_pipeline_run(): - setup() + inject.add_step('step1', steps.step1) + inject.add_step('step2', steps.step2) + inject.add_step('step3', steps.step3) + inject.add_step('step_add_col', steps.step_add_col) + inject.dump_state() _MODELS = [ 'step1', @@ -71,7 +78,7 @@ def test_pipeline_run(): pipeline.run(models=_MODELS, resume_after=None) checkpoints = pipeline.get_checkpoints() - print "checkpoints\n", checkpoints + print("checkpoints\n", checkpoints) c2 = pipeline.get_table("table2").c2 @@ -100,7 +107,11 @@ def test_pipeline_run(): def test_pipeline_checkpoint_drop(): - setup() + inject.add_step('step1', steps.step1) + inject.add_step('step2', steps.step2) + inject.add_step('step3', steps.step3) + inject.add_step('step_add_col', steps.step_add_col) + inject.add_step('step_forget_tab', steps.step_forget_tab) _MODELS = [ 'step1', @@ -113,7 +124,7 @@ def test_pipeline_checkpoint_drop(): pipeline.run(models=_MODELS, resume_after=None) checkpoints = pipeline.get_checkpoints() - print "checkpoints\n", checkpoints + print("checkpoints\n", checkpoints) pipeline.get_table("table1") diff --git a/activitysim/core/test/test_random.py b/activitysim/core/test/test_random.py index c1369bf65..fe45af3a0 100644 --- a/activitysim/core/test/test_random.py +++ b/activitysim/core/test/test_random.py @@ -1,14 +1,14 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import print_function + import numpy as np import pandas as pd import numpy.testing as npt -import pandas.util.testing as pdt import pytest from activitysim.core import random -from activitysim.core import pipeline def test_basic(): @@ -21,11 +21,11 @@ def test_basic(): global_rng = rng.get_global_rng() - npt.assert_almost_equal(global_rng.rand(1), [0.09237]) + npt.assert_almost_equal(global_rng.rand(1), [0.8994663]) # second call should return something different with pytest.raises(AssertionError) as excinfo: - npt.assert_almost_equal(global_rng.rand(1), [0.09237]) + npt.assert_almost_equal(global_rng.rand(1), [0.8994663]) assert "Arrays are not almost equal" in str(excinfo.value) # second call should return something different @@ -37,53 +37,54 @@ def test_basic(): def test_channel(): channels = { - 'households': 'HHID', - 'persons': 'PERID', + 'households': 'household_id', + 'persons': 'person_id', } rng = random.Random() - rng.set_channel_info(channels) persons = pd.DataFrame({ "household_id": [1, 1, 2, 2, 2], }, index=[1, 2, 3, 4, 5]) - persons.index.name = 'PERID' + persons.index.name = 'person_id' households = pd.DataFrame({ "data": [1, 1, 2, 2, 2], }, index=[1, 2, 3, 4, 5]) - households.index.name = 'HHID' + households.index.name = 'household_id' rng.begin_step('test_step') - rng.add_channel(persons, channel_name='persons') - rng.add_channel(households, channel_name='households') + rng.add_channel('persons', persons) + rng.add_channel('households', households) rands = rng.random_for_df(persons) + print("rands", np.asanyarray(rands).flatten()) + assert rands.shape == (5, 1) - expected_rands = [0.0305274, 0.6452407, 0.1686045, 0.9529088, 0.1994755] - npt.assert_almost_equal(np.asanyarray(rands).flatten(), expected_rands) + test1_expected_rands = [0.1733218, 0.1255693, 0.7384256, 0.3485183, 0.9012387] + npt.assert_almost_equal(np.asanyarray(rands).flatten(), test1_expected_rands) # second call should return something different rands = rng.random_for_df(persons) - expected_rands = [0.9912599, 0.5523497, 0.4580549, 0.3668453, 0.134653] - npt.assert_almost_equal(np.asanyarray(rands).flatten(), expected_rands) + test1_expected_rands2 = [0.9105223, 0.5718418, 0.7222742, 0.9062284, 0.3929369] + npt.assert_almost_equal(np.asanyarray(rands).flatten(), test1_expected_rands2) rng.end_step('test_step') rng.begin_step('test_step2') rands = rng.random_for_df(households) - expected_rands = [0.7992435, 0.5682545, 0.8956348, 0.6326098, 0.630408] + expected_rands = [0.417278, 0.2994774, 0.8653719, 0.4429748, 0.5101697] npt.assert_almost_equal(np.asanyarray(rands).flatten(), expected_rands) choices = rng.choice_for_df(households, [1, 2, 3, 4], 2, replace=True) - expected_choices = [1, 3, 3, 2, 1, 1, 1, 3, 1, 3] + expected_choices = [2, 1, 3, 3, 4, 2, 4, 1, 4, 1] npt.assert_almost_equal(choices, expected_choices) # should be DIFFERENT the second time choices = rng.choice_for_df(households, [1, 2, 3, 4], 2, replace=True) - expected_choices = [2, 3, 3, 3, 2, 2, 2, 2, 2, 4] + expected_choices = [3, 1, 4, 3, 3, 2, 2, 1, 4, 2] npt.assert_almost_equal(choices, expected_choices) rng.end_step('test_step2') @@ -92,9 +93,22 @@ def test_channel(): rands = rng.random_for_df(households, n=2) - expected_rands = [0.4633051, 0.4924085, 0.8627697, 0.854059, 0.0689231, - 0.3818341, 0.0301041, 0.7765588, 0.2082694, 0.4542789] + expected_rands = [0.3157928, 0.3321823, 0.5194067, 0.9340083, 0.9002048, 0.8754209, + 0.3898816, 0.4101094, 0.7351484, 0.1741092] npt.assert_almost_equal(np.asanyarray(rands).flatten(), expected_rands) rng.end_step('test_step3') + + # if we use the same step name a second time, we should get the same results as before + rng.begin_step('test_step') + + rands = rng.random_for_df(persons) + + print("rands", np.asanyarray(rands).flatten()) + npt.assert_almost_equal(np.asanyarray(rands).flatten(), test1_expected_rands) + + rands = rng.random_for_df(persons) + npt.assert_almost_equal(np.asanyarray(rands).flatten(), test1_expected_rands2) + + rng.end_step('test_step') diff --git a/activitysim/core/test/test_simulate.py b/activitysim/core/test/test_simulate.py index eee7d7880..a51a9d23f 100644 --- a/activitysim/core/test/test_simulate.py +++ b/activitysim/core/test/test_simulate.py @@ -1,14 +1,16 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import print_function import os.path import numpy.testing as npt +import numpy as np import pandas as pd import pandas.util.testing as pdt import pytest -import orca +from .. import inject from .. import simulate @@ -26,7 +28,8 @@ def spec_name(data_dir): @pytest.fixture(scope='module') def spec(data_dir, spec_name): return simulate.read_model_spec( - data_dir, spec_name, + file_name=spec_name, + spec_dir=data_dir, description_name='description', expression_name='expression') @@ -39,43 +42,42 @@ def data(data_dir): def test_read_model_spec(data_dir, spec_name): spec = simulate.read_model_spec( - data_dir, spec_name, + file_name=spec_name, + spec_dir=data_dir, description_name='description', expression_name='expression') assert len(spec) == 4 assert spec.index.name == 'expression' assert list(spec.columns) == ['alt0', 'alt1'] npt.assert_array_equal( - spec.as_matrix(), + spec.values, [[1.1, 11], [2.2, 22], [3.3, 33], [4.4, 44]]) def test_eval_variables(spec, data): - result = simulate.eval_variables(spec.index, data, target_type=None) + result = simulate.eval_variables(spec.index, data) - expected_result = pd.DataFrame([ - [True, False, 4, 1], - [False, True, 4, 1], - [False, True, 5, 1]], + expected = pd.DataFrame([ + [1, 0, 4, 1], + [0, 1, 4, 1], + [0, 1, 5, 1]], index=data.index, columns=spec.index) - pdt.assert_frame_equal(result, expected_result, check_names=False) + expected[expected.columns[0]] = expected[expected.columns[0]].astype(np.int8) + expected[expected.columns[1]] = expected[expected.columns[1]].astype(np.int8) + expected[expected.columns[2]] = expected[expected.columns[2]].astype(np.int64) + expected[expected.columns[3]] = expected[expected.columns[3]].astype(int) - result = simulate.eval_variables(spec.index, data, target_type=float) + print("\nexpected\n", expected.dtypes) + print("\nresult\n", result.dtypes) - expected_result = pd.DataFrame([ - [1.0, 0.0, 4.0, 1.0], - [0.0, 1.0, 4.0, 1.0], - [0.0, 1.0, 5.0, 1.0]], - index=data.index, columns=spec.index) - - pdt.assert_frame_equal(result, expected_result, check_names=False) + pdt.assert_frame_equal(result, expected, check_names=False) def test_simple_simulate(data, spec): - orca.add_injectable("check_for_variability", False) + inject.add_injectable("settings", {'check_for_variability': False}) choices = simulate.simple_simulate(choosers=data, spec=spec, nest_spec=None) expected = pd.Series([1, 1, 1], index=data.index) @@ -84,7 +86,7 @@ def test_simple_simulate(data, spec): def test_simple_simulate_chunked(data, spec): - orca.add_injectable("check_for_variability", False) + inject.add_injectable("settings", {'check_for_variability': False}) choices = simulate.simple_simulate(choosers=data, spec=spec, nest_spec=None, chunk_size=2) expected = pd.Series([1, 1, 1], index=data.index) diff --git a/activitysim/core/test/test_skim.py b/activitysim/core/test/test_skim.py index bc55038bd..f37564e6f 100644 --- a/activitysim/core/test/test_skim.py +++ b/activitysim/core/test/test_skim.py @@ -58,23 +58,31 @@ def test_offset_list(data): [52, 99, 16]) -def test_skim_nans(data): - sk = skim.SkimWrapper(data) +# fixme - nan support disabled in skim.py (not sure we need it?) +# def test_skim_nans(data): +# sk = skim.SkimWrapper(data) +# +# orig = [5, np.nan, 1, 2] +# dest = [np.nan, 9, 6, 4] +# +# npt.assert_array_equal( +# sk.get(orig, dest), +# [np.nan, np.nan, 16, 24]) - orig = [5, np.nan, 1, 2] - dest = [np.nan, 9, 6, 4] - npt.assert_array_equal( - sk.get(orig, dest), - [np.nan, np.nan, 16, 24]) +def test_skims(data): + skims_shape = data.shape + (2,) -def test_skims(data): + skim_data = np.zeros(skims_shape, dtype=data.dtype) + skim_data[:, :, 0] = data + skim_data[:, :, 1] = data*10 - skim_dict = skim.SkimDict() + skim_info = { + 'block_offsets': {'AM': (0, 0), 'PM': (0, 1)} + } - skim_dict.set('AM', data) - skim_dict.set('PM', data*10) + skim_dict = skim.SkimDict([skim_data], skim_info) skims = skim_dict.wrap("taz_l", "taz_r") @@ -90,7 +98,7 @@ def test_skims(data): pd.Series( [12, 93, 47], index=[0, 1, 2] - ).astype('float64') + ).astype(data.dtype) ) pdt.assert_series_equal( @@ -98,16 +106,23 @@ def test_skims(data): pd.Series( [120, 930, 470], index=[0, 1, 2] - ).astype('float64') + ).astype(data.dtype) ) def test_3dskims(data): - skim_dict = skim.SkimDict() + skims_shape = data.shape + (2,) + + skim_data = np.zeros(skims_shape, dtype=int) + skim_data[:, :, 0] = data + skim_data[:, :, 1] = data*10 - skim_dict.set(("SOV", "AM"), data) - skim_dict.set(("SOV", "PM"), data*10) + skim_info = { + 'block_offsets': {('SOV', 'AM'): (0, 0), ('SOV', 'PM'): (0, 1)}, + 'key1_block_offsets': {'SOV': (0, 0)} + } + skim_dict = skim.SkimDict([skim_data], skim_info) stack = skim.SkimStack(skim_dict) diff --git a/activitysim/core/test/test_timetable.py b/activitysim/core/test/test_timetable.py index ae4e2bc09..5d3262ed4 100644 --- a/activitysim/core/test/test_timetable.py +++ b/activitysim/core/test/test_timetable.py @@ -1,9 +1,9 @@ # ActivitySim # See full license in LICENSE.txt. +from builtins import range import numpy as np import pandas as pd -import numpy.testing as npt import pandas.util.testing as pdt import pytest @@ -14,7 +14,7 @@ def persons(): df = pd.DataFrame( - index=range(6) + index=list(range(6)) ) return df @@ -70,8 +70,8 @@ def test_basic(persons, tdd_alts): num_alts = len(tdd_alts.index) num_persons = len(persons.index) - person_ids = pd.Series(range(num_persons)*num_alts) - tdds = pd.Series(np.repeat(range(num_alts), num_persons)) + person_ids = pd.Series(list(range(num_persons))*num_alts) + tdds = pd.Series(np.repeat(list(range(num_alts)), num_persons)) assert timetable.tour_available(person_ids, tdds).all() diff --git a/activitysim/core/test/test_tracing.py b/activitysim/core/test/test_tracing.py index 7b9b8490c..9abaa5b0a 100644 --- a/activitysim/core/test/test_tracing.py +++ b/activitysim/core/test/test_tracing.py @@ -1,15 +1,18 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) + +from future.standard_library import install_aliases +install_aliases() # noqa: E402 import os.path import logging - import pytest -import orca import pandas as pd -from .. import tracing as tracing +from .. import tracing +from .. import inject def close_handlers(): @@ -24,48 +27,13 @@ def close_handlers(): def add_canonical_dirs(): + inject.clear_cache() + configs_dir = os.path.join(os.path.dirname(__file__), 'configs') - orca.add_injectable("configs_dir", configs_dir) + inject.add_injectable("configs_dir", configs_dir) output_dir = os.path.join(os.path.dirname(__file__), 'output') - orca.add_injectable("output_dir", output_dir) - - -def test_bad_custom_config_file(capsys): - - add_canonical_dirs() - - custom_config_file = os.path.join(os.path.dirname(__file__), 'configs', 'xlogging.yaml') - tracing.config_logger(custom_config_file=custom_config_file) - - logger = logging.getLogger('activitysim') - - file_handlers = [h for h in logger.handlers if type(h) is logging.FileHandler] - assert len(file_handlers) == 1 - asim_logger_baseFilename = file_handlers[0].baseFilename - - logger = logging.getLogger(__name__) - logger.info('test_bad_custom_config_file') - logger.info('log_info') - logger.warn('log_warn1') - - out, err = capsys.readouterr() - - # don't consume output - print out - - assert "could not find conf file" in out - assert 'log_warn1' in out - assert 'log_info' not in out - - close_handlers() - - logger.warn('log_warn2') - - with open(asim_logger_baseFilename, 'r') as content_file: - content = content_file.read() - assert 'log_warn1' in content - assert 'log_warn2' not in content + inject.add_injectable("output_dir", output_dir) def test_config_logger(capsys): @@ -80,16 +48,16 @@ def test_config_logger(capsys): assert len(file_handlers) == 1 asim_logger_baseFilename = file_handlers[0].baseFilename - print "handlers:", logger.handlers + print("handlers:", logger.handlers) logger.info('test_config_logger') logger.info('log_info') - logger.warn('log_warn1') + logger.warning('log_warn1') out, err = capsys.readouterr() # don't consume output - print out + print(out) assert "could not find conf file" not in out assert 'log_warn1' in out @@ -98,52 +66,27 @@ def test_config_logger(capsys): close_handlers() logger = logging.getLogger(__name__) - logger.warn('log_warn2') + logger.warning('log_warn2') with open(asim_logger_baseFilename, 'r') as content_file: content = content_file.read() - print content + print(content) assert 'log_warn1' in content assert 'log_warn2' not in content -def test_custom_config_logger(capsys): - - add_canonical_dirs() - - custom_config_file = os.path.join(os.path.dirname(__file__), 'configs', 'custom_logging.yaml') - tracing.config_logger(custom_config_file) - - logger = logging.getLogger('activitysim') - - logger.warn('custom_log_warn') - - asim_logger_filename = os.path.join(os.path.dirname(__file__), 'output', 'xasim.log') - - with open(asim_logger_filename, 'r') as content_file: - content = content_file.read() - assert 'custom_log_warn' in content - - out, err = capsys.readouterr() - - # don't consume output - print out - - assert 'custom_log_warn' in out - - def test_print_summary(capsys): add_canonical_dirs() tracing.config_logger() - tracing.print_summary('label', df=None, describe=False, value_counts=False) + tracing.print_summary('label', df=pd.DataFrame(), describe=False, value_counts=False) out, err = capsys.readouterr() # don't consume output - print out + print(out) assert 'print_summary neither value_counts nor describe' in out @@ -158,19 +101,23 @@ def test_register_households(capsys): df = pd.DataFrame({'zort': ['a', 'b', 'c']}, index=[1, 2, 3]) - tracing.register_households(df, 5) + inject.add_injectable('traceable_tables', ['households']) + inject.add_injectable("trace_hh_id", 5) + tracing.register_traceable_table('households', df) out, err = capsys.readouterr() + # print out # don't consume output - # don't consume output - print out + assert "Can't register table 'households' without index name" in out + + df.index.name = 'household_id' + tracing.register_traceable_table('households', df) + out, err = capsys.readouterr() + # print out # don't consume output # should warn that household id not in index assert 'trace_hh_id 5 not in dataframe' in out - # should warn and rename index if index name is None - assert "households table index had no name. renamed index 'household_id'" in out - close_handlers() @@ -180,43 +127,42 @@ def test_register_tours(capsys): tracing.config_logger() + inject.add_injectable('traceable_tables', ['households', 'tours']) + # in case another test injected this - orca.add_injectable("trace_person_ids", []) + inject.add_injectable("trace_tours", []) - df = pd.DataFrame({'zort': ['a', 'b', 'c']}, index=[1, 2, 3]) + tours_df = pd.DataFrame({'zort': ['a', 'b', 'c']}, index=[10, 11, 12]) + tours_df.index.name = 'tour_id' - tracing.register_tours(df, 5) + tracing.register_traceable_table('tours', tours_df) out, err = capsys.readouterr() + # print out # don't consume output - # don't consume output - print out + assert "can't find a registered table to slice table 'tours' index name 'tour_id'" in out - assert "no person ids registered for trace_hh_id 5" in out + inject.add_injectable("trace_hh_id", 3) + households_df = pd.DataFrame({'dzing': ['a', 'b', 'c']}, index=[1, 2, 3]) + households_df.index.name = 'household_id' + tracing.register_traceable_table('households', households_df) - close_handlers() - - -def test_register_persons(capsys): - - add_canonical_dirs() + tracing.register_traceable_table('tours', tours_df) - tracing.config_logger() + out, err = capsys.readouterr() + # print out # don't consume output + assert "can't find a registered table to slice table 'tours'" in out - df = pd.DataFrame({'household_id': [1, 2, 3]}, index=[11, 12, 13]) + tours_df['household_id'] = [1, 5, 3] - tracing.register_persons(df, 5) + tracing.register_traceable_table('tours', tours_df) out, err = capsys.readouterr() + print(out) # don't consume output - # don't consume output - print out - - # should warn that household id not in index - assert 'trace_hh_id 5 not found' in out - - # should warn and rename index if index name is None - assert "persons table index had no name. renamed index 'person_id'" in out + # should be tracing tour with tour_id 3 + traceable_table_ids = inject.get_injectable('traceable_table_ids') + assert traceable_table_ids['tours'] == [12] close_handlers() @@ -232,10 +178,9 @@ def test_write_csv(capsys): out, err = capsys.readouterr() - # don't consume output - print out + print(out) # don't consume output - assert "write_df_csv object 'baddie' of unexpected type" in out + assert "unexpected type" in out close_handlers() @@ -263,10 +208,10 @@ def test_basic(capsys): close_handlers() configs_dir = os.path.join(os.path.dirname(__file__), 'configs') - orca.add_injectable("configs_dir", configs_dir) + inject.add_injectable("configs_dir", configs_dir) output_dir = os.path.join(os.path.dirname(__file__), 'output') - orca.add_injectable("output_dir", output_dir) + inject.add_injectable("output_dir", output_dir) # remove existing handlers or basicConfig is a NOP logging.getLogger().handlers = [] @@ -282,12 +227,12 @@ def test_basic(capsys): logger.info('test_basic') logger.debug('log_debug') logger.info('log_info') - logger.warn('log_warn') + logger.warning('log_warn') out, err = capsys.readouterr() # don't consume output - print out + print(out) assert 'log_warn' in out assert 'log_info' in out diff --git a/activitysim/core/test/utils_testing.py b/activitysim/core/test/utils_testing.py new file mode 100644 index 000000000..4beb0fe01 --- /dev/null +++ b/activitysim/core/test/utils_testing.py @@ -0,0 +1,76 @@ +# Orca +# Copyright (C) 2016 UrbanSim Inc. +# See full license in LICENSE. + +""" +Utilities used in testing of Orca. + +""" + +from future.utils import iteritems + +import numpy as np +import numpy.testing as npt +import pandas as pd + + +def assert_frames_equal(actual, expected, use_close=False): + """ + Compare DataFrame items by index and column and + raise AssertionError if any item is not equal. + + Ordering is unimportant, items are compared only by label. + NaN and infinite values are supported. + + Parameters + ---------- + actual : pandas.DataFrame + expected : pandas.DataFrame + use_close : bool, optional + If True, use numpy.testing.assert_allclose instead of + numpy.testing.assert_equal. + + """ + if use_close: + comp = npt.assert_allclose + else: + comp = npt.assert_equal + + assert (isinstance(actual, pd.DataFrame) and + isinstance(expected, pd.DataFrame)), \ + 'Inputs must both be pandas DataFrames.' + + for i, exp_row in expected.iterrows(): + assert i in actual.index, 'Expected row {!r} not found.'.format(i) + + act_row = actual.loc[i] + + for j, exp_item in iteritems(exp_row): + assert j in act_row.index, \ + 'Expected column {!r} not found.'.format(j) + + act_item = act_row[j] + + try: + comp(act_item, exp_item) + except AssertionError as e: + raise AssertionError( + str(e) + '\n\nColumn: {!r}\nRow: {!r}'.format(j, i)) + + +def assert_index_equal(left, right): + """ + Similar to pdt.assert_index_equal but is not sensitive to key ordering. + + Parameters + ---------- + left: pandas.Index + right: pandas.Index + """ + assert isinstance(left, pd.Index) + assert isinstance(right, pd.Index) + left_diff = left.difference(right) + right_diff = right.difference(left) + if len(left_diff) > 0 or len(right_diff) > 0: + raise AssertionError("keys not in left [{0}], keys not in right [{1}]".format( + left_diff, right_diff)) diff --git a/activitysim/core/timetable.py b/activitysim/core/timetable.py index 4bea0fe0a..90a004ee8 100644 --- a/activitysim/core/timetable.py +++ b/activitysim/core/timetable.py @@ -1,6 +1,12 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import range +from builtins import object + import logging import numpy as np @@ -79,7 +85,7 @@ def tour_map(persons, tours, tdd_alts, persons_id_col='person_id'): agenda = agenda.reshape(n_persons, n_periods) scheduled = np.zeros_like(agenda, dtype=int) - row_ix_map = pd.Series(range(n_persons), index=persons.index) + row_ix_map = pd.Series(list(range(n_persons)), index=persons.index) # construct with strings so we can create runs of strings using char * int w_strings = [ @@ -97,7 +103,7 @@ def tour_map(persons, tours, tdd_alts, persons_id_col='person_id'): tour_sigil = sigil[tour_type] # numpy array with one time window row for each row in nth_tours - tour_windows = window_periods_df.loc[nth_tours.tdd].as_matrix() + tour_windows = window_periods_df.loc[nth_tours.tdd].values # row idxs of tour_df group rows in windows row_ixs = nth_tours[persons_id_col].map(row_ix_map).values @@ -114,6 +120,9 @@ def tour_map(persons, tours, tdd_alts, persons_id_col='person_id'): # a = pd.Series([' '.join(a) for a in agenda], index=persons.index) a = pd.DataFrame(data=agenda, columns=[str(w) for w in range(min_period, max_period+1)]) + a.index = persons.index + a.index.name = persons_id_col + return a @@ -132,7 +141,7 @@ def create_timetable_windows(rows, tdd_alts): so if start is 5 and end is 23, we return something like this: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - PERID + person_id 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -146,7 +155,7 @@ def create_timetable_windows(rows, tdd_alts): assert rows.index is not None # pad windows at both ends of day - windows = range(tdd_alts.start.min() - 1, tdd_alts.end.max() + 2) + windows = list(range(tdd_alts.start.min() - 1, tdd_alts.end.max() + 2)) # hdf5 store converts these to strs, se we conform window_cols = [str(w) for w in windows] @@ -186,13 +195,13 @@ def __init__(self, windows_df, tdd_alts_df, table_name=None): self.windows_table_name = table_name self.windows_df = windows_df - self.windows = self.windows_df.as_matrix() + self.windows = self.windows_df.values # series to map window row index value to window row's ordinal index - self.window_row_ix = pd.Series(range(len(windows_df.index)), index=windows_df.index) + self.window_row_ix = pd.Series(list(range(len(windows_df.index))), index=windows_df.index) int_time_periods = [int(c) for c in windows_df.columns.values] - self.time_ix = pd.Series(range(len(windows_df.columns)), index=int_time_periods) + self.time_ix = pd.Series(list(range(len(windows_df.columns))), index=int_time_periods) # - pre-compute window state footprints for every tdd_alt min_period = min(int_time_periods) @@ -204,9 +213,10 @@ def __init__(self, windows_df, tdd_alts_df, table_name=None): (C_END if row.duration > 0 else C_START_END) + (C_EMPTY * (max_period - row.end)) for idx, row in tdd_alts_df.iterrows()] - footprints = np.asanyarray([list(r) for r in w_strings]).astype(int) - self.tdd_footprints_df = pd.DataFrame(data=footprints, index=tdd_alts_df.index) - # print "\tdd_footprints_df\n", self.tdd_footprints_df + + # we want range index so we can use raw numpy + assert (tdd_alts_df.index == list(range(tdd_alts_df.shape[0]))).all() + self.tdd_footprints = np.asanyarray([list(r) for r in w_strings]).astype(int) def slice_windows_by_row_id(self, window_row_ids): """ @@ -233,11 +243,10 @@ def slice_windows_by_row_id_and_period(self, window_row_ids, periods): def get_windows_df(self): # It appears that assignments into windows write through to underlying pandas table. - # Because we set windows = windows_df.as_matrix, though as_matrix does not - # document this feature. - + # because we set windows = windows_df.values, and since all the columns are the same type # so no need to refresh pandas dataframe, but if we had to it would go here + # assert (self.windows_df.values == self.windows).all() return self.windows_df def replace_table(self): @@ -275,13 +284,8 @@ def tour_available(self, window_row_ids, tdds): assert len(window_row_ids) == len(tdds) - # t0 = tracing.print_elapsed_time() - # numpy array with one tdd_footprints_df row for tdds - tour_footprints = util.quick_loc_df(tdds, self.tdd_footprints_df).as_matrix() - - # t0 = tracing.print_elapsed_time("tour_footprints", t0, debug=True) - # assert (tour_footprints == self.tdd_footprints_df.loc[tdds].as_matrix()).all + tour_footprints = self.tdd_footprints[tdds.values.astype(int)] # numpy array with one windows row for each person windows = self.slice_windows_by_row_id(window_row_ids) @@ -293,8 +297,6 @@ def tour_available(self, window_row_ids, tdds): available = ~np.isin(x, COLLISION_LIST).any(axis=1) available = pd.Series(available, index=window_row_ids.index) - # t0 = tracing.print_elapsed_time("available", t0, debug=True) - return available def assign(self, window_row_ids, tdds): @@ -317,11 +319,8 @@ def assign(self, window_row_ids, tdds): # vectorization doesn't work duplicates assert len(window_row_ids.index) == len(np.unique(window_row_ids.values)) - # df with one tdd_footprint row for each person tdd - tour_footprints = self.tdd_footprints_df.loc[tdds] - - # numpy array with one time window row for each row in df - tour_footprints = tour_footprints.as_matrix() + # numpy array with one time window row for each person tdd + tour_footprints = self.tdd_footprints[tdds.values.astype(int)] # row idxs of windows to assign to row_ixs = window_row_ids.map(self.window_row_ix).values @@ -357,11 +356,8 @@ def assign_subtour_mask(self, window_row_ids, tdds): self.windows.fill(0) self.assign(window_row_ids, tdds) - # df with one tdd_footprint row for each person tdd - tour_footprints = self.tdd_footprints_df.loc[tdds] - - # numpy array with one time window row for each row in df - tour_footprints = tour_footprints.as_matrix() + # numpy array with one time window row for each person tdd + tour_footprints = self.tdd_footprints[tdds.values.astype(int)] # row idxs of windows to assign to row_ixs = window_row_ids.map(self.window_row_ix).values diff --git a/activitysim/core/tracing.py b/activitysim/core/tracing.py index e57bf4036..027881f81 100644 --- a/activitysim/core/tracing.py +++ b/activitysim/core/tracing.py @@ -1,12 +1,17 @@ # ActivitySim # See full license in LICENSE.txt. +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 +from builtins import next +from builtins import range + import os import logging import logging.config import sys import time -from contextlib import contextmanager import yaml @@ -15,7 +20,7 @@ from activitysim.core import inject -import inject_defaults +from . import config # Configurations @@ -27,21 +32,22 @@ logger = logging.getLogger(__name__) -def check_for_variability(): - return inject.get_injectable('check_for_variability', False) - - def extend_trace_label(trace_label, extension): if trace_label: trace_label = "%s.%s" % (trace_label, extension) return trace_label +def format_elapsed_time(t): + return "%s seconds (%s minutes)" % (round(t, 3), round(t / 60.0, 1)) + + def print_elapsed_time(msg=None, t0=None, debug=False): t1 = time.time() if msg: + assert t0 is not None t = t1 - (t0 or t1) - msg = "Time to execute %s : %s seconds (%s minutes)" % (msg, round(t, 3), round(t/60.0, 1)) + msg = "Time to execute %s : %s" % (msg, format_elapsed_time(t)) if debug: logger.debug(msg) else: @@ -49,9 +55,9 @@ def print_elapsed_time(msg=None, t0=None, debug=False): return t1 -def delete_csv_files(output_dir): +def delete_output_files(file_type, ignore=None, subdir=None): """ - Delete CSV files + Delete files in output directory of specified type Parameters ---------- @@ -62,70 +68,69 @@ def delete_csv_files(output_dir): ------- Nothing """ - for the_file in os.listdir(output_dir): - if the_file.endswith(CSV_FILE_TYPE): - file_path = os.path.join(output_dir, the_file) - try: - if os.path.isfile(file_path): - os.unlink(file_path) - except Exception as e: - print(e) + output_dir = inject.get_injectable('output_dir') -def log_file_path(name): - """ - For use in logging.yaml tag to inject log file path + directories = ['', 'log', 'trace'] - filename: !!python/object/apply:activitysim.defaults.tracing.log_file_path ['asim.log'] + for subdir in directories: - Parameters - ---------- - name: str - output folder name + dir = os.path.join(output_dir, subdir) if subdir else output_dir + + if not os.path.exists(dir): + continue + + if ignore: + ignore = [os.path.realpath(p) for p in ignore] + + # logger.debug("Deleting %s files in output dir %s" % (file_type, dir)) + + for the_file in os.listdir(dir): + if the_file.endswith(file_type): + file_path = os.path.join(dir, the_file) + + if ignore and os.path.realpath(file_path) in ignore: + logger.debug("delete_output_files ignoring %s" % file_path) + continue + + try: + if os.path.isfile(file_path): + os.unlink(file_path) + except Exception as e: + print(e) + + +def delete_csv_files(): + """ + Delete CSV files in output_dir Returns ------- - f: str - output folder name + Nothing """ - output_dir = inject.get_injectable('output_dir') - f = os.path.join(output_dir, name) - return f + delete_output_files(CSV_FILE_TYPE) -def config_logger(custom_config_file=None, basic=False): +def config_logger(basic=False): """ Configure logger - if log_config_file is not supplied then look for conf file in configs_dir - - if not found use basicConfig - - Parameters - ---------- - custom_config_file: str - custom config filename - basic: boolean - basic setup + look for conf file in configs_dir, if not found use basicConfig Returns ------- Nothing """ - log_config_file = None - if custom_config_file and os.path.isfile(custom_config_file): - log_config_file = custom_config_file - elif not basic: - # look for conf file in configs_dir - configs_dir = inject.get_injectable('configs_dir') - default_config_file = os.path.join(configs_dir, LOGGING_CONF_FILE_NAME) - if os.path.isfile(default_config_file): - log_config_file = default_config_file + # look for conf file in configs_dir + log_config_file = None + if not basic: + log_config_file = config.config_file_path(LOGGING_CONF_FILE_NAME, mandatory=False) if log_config_file: with open(log_config_file) as f: - config_dict = yaml.load(f) + # FIXME need alternative to yaml.UnsafeLoader? + config_dict = yaml.load(f, Loader=yaml.UnsafeLoader) config_dict = config_dict['logging'] config_dict.setdefault('version', 1) logging.config.dictConfig(config_dict) @@ -134,19 +139,12 @@ def config_logger(custom_config_file=None, basic=False): logger = logging.getLogger(ASIM_LOGGER) - if custom_config_file and not os.path.isfile(custom_config_file): - logger.error("#\n#\n#\nconfig_logger could not find conf file '%s'" % custom_config_file) - if log_config_file: logger.info("Read logging configuration from: %s" % log_config_file) else: - print "Configured logging using basicConfig" + print("Configured logging using basicConfig") logger.info("Configured logging using basicConfig") - output_dir = inject.get_injectable('output_dir') - logger.debug("Deleting files in output_dir %s" % output_dir) - delete_csv_files(output_dir) - def print_summary(label, df, describe=False, value_counts=False): """ @@ -172,255 +170,119 @@ def print_summary(label, df, describe=False, value_counts=False): logger.error("print_summary neither value_counts nor describe") if value_counts: - logger.info("%s value counts:\n%s" % (label, df.value_counts())) + n = 10 + logger.info("%s top %s value counts:\n%s" % (label, n, df.value_counts().nlargest(n))) if describe: logger.info("%s summary:\n%s" % (label, df.describe())) -def register_households(df, trace_hh_id): - """ - Register with orca households for tracing - - Parameters - ---------- - df: pandas.DataFrame - traced dataframe - - trace_hh_id: int - household id we are tracing - - Returns - ------- - Nothing - """ - - logger.info("tracing household id %s in %s households" % (trace_hh_id, len(df.index))) - - if trace_hh_id not in df.index: - logger.warn("trace_hh_id %s not in dataframe" % trace_hh_id) - - # inject persons_index name of person dataframe index - if df.index.name is None: - df.index.names = ['household_id'] - logger.warn("households table index had no name. renamed index '%s'" % df.index.name) - inject.add_injectable("hh_index_name", df.index.name) - - logger.debug("register_households injected hh_index_name '%s'" % df.index.name) - - -def register_persons(df, trace_hh_id): +def register_traceable_table(table_name, df): """ - Register with orca persons for tracing + Register traceable table Parameters ---------- df: pandas.DataFrame traced dataframe - trace_hh_id: int - household id we are tracing - Returns ------- Nothing """ - # inject persons_index name of person dataframe index - if df.index.name is None: - df.index.names = ['person_id'] - logger.warn("persons table index had no name. renamed index '%s'" % df.index.name) - inject.add_injectable("persons_index_name", df.index.name) - - logger.debug("register_persons injected persons_index_name '%s'" % df.index.name) - - # inject list of person_ids in household we are tracing - # this allows us to slice by person_id without requiring presence of household_id column - traced_persons_df = df[df['household_id'] == trace_hh_id] - trace_person_ids = traced_persons_df.index.tolist() - if len(trace_person_ids) == 0: - logger.warn("register_persons: trace_hh_id %s not found." % trace_hh_id) - - inject.add_injectable("trace_person_ids", trace_person_ids) - logger.debug("register_persons injected trace_person_ids %s" % trace_person_ids) - - logger.info("tracing person_ids %s in %s persons" % (trace_person_ids, len(df.index))) - - -def register_tours(df, trace_hh_id): - """ - Register with inject for tracing - - create an injectable 'trace_tour_ids' with a list of tour_ids in household we are tracing. - This allows us to slice by tour_id without requiring presence of person_id column - - Parameters - ---------- - df: pandas.DataFrame - traced dataframe - - trace_hh_id: int - household id we are tracing - - Returns - ------- - Nothing - """ + trace_hh_id = inject.get_injectable("trace_hh_id", None) - # get list of persons in traced household (should already have been registered) - person_ids = inject.get_injectable("trace_person_ids", []) + new_traced_ids = [] - if len(person_ids) == 0: - # trace_hh_id not in households table or register_persons was not not called - logger.warn("no person ids registered for trace_hh_id %s" % trace_hh_id) + if trace_hh_id is None: return - # but if household_id is in households, then we may have some tours - traced_tours_df = slice_ids(df, person_ids, column='person_id') - trace_tour_ids = traced_tours_df.index.tolist() - if len(trace_tour_ids) == 0: - logger.info("register_tours: no tours found for person_ids %s." % person_ids) - else: - logger.info("tracing tour_ids %s in %s tours" % (trace_tour_ids, len(df.index))) - - inject.add_injectable("trace_tour_ids", trace_tour_ids) - logger.debug("register_tours injected trace_tour_ids %s" % trace_tour_ids) - - -def register_trips(df, trace_hh_id): - """ - Register with inject for tracing - - create an injectable 'trace_trip_ids' with a list of tour_ids in household we are tracing. - This allows us to slice by trip_id without requiring presence of person_id column - - Parameters - ---------- - df: pandas.DataFrame - traced dataframe - - trace_hh_id: int - household id we are tracin - - Returns - ------- - Nothing - """ - - # get list of tours in traced household (should already have been registered) - tour_ids = inject.get_injectable("trace_tour_ids", []) - - if len(tour_ids) == 0: - # register_persons was not not called - logger.warn("no tour ids registered for trace_hh_id %s" % trace_hh_id) + traceable_tables = inject.get_injectable('traceable_tables', []) + if table_name not in traceable_tables: + logger.error("table '%s' not in traceable_tables" % table_name) return - # but if household_id is in households, then we may have some trips - traced_trips_df = slice_ids(df, tour_ids, column='tour_id') - trace_trip_ids = traced_trips_df.index.tolist() - if len(traced_trips_df) == 0: - logger.info("register_trips: no trips found for tour_ids %s." % tour_ids) - else: - logger.info("tracing trip_ids %s in %s trips" % (trace_trip_ids, len(df.index))) - - inject.add_injectable("trace_trip_ids", trace_trip_ids) - logger.debug("register_trips injected trace_tour_ids %s" % trace_trip_ids) - - -def register_participants(df, trace_hh_id): - """ - Register with inject for tracing - - create an injectable 'trace_participant_ids' with a list of participant_ids in - household we are tracing. - This allows us to slice by participant_ids without requiring presence of household_id column - - Parameters - ---------- - df: pandas.DataFrame - traced dataframe - - trace_hh_id: int - household id we are tracing - - Returns - ------- - Nothing - """ - - # but if household_id is in households, then we may have some tours - traced_participants_df = slice_ids(df, trace_hh_id, column='household_id') - trace_participant_ids = traced_participants_df.index.tolist() - if len(trace_participant_ids) == 0: - logger.info("register_participants: no participants found for household_id %s." % - trace_hh_id) - else: - logger.info("tracing participant_ids %s in %s participants" % - (trace_participant_ids, len(df.index))) - - inject.add_injectable("trace_participant_ids", trace_participant_ids) - logger.debug("register_participants injected trace_participant_ids %s" % trace_participant_ids) - - -def register_traceable_table(table_name, df): - """ - Register traceable table - - Parameters - ---------- - df: pandas.DataFrame - traced dataframe - - Returns - ------- - Nothing - """ + idx_name = df.index.name + if idx_name is None: + logger.error("Can't register table '%s' without index name" % table_name) + return - trace_hh_id = inject.get_injectable("trace_hh_id", None) + traceable_table_ids = inject.get_injectable('traceable_table_ids') + traceable_table_indexes = inject.get_injectable('traceable_table_indexes') - if trace_hh_id is None: + if idx_name in traceable_table_indexes and traceable_table_indexes[idx_name] != table_name: + logger.error("table '%s' index name '%s' already registered for table '%s'" % + (table_name, idx_name, traceable_table_indexes[idx_name])) return if table_name == 'households': - register_households(df, trace_hh_id) - elif table_name == 'persons': - register_persons(df, trace_hh_id) - elif table_name == 'trips': - register_trips(df, trace_hh_id) - elif table_name == 'tours': - register_tours(df, trace_hh_id) - elif table_name == 'participants': - register_participants(df, trace_hh_id) + if trace_hh_id not in df.index: + logger.warning("trace_hh_id %s not in dataframe" % trace_hh_id) + new_traced_ids = [] + else: + logger.info("tracing household id %s in %s households" % (trace_hh_id, len(df.index))) + new_traced_ids = [trace_hh_id] else: - logger.warn("register_traceable_table - don't grok '%s'" % table_name) - - -def traceable_tables(): - - # names of all traceable tables ordered by dependency on household_id - # e.g. 'persons' has to be registered AFTER 'households' - return ['households', 'persons', 'tours', 'trips', 'joint_tours', 'participants'] + # find first already registered ref_col we can use to slice this table + ref_col = next((c for c in traceable_table_indexes if c in df.columns), None) + if ref_col is None: + logger.error("can't find a registered table to slice table '%s' index name '%s'" + " in traceable_table_indexes: %s" % + (table_name, idx_name, traceable_table_indexes)) + return + + # get traceable_ids for ref_col table + ref_col_table_name = traceable_table_indexes[ref_col] + ref_col_traced_ids = traceable_table_ids.get(ref_col_table_name, []) + + # inject list of ids in table we are tracing + # this allows us to slice by id without requiring presence of a household id column + traced_df = df[df[ref_col].isin(ref_col_traced_ids)] + new_traced_ids = traced_df.index.tolist() + if len(new_traced_ids) == 0: + logger.warning("register %s: no rows with %s in %s." % + (table_name, ref_col, ref_col_traced_ids)) + + # update traceable_table_indexes with this traceable_table's idx_name + if idx_name not in traceable_table_indexes: + traceable_table_indexes[idx_name] = table_name + print("adding table %s.%s to traceable_table_indexes" % (table_name, idx_name)) + inject.add_injectable('traceable_table_indexes', traceable_table_indexes) + + # update the list of trace_ids for this table + prior_traced_ids = traceable_table_ids.get(table_name, []) + + if new_traced_ids: + assert not set(prior_traced_ids) & set(new_traced_ids) + traceable_table_ids[table_name] = prior_traced_ids + new_traced_ids + inject.add_injectable('traceable_table_ids', traceable_table_ids) + + logger.info("register %s: added %s new ids to %s existing trace ids" % + (table_name, len(new_traced_ids), len(prior_traced_ids))) + logger.info("register %s: tracing new ids %s in %s" % + (table_name, new_traced_ids, table_name)) def write_df_csv(df, file_path, index_label=None, columns=None, column_labels=None, transpose=True): - mode = 'a' if os.path.isfile(file_path) else 'w' + need_header = not os.path.isfile(file_path) if columns: df = df[columns] if not transpose: - df.to_csv(file_path, mode="a", index=True, header=True) + df.to_csv(file_path, mode='a', index=df.index.name is not None, header=need_header) return - df_t = df.transpose() - if df.index.name is not None: - df_t.index.name = df.index.name - elif index_label: + df_t = df.transpose() if df.index.name in df else df.reset_index().transpose() + + if index_label: df_t.index.name = index_label - with open(file_path, mode=mode) as f: + if need_header: + if column_labels is None: column_labels = [None, None] if column_labels[0] is None: @@ -435,10 +297,10 @@ def write_df_csv(df, file_path, index_label=None, columns=None, column_labels=No column_labels[0] + ',' \ + ','.join([column_labels[1] + '_' + str(i+1) for i in range(len(df_t.columns))]) - if mode == 'a': - column_label_row = '# ' + column_label_row - f.write(column_label_row + '\n') - df_t.to_csv(file_path, mode='a', index=True, header=True) + with open(file_path, mode='a') as f: + f.write(column_label_row + '\n') + + df_t.to_csv(file_path, mode='a', index=True, header=False) def write_series_csv(series, file_path, index_label=None, columns=None, column_labels=None): @@ -451,7 +313,9 @@ def write_series_csv(series, file_path, index_label=None, columns=None, column_l series = series.rename(columns[1]) if index_label and series.index.name is None: series.index.name = index_label - series.to_csv(file_path, mode='a', index=True, header=True) + + need_header = not os.path.isfile(file_path) + series.to_csv(file_path, mode='a', index=True, header=need_header) def write_csv(df, file_name, index_label=None, columns=None, column_labels=None, transpose=True): @@ -475,27 +339,29 @@ def write_csv(df, file_name, index_label=None, columns=None, column_labels=None, Nothing """ - file_name = file_name.encode('ascii', 'ignore') - assert len(file_name) > 0 - file_path = log_file_path('%s.%s' % (file_name, CSV_FILE_TYPE)) + if not file_name.endswith('.%s' % CSV_FILE_TYPE): + file_name = '%s.%s' % (file_name, CSV_FILE_TYPE) + + file_path = config.trace_file_path(file_name) if os.path.isfile(file_path): - logger.error("write_csv file exists %s %s" % (type(df).__name__, file_name)) + logger.debug("write_csv file exists %s %s" % (type(df).__name__, file_name)) if isinstance(df, pd.DataFrame): # logger.debug("dumping %s dataframe to %s" % (df.shape, file_name)) write_df_csv(df, file_path, index_label, columns, column_labels, transpose=transpose) elif isinstance(df, pd.Series): - # logger.debug("dumping %s element series to %s" % (len(df.index), file_name)) + # logger.debug("dumping %s element series to %s" % (df.shape[0], file_name)) write_series_csv(df, file_path, index_label, columns, column_labels) elif isinstance(df, dict): df = pd.Series(data=df) - # logger.debug("dumping %s element dict to %s" % (len(df.index), file_name)) + # logger.debug("dumping %s element dict to %s" % (df.shape[0], file_name)) write_series_csv(df, file_path, index_label, columns, column_labels) else: - logger.error("write_df_csv object '%s' of unexpected type: %s" % (file_name, type(df))) + logger.error("write_csv object for file_name '%s' of unexpected type: %s" % + (file_name, type(df))) def slice_ids(df, ids, column=None): @@ -564,79 +430,31 @@ def get_trace_target(df, slicer): if slicer is None: slicer = df.index.name - # always slice by household id if we can if isinstance(df, pd.DataFrame): - if ('household_id' in df.columns): + # always slice by household id if we can + if 'household_id' in df.columns: slicer = 'household_id' - elif ('person_id' in df.columns): - slicer = 'person_id' + if slicer in df.columns: + column = slicer - if len(df.index) == 0: + if column is None and df.index.name != slicer: + raise RuntimeError("bad slicer '%s' for df with index '%s'" % (slicer, df.index.name)) + + traceable_table_indexes = inject.get_injectable('traceable_table_indexes', {}) + traceable_table_ids = inject.get_injectable('traceable_table_ids', {}) + + if df.empty: target_ids = None - elif slicer == 'PERID' or slicer == inject.get_injectable('persons_index_name', None): - target_ids = inject.get_injectable('trace_person_ids', []) - elif slicer == 'HHID' or slicer == inject.get_injectable('hh_index_name', None): - target_ids = inject.get_injectable('trace_hh_id', []) - elif slicer == 'person_id': - target_ids = inject.get_injectable('trace_person_ids', []) - column = slicer - elif slicer == 'household_id': - target_ids = inject.get_injectable('trace_hh_id', []) - column = slicer - elif slicer == 'tour_id': - target_ids = inject.get_injectable('trace_tour_ids', []) - elif slicer == 'trip_id': - target_ids = inject.get_injectable('trace_trip_ids', []) - elif slicer == 'joint_tour_id': - target_ids = inject.get_injectable('trace_tour_ids', []) - elif slicer == 'participant_id': - target_ids = inject.get_injectable('trace_participant_ids', []) - elif slicer == 'TAZ' or slicer == 'ZONE': + elif slicer in traceable_table_indexes: + # maps 'person_id' to 'persons', etc + table_name = traceable_table_indexes[slicer] + target_ids = traceable_table_ids.get(table_name, []) + elif slicer == 'TAZ': target_ids = inject.get_injectable('trace_od', []) - elif slicer == 'NONE': - target_ids = None - else: - print df.head() - return None, 'NONE' - raise RuntimeError("slice_canonically: bad slicer '%s'" % (slicer, )) - - if target_ids and not isinstance(target_ids, (list, tuple)): - target_ids = [target_ids] return target_ids, column -def slice_canonically(df, slicer, label, warn_if_empty=False): - """ - Slice dataframe by traced household or person id dataframe and write to CSV - - Parameters - ---------- - df: pandas.DataFrame - dataframe to slice - slicer: str - name of column or index to use for slicing - label: str - tracer name - only used to report bad slicer - - Returns - ------- - sliced subset of dataframe - """ - - target_ids, column = get_trace_target(df, slicer) - - if target_ids is not None: - df = slice_ids(df, target_ids, column) - - if warn_if_empty and len(df.index) == 0: - column_name = column or slicer - logger.warn("slice_canonically: no rows in %s with %s == %s" - % (label, column_name, target_ids)) - - return df - - def trace_targets(df, slicer=None): target_ids, column = get_trace_target(df, slicer) @@ -682,12 +500,12 @@ def hh_id_for_chooser(id, choosers): scalar household_id or series of household_ids """ - if choosers.index.name == 'HHID' or \ - choosers.index.name == inject.get_injectable('hh_index_name', 'HHID'): + if choosers.index.name == 'household_id': hh_id = id elif 'household_id' in choosers.columns: hh_id = choosers.loc[id]['household_id'] else: + print(": hh_id_for_chooser: nada, \n", choosers.columns) hh_id = None return hh_id @@ -696,7 +514,7 @@ def hh_id_for_chooser(id, choosers): def dump_df(dump_switch, df, trace_label, fname): if dump_switch: trace_label = extend_trace_label(trace_label, 'DUMP.%s' % fname) - trace_df(df, trace_label, slicer='NONE', transpose=False) + trace_df(df, trace_label, index_label=df.index.name, slicer='NONE', transpose=False) def trace_df(df, label, slicer=None, columns=None, @@ -728,9 +546,17 @@ def trace_df(df, label, slicer=None, columns=None, Nothing """ - df = slice_canonically(df, slicer, label, warn_if_empty) + target_ids, column = get_trace_target(df, slicer) + + if target_ids is not None: + df = slice_ids(df, target_ids, column) - if len(df.index) > 0: + if warn_if_empty and df.shape[0] == 0 and target_ids != []: + column_name = column or slicer + logger.warning("slice_canonically: no rows in %s with %s == %s" + % (label, column_name, target_ids)) + + if df.shape[0] > 0: write_csv(df, file_name=label, index_label=(index_label or slicer), columns=columns, column_labels=column_labels, transpose=transpose) @@ -762,18 +588,19 @@ def interaction_trace_rows(interaction_df, choosers, sample_size=None): # slicer column name and id targets to use for chooser id added to model_design dataframe # currently we only ever slice by person_id, but that could change, so we check here... - if choosers.index.name == 'PERID' \ - or choosers.index.name == inject.get_injectable('persons_index_name', None): + traceable_table_ids = inject.get_injectable('traceable_table_ids', {}) + + if choosers.index.name == 'person_id' and 'persons' in traceable_table_ids: slicer_column_name = choosers.index.name - targets = inject.get_injectable('trace_person_ids', []) - elif ('household_id' in choosers.columns and inject.get_injectable('trace_hh_id', False)): + targets = traceable_table_ids['persons'] + elif 'household_id' in choosers.columns and 'households' in traceable_table_ids: slicer_column_name = 'household_id' - targets = inject.get_injectable('trace_hh_id', []) - elif ('person_id' in choosers.columns and inject.get_injectable('trace_person_ids', False)): + targets = traceable_table_ids['households'] + elif 'person_id' in choosers.columns and 'persons' in traceable_table_ids: slicer_column_name = 'person_id' - targets = inject.get_injectable('trace_person_ids', []) + targets = traceable_table_ids['persons'] else: - print choosers.columns + print(choosers.columns) raise RuntimeError("interaction_trace_rows don't know how to slice index '%s'" % choosers.index.name) @@ -847,7 +674,7 @@ def trace_interaction_eval_results(trace_results, trace_ids, label): return # write out the raw dataframe - file_path = log_file_path('%s.raw.csv' % label) + file_path = config.trace_file_path('%s.raw.csv' % label) trace_results.to_csv(file_path, mode="a", index=True, header=True) # if there are multiple targets, we want them in separate tables for readability diff --git a/activitysim/core/util.py b/activitysim/core/util.py index da590a464..bd6f6da62 100644 --- a/activitysim/core/util.py +++ b/activitysim/core/util.py @@ -1,6 +1,12 @@ -import os -import psutil -import gc +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +from builtins import zip + import logging from operator import itemgetter @@ -10,12 +16,19 @@ from zbox import toolz as tz +from . import mem + logger = logging.getLogger(__name__) def GB(bytes): - gb = (bytes / (1024 * 1024 * 1024.0)) - return "%s GB" % (round(gb, 2), ) + # symbols = ('', 'K', 'M', 'G', 'T') + symbols = ('', ' KB', ' MB', ' GB', ' TB') + fmt = "%.1f%s" + for i, s in enumerate(symbols): + units = 1 << i * 10 + if bytes < units * 1024: + return fmt % (bytes / units, s) def df_size(df): @@ -23,18 +36,6 @@ def df_size(df): return "%s %s" % (df.shape, GB(bytes)) -def memory_info(): - - mi = psutil.Process().memory_full_info() - return "memory_info: vms: %s rss: %s uss: %s" % (GB(mi.vms), GB(mi.rss), GB(mi.uss)) - - -def force_garbage_collect(): - - gc.collect() - logger.debug("force_garbage_collect %s" % memory_info()) - - def left_merge_on_index_and_col(left_df, right_df, join_col, target_col): """ like pandas left merge, but join on both index and a specified join_col @@ -233,7 +234,7 @@ def quick_loc_series(loc_list, target_series): left_df = pd.DataFrame({left_on: loc_list.values}) elif isinstance(loc_list, pd.Series): left_df = loc_list.to_frame(name=left_on) - elif isinstance(loc_list, np.ndarray): + elif isinstance(loc_list, np.ndarray) or isinstance(loc_list, list): left_df = pd.DataFrame({left_on: loc_list}) else: raise RuntimeError("quick_loc_series loc_list of unexpected type %s" % type(loc_list)) @@ -284,8 +285,8 @@ def assign_in_place(df, df2): try: df[c] = df[c].astype(old_dtype) except ValueError: - logger.warn("assign_in_place changed dtype %s of column %s to %s" % - (old_dtype, c, df[c].dtype)) + logger.warning("assign_in_place changed dtype %s of column %s to %s" % + (old_dtype, c, df[c].dtype)) # if both df and df2 column were ints, but result is not if np.issubdtype(old_dtype, np.integer) \ @@ -294,10 +295,25 @@ def assign_in_place(df, df2): try: df[c] = df[c].astype(old_dtype) except ValueError: - logger.warn("assign_in_place changed dtype %s of column %s to %s" % - (old_dtype, c, df[c].dtype)) + logger.warning("assign_in_place changed dtype %s of column %s to %s" % + (old_dtype, c, df[c].dtype)) # add new columns (in order they appear in df2) new_columns = [c for c in df2.columns if c not in df.columns] df[new_columns] = df2[new_columns] + + +def df_from_dict(values, index=None): + + df = pd.DataFrame.from_dict(values) + if index is not None: + df.index = index + + # 2x slower but users less peak RAM + # df = pd.DataFrame(index = index) + # for c in values.keys(): + # df[c] = values[c] + # del values[c] + + return df diff --git a/conftest.py b/conftest.py deleted file mode 100644 index a17f029f3..000000000 --- a/conftest.py +++ /dev/null @@ -1,13 +0,0 @@ -import numpy as np -import pytest - - -@pytest.fixture -def random_seed(request): - current = np.random.get_state() - - def fin(): - np.random.set_state(current) - request.addfinalizer(fin) - - np.random.seed(0) diff --git a/docs/abmexample.rst b/docs/abmexample.rst index 7a6fbcc92..8d0e901fd 100644 --- a/docs/abmexample.rst +++ b/docs/abmexample.rst @@ -30,14 +30,15 @@ individual decision-makers. Space ~~~~~ -TM1 uses the 1454-zone system developed for MTC's previous trip-based model. The zones are fairly large, -which may distort the representation of transit access in mode choice. To ameliorate this problem, the -zones were further sub-divided into three categories of transit access: short walk, long walk, and not walkable. +TM1 uses the 1454-zone system developed for the previous MTC trip-based model. The zones are fairly large for the region, +which may somewhat distort the representation of transit access in mode choice. To ameliorate this problem, the +original model zones were further sub-divided into three categories of transit access: short walk, long walk, and not +walkable. However, support for transit subzones is not included in the activitysim implementation since the latest generation +of activity-based models typically use an improved approach to spatial representation called multiple zone systems. -However, support for transit subzones is not included in the activitysim implementation since the latest generation -of activity-based models typically use multiple zone systems instead. In brief, all households are assigned to microzones -(such as Census blocks) and trips are assigned to origin and destination microzones. When considering network -level-of-service (LOS) indicators, different spatial resolutions can be used for different modes. For example: +In brief, under a multiple zone system approach, all households are assigned to microzones (which are smaller than traditional +TAZs) and trips are assigned to origin and destination microzones. When considering network level-of-service (LOS) indicators, +the model uses different spatial resolutions for different travel modes. For example: * TAZs are used for auto network modeling and a set of taz-to-taz skims is input to the demand model * Microzones are used for nearby non-motorized mode (walk and bike) network modeling and skims and a set of nearby maz-to-maz skims is input to the demand model @@ -47,12 +48,13 @@ level-of-service (LOS) indicators, different spatial resolutions can be used for Since trips are modeled in the demand model from microzone to microzone, but transit network LOS is split across two input data sets, transit virtual path building (TVPB) is done to generate LOS measures from: - * the trip's origin microzone to a select number of nearby TAPs using microzone to TAP LOS measures + * the trip origin microzone to a select number of nearby TAPs using microzone to TAP LOS measures * boarding TAP to alighting TAP LOS measures (TAP to TAP skims) * alighting TAP to destination microzone using microzone to TAP LOS measures -The resulting complete transit path LOS for the "best" or a "bundle" of paths is then used in the demand model -for representing transit LOS at the microzone level. This functionality is **NOT YET IMPLEMENTED**, but planned for a future release. +The resulting complete transit path LOS for the best, or a bundle of, paths is then used in the demand model +for representing transit LOS at the microzone level. Support for multiple zone systems is **NOT YET IMPLEMENTED**, but +planned for a future release. For the time being, all travel is modeled at the TAZ level. Decision-making units ~~~~~~~~~~~~~~~~~~~~~ @@ -96,7 +98,7 @@ with respect to age, work status, and school status. +-----------------------------------------------------------+---------+------------------+---------------+ | Non-driving student | 6 - 16 | None | Pre-college | +-----------------------------------------------------------+---------+------------------+---------------+ -| Pre-school child | 0 - 5 | None | None | +| Pre-school child | 0 - 5 | None | Preschool | +-----------------------------------------------------------+---------+------------------+---------------+ Household type segments are useful for pre-defining certain data items (such as destination @@ -104,12 +106,11 @@ choice size terms) so that these data items can be pre-calculated for each segme of these data items reduces model complexity and runtime. The segmentation is based on household income, and includes four segments - low, medium, high, very high. -In the model, the persons in each household are assigned a simulated but fixed "value of time" +In the model, the persons in each household are assigned a simulated but fixed value of time that modulates the relative weight the decision-maker places on time and cost. The probability distribution from which the value of time is sampled was derived from a toll choice model -estimated using data from a stated preference survey performed for the SFCTA's Mobility, Access, and +estimated using data from a stated preference survey performed for the SFCTA Mobility, Access, and Pricing Study, and is a lognormal distribution with a mean that varies by income segment. -Value of time assignment is **NOT YET IMPLEMENTED**. Activity type segmentation ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -129,11 +130,11 @@ simulation is assigned one of these activity types. +=====================+==========================================================================+===============+=======================================+ | Work | Working at regular workplace or work-related activities outside the home | Mandatory | Workers and students | +---------------------+--------------------------------------------------------------------------+---------------+---------------------------------------+ -| University | College or University | Mandatory | Age 18+ | +| University | College or university | Mandatory | Age 18+ | +---------------------+--------------------------------------------------------------------------+---------------+---------------------------------------+ | High School | Grades 9-12 | Mandatory | Age 14-17 | +---------------------+--------------------------------------------------------------------------+---------------+---------------------------------------+ -| Grade School | Grades K-8 | Mandatory | Age 5-13 | +| Grade School | Grades preschool, K-8 | Mandatory | Age 0-13 | +---------------------+--------------------------------------------------------------------------+---------------+---------------------------------------+ | Escorting | Pick-up/drop-off passengers (auto trips only) | NonMandatory | Age 16+ | +---------------------+--------------------------------------------------------------------------+---------------+---------------------------------------+ @@ -151,7 +152,7 @@ simulation is assigned one of these activity types. Treatment of time ~~~~~~~~~~~~~~~~~ -The model system functions at a temporal resolution of one hour. These one hour increments +The TM1 example model system functions at a temporal resolution of one hour. These one hour increments begin with 3 AM and end with 3 AM the next day. Temporal integrity is ensured so that no activities are scheduled with conflicting time windows, with the exception of short activities/tours that are completed within a one hour increment. For example, a person may have @@ -165,19 +166,19 @@ increments, LOS matrices are only created for five aggregate time periods. The t reference the appropriate transport network depending on their trip mode and the mid-point trip time. The definition of time periods for LOS matrices is given below. -+---------------+-------------------+ -| Time Period | Start to End Hour | -+===============+===================+ -| EA | 3 to 6 | -+---------------+-------------------+ -| AM | 6 to 10 | -+---------------+-------------------+ -| MD | 11 to 15 | -+---------------+-------------------+ -| PM | 15 to 19 | -+---------------+-------------------+ -| EV | 19 to 3 | -+---------------+-------------------+ ++---------------+------------+----------+ +| Time Period | Start Hour | End Hour | ++===============+============+==========+ +| EA | 3 | 6 | ++---------------+------------+----------+ +| AM | 6 | 11 | ++---------------+------------+----------+ +| MD | 11 | 15 | ++---------------+------------+----------+ +| PM | 15 | 20 | ++---------------+------------+----------+ +| EV | 20 | 3 | ++---------------+------------+----------+ Trip modes ~~~~~~~~~~ @@ -255,6 +256,7 @@ The example has the following root folder/file setup: * configs - settings, expressions files, etc. * data - input data such as land use, synthetic population files, and skims + * output - outputs folder * simulation.py - main script to run the model Inputs @@ -262,29 +264,27 @@ Inputs In order to run the example, you first need two input files in the ``data`` folder as identified in the ``configs\settings.yaml`` file: -* store: mtc_asim.h5 - an HDF5 file containing the following MTC TM1 tables as pandas DataFrames for a subset of zones: +* input_store: mtc_asim.h5 - an HDF5 file containing the following MTC TM1 tables as pandas DataFrames for a subset of zones: - * skims/accessibility - Zone-based accessibility measures - * land_use/taz_data - Zone-based land use data (population and employment for example) + * land_use_taz - Zone-based land use data (population and employment for example) * persons - Synthetic population person records * households - Synthetic population household records * skims_file: skims.omx - an OMX matrix file containing the MTC travel model one skim matrices for a subset of zones. Both files are used in the tests as well and are in the ``activitysim\abm\test\data`` folder. Alternatively, -these files can be downloaded from the SF_25_zone_example folder on -MTC's `box account `__. The full set of MTC -TM1 OMX skims are also on the box account. +these files can be downloaded from the MTC `box account `__. The full set +of MTC TM1 OMX skims are also on the box account. .. note:: Input files can be viewed with the `OMX Viewer `__. - The ``scripts\data_mover.ipynb`` was used to create the mtc_asim.h5 file from the raw CSV files. + The ``scripts\mtc_inputs.py`` was used to create the mtc_asim.h5 file from the raw CSV files. This script reads the CSV files, creates DataFrame indexes, and writes the pandas objects to the HDF5 file. The ``scripts\build_omx.py`` script will build one OMX file containing all the skims. The original MTC TM1 skims were converted from - Cube to OMX using the `Cube to OMX converter `__. + Cube to OMX using the ``scripts\mtc_tm1_omx_export.s`` script. The example inputs were created by the ``scripts\create_sf_example.py`` script, which creates the land use, synthetic population, and skim inputs for a subset of user-defined zones. @@ -296,18 +296,22 @@ model utilities and form. The first place to start in the ``configs`` folder is is the main settings file for the model run. This file includes: * ``models`` - list of model steps to run - auto ownership, tour frequency, etc. - see :ref:`model_steps` -* ``store`` - HDF5 inputs file +* ``resume_after`` - to resume running the data pipeline after the last successful checkpoint +* ``input_store`` - HDF5 inputs file * ``skims_file`` - skim matrices in one OMX file * ``households_sample_size`` - number of households to sample and simulate; comment out to simulate all households * ``trace_hh_id`` - trace household id; comment out for no trace * ``trace_od`` - trace origin, destination pair in accessibility calculation; comment out for no trace * ``chunk_size`` - batch size for processing choosers, see :ref:`chunk_size` * ``check_for_variability`` - disable check for variability in an expression result debugging feature in order to speed-up runtime +* ``use_shadow_pricing`` - turn shadow_pricing on and off for work and school location +* ``output_tables`` - list of output tables to write to CSV * global variables that can be used in expressions tables and Python code such as: * ``urban_threshold`` - urban threshold area type max value * ``county_map`` - mapping of county codes to county names * ``skim_time_periods`` - time period upper bound values and labels + * ``household_median_value_of_time`` - various household and person value-of-time model settings .. _sub-model-spec-files: @@ -323,28 +327,40 @@ columns indicates the number of non-mandatory tours by purpose. The current set +------------------------------------------------+--------------------------------------------------------------------+ | Model | Specification Files | +================================================+====================================================================+ +| :ref:`initialize_landuse` | - initialize_landuse.yaml | +| | - annotate_landuse.csv | ++------------------------------------------------+--------------------------------------------------------------------+ | :ref:`accessibility` | - accessibility.yaml | | | - accessibility.csv | +------------------------------------------------+--------------------------------------------------------------------+ +| | - initialize_households.yaml | +| :ref:`initialize_households` | - annotate_persons.csv | +| | - annotate_households.csv | +| | - annotate_persons_after_hh.csv | ++------------------------------------------------+--------------------------------------------------------------------+ | :ref:`school_location` | - school_location.yaml | | | - annotate_persons_school.csv | | | - school_location_sample.csv | | | - tour_mode_choice.yaml (and related files) | | | - school_location.csv | | | - destination_choice_size_terms.csv | +| | - shadow_pricing.yaml | +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`work_location` | - workplace_location.yaml | | | - annotate_persons_workplace.csv | +| | - annotate_households_workplace.csv | | | - workplace_location_sample.csv | | | - tour_mode_choice.yaml (and related files) | | | - workplace_location.csv | | | - destination_choice_size_terms.csv | +| | - shadow_pricing.yaml | +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`auto_ownership` | - auto_ownership.yaml | | | - auto_ownership.csv | +------------------------------------------------+--------------------------------------------------------------------+ -| :ref:`freeparking` | **NOT YET IMPLEMENTED** | -| | | +| :ref:`freeparking` | - free_parking.yaml | +| | - free_parking.csv | +| | - free_parking_annotate_persons_preprocessor.csv | +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`cdap` | - cdap.yaml | | | - annotate_persons_cdap.csv | @@ -355,8 +371,8 @@ columns indicates the number of non-mandatory tours by purpose. The current set +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`mandatory_tour_frequency` | - mandatory_tour_frequency.yaml | | | - mandatory_tour_frequency.csv | -| | - annotate_persons_mtf.csv | | | - mandatory_tour_frequency_alternatives.csv | +| | - annotate_persons_mtf.csv | +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`mandatory_tour_scheduling` | - mandatory_tour_scheduling.yaml | | | - tour_scheduling_work.csv | @@ -364,6 +380,7 @@ columns indicates the number of non-mandatory tours by purpose. The current set | | - tour_departure_and_duration_alternatives.csv | +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`joint_tour_frequency` | - joint_tour_frequency.yaml | +| | - annotate_persons_jtf.csv | | | - joint_tour_frequency_annotate_households_preprocessor.csv | | | - joint_tour_frequency_alternatives.csv | +------------------------------------------------+--------------------------------------------------------------------+ @@ -389,11 +406,14 @@ columns indicates the number of non-mandatory tours by purpose. The current set | :ref:`non_mandatory_tour_frequency` | - non_mandatory_tour_frequency.yaml | | | - non_mandatory_tour_frequency.csv | | | - non_mandatory_tour_frequency_alternatives.csv | +| | - non_mandatory_tour_frequency_annotate_persons_preprocessor.csv | +| | - non_mandatory_tour_frequency_extension_probs.csv | | | - annotate_persons_nmtf.csv | +------------------------------------------------+--------------------------------------------------------------------+ -| :ref:`non_mandatory_tour_destination_choice` | - non_mandatory_tour_destination_choice.yaml | -| | - non_mandatory_tour_destination.csv (**NOT YET IMPLEMENTED**) | +| :ref:`non_mandatory_tour_destination_choice` | - non_mandatory_tour_destination.yaml | +| | - non_mandatory_tour_destination.csv | | | - non_mandatory_tour_destination_sample.csv | +| | - tour_mode_choice.yaml (and related files) | | | - destination_choice_size_terms.csv | +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`non_mandatory_tour_scheduling` | - non_mandatory_tour_scheduling.yaml | @@ -409,6 +429,7 @@ columns indicates the number of non-mandatory tours by purpose. The current set | :ref:`atwork_subtour_frequency` | - atwork_subtour_frequency.yaml | | | - atwork_subtour_frequency.csv | | | - atwork_subtour_frequency_alternatives.csv | +| | - atwork_subtour_frequency_annotate_tours_preprocessor.csv | +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`atwork_subtour_destination` | - atwork_subtour_destination.yaml | | | - atwork_subtour_destination_sample.csv | @@ -416,8 +437,9 @@ columns indicates the number of non-mandatory tours by purpose. The current set | | - tour_mode_choice.yaml (and related files) | | | - destination_choice_size_terms.csv | +------------------------------------------------+--------------------------------------------------------------------+ -| :ref:`atwork_subtour_scheduling` | - atwork_subtour_scheduling.yaml | +| :ref:`atwork_subtour_scheduling` | - tour_scheduling_atwork.yaml | | | - tour_scheduling_atwork.csv | +| | - tour_scheduling_atwork_preprocessor.csv | | | - tour_departure_and_duration_alternatives.csv | +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`atwork_subtour_mode_choice` | - tour_mode_choice.yaml (and related files) | @@ -442,6 +464,7 @@ columns indicates the number of non-mandatory tours by purpose. The current set | | - trip_purpose_probs.csv | +------------------------------------------------+--------------------------------------------------------------------+ | :ref:`trip_destination_choice` | - trip_destination.yaml (+ trip_purpose_and_destination.yaml) | +| | - trip_destination.csv | | | - trip_destination_annotate_trips_preprocessor.csv | | | - trip_destination_sample.csv | | | - trip_mode_choice.yaml (and related files) | @@ -479,24 +502,11 @@ Logging Included in the ``configs`` folder is the ``logging.yaml``, which configures Python logging library and defines two key log files: -* ``asim.log`` - overall system log file +* ``activitysim.log`` - overall system log file * ``hhtrace.log`` - household trace log file if tracing is on Refer to the :ref:`tracing` section for more detail on tracing. - -Running the Example -------------------- - -To run the example, do the following: - -* Open a command line window in the ``example`` folder -* Activate the correct conda environment if needed -* Run ``python simulation.py`` to run the data pipeline (i.e. model steps) -* ActivitySim should log some information and write outputs to the ``outputs`` folder. - -The example should complete within a couple minutes since it is running a small sample of households. - .. _model_steps : Pipeline @@ -507,33 +517,27 @@ The ``models`` setting contains the specification of the data pipeline model ste :: models: - - initialize + - initialize_landuse - compute_accessibility - - school_location_sample - - school_location_logsums - - school_location_simulate - - workplace_location_sample - - workplace_location_logsums - - workplace_location_simulate + - initialize_households + - school_location + - workplace_location - auto_ownership_simulate + - free_parking - cdap_simulate - mandatory_tour_frequency - mandatory_tour_scheduling - joint_tour_frequency - joint_tour_composition - joint_tour_participation - - joint_tour_destination_sample - - joint_tour_destination_logsums - - joint_tour_destination_simulate + - joint_tour_destination - joint_tour_scheduling - non_mandatory_tour_frequency - non_mandatory_tour_destination - non_mandatory_tour_scheduling - tour_mode_choice_simulate - atwork_subtour_frequency - - atwork_subtour_destination_sample - - atwork_subtour_destination_logsums - - atwork_subtour_destination_simulate + - atwork_subtour_destination - atwork_subtour_scheduling - atwork_subtour_mode_choice - stop_frequency @@ -543,16 +547,17 @@ The ``models`` setting contains the specification of the data pipeline model ste - trip_scheduling - trip_mode_choice - write_data_dictionary + - track_skim_usage - write_tables These model steps must be registered orca steps, as noted below. If you provide a ``resume_after`` argument to :func:`activitysim.core.pipeline.run` the pipeliner will load checkpointed tables from the checkpoint store -and resume pipeline processing on the next model step after the specified checkpoint. +and resume pipeline processing on the next model step after the specified checkpoint. :: resume_after = None - #resume_after = 'school_location_logsums' + #resume_after = 'school_location' The model is run by calling the :func:`activitysim.core.pipeline.run` method. @@ -560,6 +565,32 @@ The model is run by calling the :func:`activitysim.core.pipeline.run` method. pipeline.run(models=_MODELS, resume_after=resume_after) +Running the Example +------------------- + +To run the example, do the following: + +* Open a command line window in the ``example`` folder +* Activate the correct conda environment if needed +* Run ``python simulation.py`` to run the data pipeline (i.e. model steps) +* ActivitySim should log some information and write outputs to the ``output`` folder. + +The example should complete within a couple minutes since it is running a small sample of households. + +Multiprocessing +~~~~~~~~~~~~~~~ + +The model system is parallelized via :ref:`multiprocessing`. To setup and run the :ref:`example` using +multiprocessing, follow the same steps as above, but use the configuration in the ``example_mp`` folder: + +* Open a command prompt in the ``example_mp`` folder. The data does not need to be copied into the folder since the mp setup inherits from the example single-processed setup. +* Run ``python simulation.py``. + +The multiprocessing example also writes outputs to the ``output`` folder. + +The default multiprocessed example is configured to run with two processors: ``num_processes: 2``. Additional more performant configurations are +included and commented out in the example settings file. See :ref:`multiprocessing` for more information. + Outputs ------- @@ -574,76 +605,76 @@ restarting the pipeline at any step. +-----------------------------------+------------------------------------+------+------+ | Table | Creator | NRow | NCol | +===================================+====================================+======+======+ -| accessibility | compute_accessibility | 10 | 25 | +| accessibility | compute_accessibility | 1454 | 10 | +-----------------------------------+------------------------------------+------+------+ -| atwork_subtour_destination_sample | atwork_subtour_destination_sample | 4 | 46 | +| households | initialize | 100 | 65 | +-----------------------------------+------------------------------------+------+------+ -| atwork_subtour_destination_sample | atwork_subtour_destination_logsums | 5 | 46 | +| households | workplace_location | 100 | 66 | +-----------------------------------+------------------------------------+------+------+ -| households | initialize | 64 | 100 | +| households | cdap_simulate | 100 | 70 | +-----------------------------------+------------------------------------+------+------+ -| households | cdap_simulate | 68 | 100 | +| households | joint_tour_frequency | 100 | 72 | +-----------------------------------+------------------------------------+------+------+ -| households | joint_tour_frequency | 70 | 100 | +| joint_tour_participants | joint_tour_participation | 13 | 4 | +-----------------------------------+------------------------------------+------+------+ -| joint_tour_destination_sample | joint_tour_destination_sample | 4 | 30 | +| land_use | initialize_landuse | 1454 | 44 | +-----------------------------------+------------------------------------+------+------+ -| joint_tour_destination_sample | joint_tour_destination_logsums | 4 | 30 | +| person_windows | initialize_households | 271 | 21 | +-----------------------------------+------------------------------------+------+------+ -| joint_tour_participants | joint_tour_participation | 4 | 4 | +| persons | initialize_households | 271 | 42 | +-----------------------------------+------------------------------------+------+------+ -| land_use | initialize | 45 | 25 | +| persons | school_location | 271 | 45 | +-----------------------------------+------------------------------------+------+------+ -| person_windows | initialize | 21 | 157 | +| persons | workplace_location | 271 | 52 | +-----------------------------------+------------------------------------+------+------+ -| persons | initialize | 40 | 157 | +| persons | free_parking | 271 | 53 | +-----------------------------------+------------------------------------+------+------+ -| persons | school_location_simulate | 43 | 157 | +| persons | cdap_simulate | 271 | 59 | +-----------------------------------+------------------------------------+------+------+ -| persons | workplace_location_simulate | 48 | 157 | +| persons | mandatory_tour_frequency | 271 | 64 | +-----------------------------------+------------------------------------+------+------+ -| persons | cdap_simulate | 54 | 157 | +| persons | joint_tour_participation | 271 | 65 | +-----------------------------------+------------------------------------+------+------+ -| persons | mandatory_tour_frequency | 59 | 157 | +| persons | non_mandatory_tour_frequency | 271 | 73 | +-----------------------------------+------------------------------------+------+------+ -| persons | non_mandatory_tour_frequency | 64 | 157 | +| school_destination_size | initialize_households | 1454 | 3 | +-----------------------------------+------------------------------------+------+------+ -| school_location_sample | school_location_sample | 4 | 157 | +| school_modeled_size | school_location | 1454 | 3 | +-----------------------------------+------------------------------------+------+------+ -| school_location_sample | school_location_logsums | 5 | 157 | +| tours | mandatory_tour_frequency | 153 | 11 | +-----------------------------------+------------------------------------+------+------+ -| tours | mandatory_tour_frequency | 11 | 71 | +| tours | mandatory_tour_scheduling | 153 | 15 | +-----------------------------------+------------------------------------+------+------+ -| tours | mandatory_tour_scheduling | 15 | 71 | +| tours | joint_tour_composition | 159 | 16 | +-----------------------------------+------------------------------------+------+------+ -| tours | joint_tour_composition | 16 | 73 | +| tours | tour_mode_choice_simulate | 319 | 17 | +-----------------------------------+------------------------------------+------+------+ -| tours | atwork_subtour_frequency | 19 | 186 | +| tours | atwork_subtour_frequency | 344 | 19 | +-----------------------------------+------------------------------------+------+------+ -| tours | stop_frequency | 21 | 186 | +| tours | stop_frequency | 344 | 21 | +-----------------------------------+------------------------------------+------+------+ -| trips | stop_frequency | 7 | 428 | +| trips | stop_frequency | 859 | 7 | +-----------------------------------+------------------------------------+------+------+ -| trips | trip_purpose | 8 | 428 | +| trips | trip_purpose | 859 | 8 | +-----------------------------------+------------------------------------+------+------+ -| trips | trip_destination | 11 | 428 | +| trips | trip_destination | 859 | 11 | +-----------------------------------+------------------------------------+------+------+ -| trips | trip_scheduling | 12 | 428 | +| trips | trip_scheduling | 859 | 11 | +-----------------------------------+------------------------------------+------+------+ -| trips | trip_mode_choic | 13 | 428 | +| trips | trip_mode_choice | 859 | 12 | +-----------------------------------+------------------------------------+------+------+ -| workplace_location_sample | workplace_location_sample | 3 | 916 | +| workplace_destination_size | initialize_households | 1454 | 4 | +-----------------------------------+------------------------------------+------+------+ -| workplace_location_sample | workplace_location_logsums | 4 | 916 | +| workplace_modeled_size | workplace_location | 1454 | 4 | +-----------------------------------+------------------------------------+------+------+ The example ``simulation.py`` run model script also writes the final tables to CSV files -for illustrative purposes by using the :func:`activitysim.core.pipeline.get_table` method. This method -returns a pandas DataFrame, which can then be written to a CSV with the ``to_csv(file_path)`` method. +for illustrative purposes by using the :func:`activitysim.core.pipeline.get_table` method via the ``write_tables`` step. +This method returns a pandas DataFrame, which can then be written to a CSV with the ``to_csv(file_path)`` method. -ActivitySim also writes log and trace files to the ``outputs`` folder. The asim.log file, which -is the overall log file is always produced. If tracing is specified, then trace files are output -as well. +ActivitySim also writes log and trace files to the ``outputs`` folder. The activitysim.log file, +which is the overall log file is always produced. If tracing is specified, then trace files are +output as well. .. _tracing : @@ -662,5 +693,5 @@ file: * ``accessibility.result.csv`` - accessibility expression results for the OD pair -With the set of output CSV files, the user can trace ActivitySim's calculations in order to ensure they are correct and/or to +With the set of output CSV files, the user can trace ActivitySim calculations in order to ensure they are correct and/or to help debug data and/or logic errors. diff --git a/docs/add_image_map.py b/docs/add_image_map.py index 8d6a11e15..1c9b508eb 100644 --- a/docs/add_image_map.py +++ b/docs/add_image_map.py @@ -35,7 +35,7 @@ print("add image map to " + fileName) -with open(fileName) as file: +with open(fileName, encoding="utf8") as file: lines = file.readlines() with open(fileName, 'w') as file: diff --git a/docs/core.rst b/docs/core.rst index c2b7deb8d..ab0ea3449 100644 --- a/docs/core.rst +++ b/docs/core.rst @@ -2,13 +2,27 @@ Core Components =============== -ActivitySim's core components include features for data management, +ActivitySim's core components include features for multiprocessing, data management, utility expressions, choice models, person time window management, and helper -functions. These core components include the skim matrix manager, the +functions. These core components include the multiprocessor, skim matrix manager, the data pipeline manager, the random number manager, the tracer, sampling methods, simulation methods, model specification readers and expression evaluators, choice models, timetable, and helper functions. +.. _multiprocessing_in_detail: + +Multiprocessing +--------------- + +Parallelization using multiprocessing + +API +~~~ + +.. automodule:: activitysim.core.mp_tasks + :members: + + Data Management --------------- @@ -173,7 +187,7 @@ coefficients) is specified in the YAML settings file. +========================================+==========================================================+=================+===============+ |DA - Unavailable | sov_available == False | -999 | | +----------------------------------------+----------------------------------------------------------+-----------------+---------------+ -|DA - In-vehicle time | @c_ivt*(@odt_skims['SOV_TIME'] + dot_skims['SOV_TIME']) | 1 | | +|DA - In-vehicle time | @c_ivt*(odt_skims['SOV_TIME'] + dot_skims['SOV_TIME']) | 1 | | +----------------------------------------+----------------------------------------------------------+-----------------+---------------+ |DAP - Unavailable for age less than 16 | age < 16 | | -999 | +----------------------------------------+----------------------------------------------------------+-----------------+---------------+ @@ -361,7 +375,7 @@ API Inject ~~~~~~ -Wrap orca class to make it easier to track and manage interaction with the data pipeline. +Wrap ORCA class to make it easier to track and manage interaction with the data pipeline. API ^^^ @@ -369,21 +383,21 @@ API .. automodule:: activitysim.core.inject :members: -Inject_Defaults -~~~~~~~~~~~~~~~ +Mem +~~~ -Default file and folder settings are injected into the orca model runner if needed. +Helper functions for tracking memory usage API ^^^ -.. automodule:: activitysim.core.inject_defaults +.. automodule:: activitysim.core.mem :members: - + Output ~~~~~~ -Write output files. +Write output files and track skim usage. API ^^^ diff --git a/docs/development.rst b/docs/development.rst index 8662bc4e3..37e23292a 100644 --- a/docs/development.rst +++ b/docs/development.rst @@ -29,13 +29,14 @@ debugging of problems with data and/or calculations. It also allows for checkpo resources, such as the state of each person at a point in the model simulation. Checkpointing also allows for regression testing of results at specified points in overall model run. -`ORCA `__ is an orchestration/pipeline tool that defines model steps, -dynamic data sources, and connects them to processing functions. ORCA defines dynamic data tables +Earlier versions of ActivitySim depended on `ORCA `__, an orchestration/pipeline tool +that defines model steps, dynamic data sources, and connects them to processing functions. ORCA defined dynamic data tables based on pandas DataFrames, columns based on pandas Series, and injectables (functions). Model steps -are executed as steps registered with the ORCA engine. ActivitySim extends ORCA's functionality by -adding a :ref:`pipeline_in_detail`, that runs a series of ORCA model steps, manages the state of the data +were executed as steps registered with the ORCA engine. Over time ActivitySim has extended ORCA's functionality by +adding a :ref:`pipeline_in_detail` that runs a series of model steps, manages the state of the data tables throughout the model run, allows for restarting at any model step, and integrates with the -random number generation procedures (see :ref:`random_in_detail`). +random number generation procedures (see :ref:`random_in_detail`). As a result, ORCA is no longer a dependency of +the system. See :mod:`activitysim.core.inject` for more information. Data Handling ~~~~~~~~~~~~~ @@ -61,13 +62,13 @@ and network skim matrices. With this design, the Python code, which can be thou engine, and the specific model calculations, such as the utilities, are separate. This helps to avoid modifying the actual Python code when making changes to the models, such as during model calibration. An example of model expressions is found in the example auto ownership model specification file - -`auto_ownership.csv `__. +`auto_ownership.csv `__. Refer to the :ref:`expressions` section for more detail. Many of the models have pre- and post-processor table annotators, which read a CSV file of expression, calculate required additional table fields, and join the fields to the target tables. An example table annotation expressions file is found in the example configuration files for households for the CDAP model - -`annotate_households_cdap.csv `__. +`annotate_households_cdap.csv `__. Refer to :ref:`table_annotation` for more information and the :func:`activitysim.abm.models.util.expressions.assign_columns` function. Choice Models @@ -92,13 +93,13 @@ Models An activitysim travel model is made up of a series of models, or steps in the data pipeline. A model typically does the following: - * registers an orca step that is called by the model runner + * registers an ORCA step that is called by the model runner * sets up logging and tracing - * gets the relevant input data tables from orca + * gets the relevant input data tables from ORCA * gets all required settings, config files, etc. * runs a data preprocessor on each input table that needs additional fields for the calculation - * solves the models in chunks - * runs a data postprocessor on the outputs table that needs additional fields for later models + * solves the model in chunks of data table rows + * runs a data postprocessor on the output table data that needs additional fields for later models * writes the resulting table data to the pipeline See :ref:`models` for more information. @@ -109,7 +110,7 @@ Development Install The development version of ActivitySim can be installed as follows: -* Clone or fork the source from the `GitHub repository `__ +* Clone or fork the source from the `GitHub repository `__ * Activate the correct conda environment if needed * Navigate to your local activitysim git directory * Run the command ``python setup.py develop`` diff --git a/docs/gettingstarted.rst b/docs/gettingstarted.rst index a2ab65cc0..46baafde5 100644 --- a/docs/gettingstarted.rst +++ b/docs/gettingstarted.rst @@ -14,7 +14,7 @@ This page describes how to get started with ActivitySim. Installation ------------ -1. Install `Anaconda 64bit Python 2.7 `__. It is best to use :ref:`anaconda_notes` with ActivitySim. +1. Install `Anaconda 64bit Python 3 `__. It is best to use :ref:`anaconda_notes` with ActivitySim. 2. If you access the internet from behind a firewall, then you need to configure your proxy server. To do so, create a .condarc file in your Anaconda installation folder, such as: :: @@ -24,11 +24,11 @@ Installation https: https://myproxy.org:8080 ssl_verify: false -3. Create and activate an Anaconda environment (basically a Python install just for this project) +3. Create and activate an Anaconda environment (basically a Python install just for this project) using Anaconda Prompt or the terminal. :: - conda create -n asimtest python=2.7 + conda create -n asimtest python=3.7 #Windows activate asimtest @@ -41,20 +41,31 @@ Installation :: #required packages for running ActivitySim - pip install cytoolz numpy pandas tables pyyaml psutil - pip install orca openmatrix zbox + conda install cytoolz numpy pandas psutil future + conda install -c anaconda pytables pyyaml + pip install openmatrix zbox #optional required packages for testing and building documentation - pip install pytest pytest-cov coveralls pycodestyle - pip install sphinx numpydoc sphinx_rtd_theme + conda install pytest pytest-cov coveralls pycodestyle + conda install sphinx numpydoc sphinx_rtd_theme -5. If you access the internet from behind a firewall, then you need to configure your proxy server when downloading packages. For example: +5. If you access the internet from behind a firewall, then you need to configure your proxy server when downloading packages. + +For `conda` for example, create a `.condarc` file in your Anaconda installation folder with the following: + +:: + + proxy_servers: + http: http://myproxy.org:8080 + https: https://myproxy.org:8080 + ssl_verify: false + +For `pip` for example: :: pip install --trusted-host pypi.python.org --proxy=myproxy.org:8080 openmatrix - 6. Get and install the ActivitySim package on the activated conda Python environment: :: @@ -73,12 +84,13 @@ Anaconda .. note:: - ActivitySim is a 64bit Python 2.7 library that uses a number of packages from the + ActivitySim is a 64bit Python 2 or 3 library that uses a number of packages from the scientific Python ecosystem, most notably `pandas `__ - and `numpy `__. ActivitySim does not currently support Python 3. + and `numpy `__. ActivitySim currently supports Python 2, but Python 2 + will be `retired `__ at the end of 2019 so Python 3 is recommended. The recommended way to get your own scientific Python installation is to - install Anaconda 2 64bit, which contains many of the libraries upon which + install 64 bit Anaconda, which contains many of the libraries upon which ActivitySim depends + some handy Python installation management tools. Anaconda includes the ``conda`` command line tool, which does a number of useful @@ -90,8 +102,11 @@ Anaconda You need to activate the activitysim environment each time you start a new command session. You can remove an environment with ``conda remove -n asimtest --all`` and check the current active environment with ``conda info -e``. + + For more information on Anaconda, see Anaconda's `getting started + `__ guide. - If numexpr (which numpy requires) fails to install, you may need + If numexpr (which numpy requires) fails to install for Python 2.7, you may need the `Microsoft Visual C++ Compiler for Python `__. Run the Example @@ -112,10 +127,13 @@ To setup and run the :ref:`example`, do the following: source activate asimtest #run example - python run_populationsim.py + python simulation.py * Review the outputs in the ``output`` folder +.. note:: + Common configuration settings can be overidden at runtime. See ``python simulation.py -h``. + Hardware -------- @@ -126,9 +144,12 @@ The computing hardware required to run a model implemented in the ActivitySim fr * the number and size of network skims by mode and time-of-day * the desired runtimes -ActivitySim framework models utilize a significant amount of RAM since they store data in-memory to reduce -access time in order to minimize runtimes. For example, the example MTC Travel Model One model has 2.7 million -households, 1475 zones, 826 skims and runs for approximately 19 hours in a single process/thread. The full -scale (all households, zones, skims, and sub-models) Travel Model One example is run on a Windows -server with 164GB of RAM and 40 CPUs. Parallelization is **NOT YET IMPLEMENTED** but is planned for -Fall 2018 and will make full use of the available CPUs. +ActivitySim framework models use a significant amount of RAM since they store data in-memory to reduce +access time in order to minimize runtime. For example, the example MTC Travel Model One model has 2.7 million +households, 1475 zones, 826 network skims and has been run between two hours and two days depending on the amount of +RAM and number of processors allocated. + +.. note:: + ActivitySim has been run in the cloud, on both Windows and Linux OS using + `Microsoft Azure `__. Example configurations, + Azure scripts, runtimes, and costs are in the ``example_azure`` folder. \ No newline at end of file diff --git a/docs/howitworks.rst b/docs/howitworks.rst index 156c26a27..144ba8e4e 100644 --- a/docs/howitworks.rst +++ b/docs/howitworks.rst @@ -2,7 +2,7 @@ How the System Works ==================== -This page describes describes how the ActivitySim software works and the example data schema. +This page describes how the software works, how multiprocessing works, and the example model data schema. .. _how_the_system_works: @@ -14,15 +14,13 @@ The example model run starts by running ``simulation.py``. Initialization ~~~~~~~~~~~~~~ -The first steps of ``simulation.py`` are: +The first significant step of ``simulation.py`` is: :: - import orca from activitysim import abm -which starts orca, which will now take over running the system and defines the orca/pandas tables and their data -sources but does not load the data. The second statement loads :mod:`activitysim.abm.__init__`, which calls: +which loads :mod:`activitysim.abm.__init__`, which calls: :: @@ -30,207 +28,260 @@ sources but does not load the data. The second statement loads :mod:`activitysi import tables import models -which then loads the misc, tables, and models class definitions. Loading :mod:`activitysim.abm.misc` defines orca injectables -(functions) for the ``settings`` object based on the setting yaml file, the ``store`` based on the HDF5 input -file, and the trace settings. The Python decorator ``@inject.injectable`` overrides the function definition ``store`` -to execute this function whenever ``store`` is called by orca. The ``misc`` class depends on -:mod:`activitysim.core.inject` and :mod:`activitysim.core.pipeline`, which wrap orca and manage the data pipeline. +which then loads the misc, tables, and models class definitions. Loading :mod:`activitysim.abm.misc` calls: :: - @inject.injectable(cache=True) - def store(data_dir, settings): - #... - file = pd.HDFStore(fname, mode='r') - pipeline.close_on_exit(file, fname) - return file + from activitysim.core import config + from activitysim.core import inject + +which loads the config and inject classes. These define `ORCA `__ inspired injectables (functions) and +helper functions for running models. For example, the Python decorator ``@inject.injectable`` overrides the function definition ``settings`` to +execute this function whenever the ``settings`` object is called by the system. The :mod:`activitysim.core.inject` manages the data +pipeline. The inject class does everything ORCA did in previous versions of ActivitySim and so ORCA is no longer a dependency. + +:: + + @inject.injectable(cache=True) + def settings(): + settings_dict = read_settings_file('settings.yaml', mandatory=True) + return settings_dict Next, the tables module executes the following import statements in :mod:`activitysim.abm.tables.__init__` to -define the dynamic orca tables (households, -persons, skims, etc.), but does not load them. It also defines the core dynamic orca injectables (functions) -defined in the classes. The Python decorator ``@inject.table`` override the function definitions so the function name -becomes the table name. Additional implementation specific table fields are defined in annotation preprocessors for -each step, as discussed later. +define the dynamic inject tables (households, persons, skims, etc.), but does not load them. It also defines the +core dynamic injectables (functions) defined in the classes. The Python decorator ``@inject.table`` override the function +definitions so the name of the function becomes the name of the table when dynamically called by the system. :: - import households - import persons + from . import households + from . import persons #etc... #then in households.py @inject.table() - def households(store, households_sample_size, trace_hh_id): + def households(households_sample_size, override_hh_ids, trace_hh_id): -The models module then loads all the sub-models, which are registered as orca model steps with -the ``@inject.step()`` decorator. These steps will eventually be run by the pipeline manager. +The models module then loads all the sub-models, which are registered as model steps with +the ``@inject.step()`` decorator. These steps will eventually be run by the data pipeliner. :: - import initialize - import accessibility - import auto_ownership + from . import accessibility + from . import atwork_subtour_destination + from . import atwork_subtour_frequency #etc... #then in accessibility.py @inject.step() - def compute_accessibility(settings, accessibility_spec, - accessibility_settings, - skim_dict, omx_file, land_use, trace_od): + def compute_accessibility(accessibility, skim_dict, land_use, trace_od): -Back in the main ``simulation.py`` script, the next steps are to load the pipeline manager. +Back in the main ``simulation.py`` script, the next steps are to load the tracing, configuration, setting, and pipeline classe +to get the system management components up and running. :: + from activitysim.core import tracing + from activitysim.core import config + from activitysim.core.config import setting from activitysim.core import pipeline -The next step in the example is to read and run the pipeline. The ``resume_after`` argument is set to None -in order to start the pipeline from the beginning. +The next step in the example is to define the ``run`` method, call it if the script is being run as the program entry point, and handle the +arguments passed in via the command line. :: - - MODELS = setting('models') - - pipeline.run(models=MODELS, resume_after=None) -The :func:`activitysim.core.pipeline.run` method loops through the list of models, calls ``inject.run(model_step)``, -and manages the data pipeline. The first microsimulation model run is school location. The school location -model is broken into three steps: + def run(): + #etc... - * school_location_sample - selects a sample of alternative school locations for the next model step. This selects X locations from the full set of model zones using a simple utility. - * school_location_logsums - starts with the table created above and calculates and adds the mode choice logsum expression for each alternative school location. - * school_location_simulate - starts with the table created above and chooses a final school location, this time with the mode choice logsum included. + if __name__ == '__main__': + run() -School Location Sample -~~~~~~~~~~~~~~~~~~~~~~ -The school location sample model is run via: +.. note:: + For more information on run options, type ``python simulation.py -h`` on the command line + + +The first key thing that happens in the ``run`` function is ``resume_after = setting('resume_after', None)``, which causes the system +to go looking for ``setting``. Earlier we saw that ``setting`` was defined as an injectable and so the system gets this object if it +is already in memory, or if not, calls this function which loads the ``config/settings.yaml`` file. This is called lazy loading or +on-demand loading. Next, the system loads the models list and starts the pipeline: :: - #run model step - inject.run(["school_location_sample"]) - - #define model step - @inject.step() - def school_location_sample(persons_merged, - school_location_sample_spec, - school_location_settings, - skim_dict, - destination_size_terms, - chunk_size, - trace_hh_id): - -The ``school_location_sample`` step requires the objects defined in the function definition -above. Since they are not yet loaded, orca goes looking for them. This is called lazy -loading (or on-demand loading). The steps to get the persons data loaded is illustrated below. -The various calls also setup logging, tracing, and stable random number management. + pipeline.run(models=setting('models'), resume_after=resume_after) + +The :func:`activitysim.core.pipeline.run` method loops through the list of models, calls ``inject.run([step_name])``, +and manages the data pipeline. The first disaggregate data processing step (or model) run is ``initialize_households``, defined in +:mod:`activitysim.abm.models.initialize`. The ``initialize_households`` step is responsible for requesting reading of the raw +households and persons into memory. + +Initialize Households +~~~~~~~~~~~~~~~~~~~~~ + +The initialize households step/model is run via: :: + + @inject.step() + def initialize_households(): - #persons_merged is in the step function signature + trace_label = 'initialize_households' + model_settings = config.read_model_settings('initialize_households.yaml', mandatory=True) + annotate_tables(model_settings, trace_label) + +This step reads the ``initialize_households.yaml`` config file, which defines the :ref:`table_annotation` below. Each table +annotation applies the expressions specified in the annotate spec to the relevant table. For example, the ``persons`` table +is annotated with the results of the expressions in ``annotate_persons.csv``. If the table is not already in memory, then +inject goes looking for it as explained below. + +:: - #persons_merged is defined in persons.py and needs persons - @inject.table() - def persons_merged(persons, households, land_use, accessibility): - return inject.merge_tables(persons.name, tables=[ - persons, households, land_use, accessibility]) - - #persons in persons.py requires store, households_sample_size, households, trace_hh_id - @inject.table() - def persons(store, households_sample_size, households, trace_hh_id): + #initialize_households.yaml + annotate_tables: + - tablename: persons + annotate: + SPEC: annotate_persons + DF: persons + TABLES: + - households + - tablename: households + column_map: + PERSONS: hhsize + workers: num_workers + annotate: + SPEC: annotate_households + DF: households + TABLES: + - persons + - land_use + - tablename: persons + annotate: + SPEC: annotate_persons_after_hh + DF: persons + TABLES: + - households + + #initialize.py + def annotate_tables(model_settings, trace_label): + + annotate_tables = model_settings.get('annotate_tables', []) + + for table_info in annotate_tables: + + tablename = table_info['tablename'] + df = inject.get_table(tablename).to_frame() + + # - annotate + annotate = table_info.get('annotate', None) + if annotate: + logger.info("annotated %s SPEC %s" % (tablename, annotate['SPEC'],)) + expressions.assign_columns( + df=df, + model_settings=annotate, + trace_label=trace_label) + + # - write table to pipeline + pipeline.replace_table(tablename, df) + + +Remember that the ``persons`` table was previously registred as an injectable table when the persons table class was +imported. Now that the ``persons`` table is needed, inject calls this function, which requires the ``households`` and +``trace_hh_id`` objects as well. Since ``households`` has yet to be loaded, the system run the households inject table operation +as well. The various calls also setup logging, tracing, stable random number management, etc. - df = store["persons"] +:: + + #persons in persons.py requires households, trace_hh_id + @inject.table() + def persons(households, trace_hh_id): - if households_sample_size > 0: - # keep all persons in the sampled households - df = df[df.household_id.isin(households.index)] + df = read_raw_persons(households) logger.info("loaded persons %s" % (df.shape,)) + df.index.name = 'person_id' + # replace table function with dataframe inject.add_table('persons', df) - pipeline.get_rn_generator().add_channel(df, 'persons') + pipeline.get_rn_generator().add_channel('persons', df) if trace_hh_id: tracing.register_traceable_table('persons', df) - tracing.trace_df(df, "persons", warn_if_empty=True) + tracing.trace_df(df, "raw.persons", warn_if_empty=True) return df - #households requires store, households_sample_size, trace_hh_id + #households requires households_sample_size, override_hh_ids, trace_hh_id @inject.table() - def households(store, households_sample_size, trace_hh_id): - - df_full = store["households"] - - # if we are tracing hh exclusively - if trace_hh_id and households_sample_size == 1: + def households(households_sample_size, override_hh_ids, trace_hh_id): - # df contains only trace_hh (or empty if not in full store) - df = tracing.slice_ids(df_full, trace_hh_id) - - # if we need sample a subset of full store - elif households_sample_size > 0 and len(df_full.index) > households_sample_size: + df_full = read_input_table("households") + - # take the requested random sample - df = asim.random_rows(df_full, households_sample_size) +The process continues until all the dependencies are resolved. It is the ``read_input_table`` function that +actually reads the input tables from the input HDF5 file. - # if tracing and we missed trace_hh in sample, but it is in full store - if trace_hh_id and trace_hh_id not in df.index and trace_hh_id in df_full.index: - # replace first hh in sample with trace_hh - logger.debug("replacing household %s with %s in household sample" % - (df.index[0], trace_hh_id)) - df_hh = tracing.slice_ids(df_full, trace_hh_id) - df = pd.concat([df_hh, df[1:]]) +:: - else: - df = df_full + #def read_input_table(table_name): + #... + + df = pd.read_hdf(input_store_path, table_name). - logger.info("loaded households %s" % (df.shape,)) +School Location +~~~~~~~~~~~~~~~ - # replace table function with dataframe - inject.add_table('households', df) +Now that the persons, households, and other data are in memory, and also annotated with additional fields +for later calculations, the school location model can be run. The school location model is defined +in :mod:`activitysim.abm.models.location_choice`. As shown below, the school location model +actually uses the ``persons_merged`` table, which includes joined household, land use, and accessibility +tables as well. The school location model also requires the skims dictionary object, which is discussed next. +Before running the generic iterate location choice function, the model reads the model settings file, which +defines various settings, including the expression files, sample size, mode choice logsum +calulcation settings, time periods for skim lookups, shadow pricing settings, etc. - pipeline.get_rn_generator().add_channel(df, 'households') +:: - if trace_hh_id: - tracing.register_traceable_table('households', df) - tracing.trace_df(df, "households", warn_if_empty=True) + #persons.py + # another common merge for persons + @inject.table() + def persons_merged(persons, households, land_use, accessibility): + return inject.merge_tables(persons.name, tables=[persons, households, land_use, accessibility]) - return df - - #etc.... until all the required dependencies are resolved + #location_choice.py + @inject.step() + def school_location( + persons_merged, persons, households, + skim_dict, skim_stack, + chunk_size, trace_hh_id, locutor + ): -``school_location_sample`` also sets the persons merged table as choosers, reads the expressions -specification file, settings yaml file, and destination_size_terms file, and also sets the chunk -size and trace id if specified. The skims dictionary is also passed in, as explained next. + trace_label = 'school_location' + model_settings = config.read_model_settings('school_location.yaml') -:: + iterate_location_choice( + model_settings, + persons_merged, persons, households, + skim_dict, skim_stack, + chunk_size, trace_hh_id, locutor, trace_label - def school_location_sample(persons_merged, - school_location_sample_spec, - school_location_settings, - skim_dict, - destination_size_terms, - chunk_size, - trace_hh_id): -Inside the method, the skim matrix lookups required for this model are configured. The following code -set the keys for looking up the skim values for this model. In this case there is a ``TAZ`` column -in the choosers, which was in the ``households`` table that was joined with ``persons`` to make -``persons_merged`` and a ``TAZ`` in the alternatives generation code which get merged during -interaction as renamed ``TAZ_r``. The skims are lazy loaded under the name "skims" and are -available in the expressions using ``@skims``. +Deep inside the method calls, the skim matrix lookups required for this model are configured. The following code +sets the keys for looking up the skim values for this model. In this case there is a ``TAZ`` column +in the households table that is renamed to `TAZ_chooser`` and a ``TAZ`` in the alternatives generation code. +The skims are lazy loaded under the name "skims" and are available in the expressions using the ``@skims`` expression. :: # create wrapper with keys for this lookup - in this case there is a TAZ in the choosers # and a TAZ in the alternatives which get merged during interaction + # (logit.interaction_dataset suffixes duplicate chooser column with '_chooser') # the skims will be available under the name "skims" for any @ expressions - skims = skim_dict.wrap("TAZ", "TAZ_r") + skims = skim_dict.wrap('TAZ_chooser', 'TAZ') + locals_d = { 'skims': skims } @@ -243,23 +294,24 @@ trace labels are passed in. :: - choices = interaction_sample( - choosers_segment, - alternatives_segment, - sample_size=sample_size, - alt_col_name=alt_col_name, - spec=school_location_sample_spec[[school_type]], - skims=skims, - locals_d=locals_d, - chunk_size=chunk_size, - trace_label=tracing.extend_trace_label(trace_label, school_type)) + #interaction_sample + choices = interaction_sample( + choosers, + alternatives, + sample_size=sample_size, + alt_col_name=alt_dest_col_name, + spec=spec_for_segment(model_spec, segment_name), + skims=skims, + locals_d=locals_d, + chunk_size=chunk_size, + trace_label=trace_label) This function solves the utilities, calculates probabilities, draws random numbers, selects choices with replacement, and returns the choices. This is done in a for loop of chunks of chooser records in order to avoid running out of RAM when building the often large data tables. This method does a lot, and eventually calls :func:`activitysim.core.interaction_simulate.eval_interaction_utilities`, which loops through each expression in the expression file and solves it at once for all records in the chunked chooser -table using either pandas' eval() or Python's eval(). +table using Python's ``eval``. The :func:`activitysim.core.interaction_sample.interaction_sample` method is currently only a multinomial logit choice model. The :func:`activitysim.core.simulate.simple_simulate` method supports both MNL and NL as specified by @@ -279,16 +331,17 @@ and selecting numpy array items with vector indexes returns a vector. Trace dat # reshape utilities (one utility column and one row per row in model_design) # to a dataframe with one row per chooser and one column per alternative utilities = pd.DataFrame( - interaction_utilities.as_matrix().reshape(len(choosers), alternative_count), + interaction_utilities.values.reshape(len(choosers), alternative_count), index=choosers.index) # convert to probabilities (utilities exponentiated and normalized to probs) # probs is same shape as utilities, one row per chooser and one column for alternative - probs = logit.utils_to_probs(utilities, trace_label=trace_label, trace_choosers=choosers) + probs = logit.utils_to_probs(utilities, allow_zero_probs=allow_zero_probs, + trace_label=trace_label, trace_choosers=choosers) choices_df = make_sample_choices( - choosers, probs, interaction_utilities, - sample_size, alternative_count, alt_col_name, trace_label) + choosers, probs, alternatives, sample_size, alternative_count, alt_col_name, + allow_zero_probs=allow_zero_probs, trace_label=trace_label) # pick_count is number of duplicate picks pick_group = choices_df.groupby([choosers.index.name, alt_col_name]) @@ -306,117 +359,134 @@ and selecting numpy array items with vector indexes returns a vector. Trace dat return choices_df -The model creates the ``school_location_sample`` table using the choices above. This table is +The model creates the ``location_sample_df`` table using the choices above. This table is then used for the next model step - solving the logsums for the sample. :: - inject.add_table('school_location_sample', choices) - - -School Location Logsums -~~~~~~~~~~~~~~~~~~~~~~~ - -The school location logsums model is called via: - -:: - - #run model step - inject.run(["school_location_logsums"]) - - #define model step - @inject.step() - def school_location_logsums( - persons_merged, - land_use, - skim_dict, skim_stack, - school_location_sample, - configs_dir, - chunk_size, - trace_hh_id): - -The ``school_location_logsums`` step requires the objects defined in the function definition -above. Some of these are not yet loaded, so orca goes looking for them. The next steps are -similar to what the sampling model does, except this time the sampled locations table is the choosers -and the model is calculating and adding the mode choice logsums using the logsums expression files: + # - location_logsums + location_sample_df = run_location_logsums( + segment_name, + choosers, + skim_dict, skim_stack, + location_sample_df, + model_settings, + chunk_size, + trace_hh_id, + tracing.extend_trace_label(trace_label, 'logsums.%s' % segment_name)) + +The next steps are similar to what the sampling model does, except this time the sampled locations +table is the choosers and the model is calculating and adding the tour mode choice logsums using the +logsums settings and expression files. The resulting logsums are added to the chooser table as the +``mode_choice_logsum`` column. :: - for school_type, school_type_id in SCHOOL_TYPE_ID.iteritems(): - - segment = 'university' if school_type == 'university' else 'school' - logsum_spec = get_segment_and_unstack(omnibus_logsum_spec, segment) - - choosers = location_sample[location_sample['school_type'] == school_type_id] - - choosers = pd.merge( - choosers, - persons_merged, - left_index=True, - right_index=True, - how="left") - - logsums = logsum.compute_logsums( - choosers, logsum_spec, - logsum_settings, school_location_settings, - skim_dict, skim_stack, - chunk_size, trace_hh_id, - tracing.extend_trace_label(trace_label, school_type)) + #inside run_location_logsums() defined in location_choice.py + logsums = logsum.compute_logsums( + choosers, + tour_purpose, + logsum_settings, model_settings, + skim_dict, skim_stack, + chunk_size, trace_hh_id, + trace_label) - inject.add_column("school_location_sample", "mode_choice_logsum", logsums) + location_sample_df['mode_choice_logsum'] = logsums The :func:`activitysim.abm.models.util.logsums.compute_logsums` method goes through a similar series of steps as the interaction_sample function but ends up calling :func:`activitysim.core.simulate.simple_simulate_logsums` since it supports nested logit models, which are required for the mode choice logsum calculation. The :func:`activitysim.core.simulate.simple_simulate_logsums` returns a vector of logsums (instead of a vector -choices). The resulting logsums are added to the ``school_location_sample`` table as the -``mode_choice_logsum`` column. +choices). -School Location Final Choice -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The final school location choice model operates on the ``school_location_sample`` table created +The final school location choice model operates on the ``location_sample_df`` table created above and is called as follows: :: - #run model step - inject.run(["school_location_simulate"]) - - #define model step - @inject.step() - def school_location_simulate(persons_merged, persons, - school_location_sample, - school_location_spec, - school_location_settings, - skim_dict, - land use, size_terms, - chunk_size, - trace_hh_id): - -The ``school_location_simulate`` step requires the objects defined in the function definition -above. The operations executed by this model are very similar to the earlier models, except + # - location_simulate + choices = \ + run_location_simulate( + segment_name, + choosers, + location_sample_df, + skim_dict, + dest_size_terms, + model_settings, + chunk_size, + tracing.extend_trace_label(trace_label, 'simulate.%s' % segment_name)) + + choices_list.append(choices) + +The operations executed by this model are very similar to the earlier models, except this time the sampled locations table is the choosers and the model selects one alternative for each chooser using the school location simulate expression files and the :func:`activitysim.core.interaction_sample_simulate.interaction_sample_simulate` function. -The model adds the choices as a column to the ``persons`` table and adds -additional output columns using a postprocessor table annotation. Refer to :ref:`table_annotation` -for more information and the :func:`activitysim.abm.models.util.expressions.assign_columns` function. +Back in ``iterate_location_choice()``, the model adds the choices as a column to the ``persons`` table and adds +additional output columns using a postprocessor table annotation if specified in the settings file. Refer +to :ref:`table_annotation` for more information and the :func:`activitysim.abm.models.util.expressions.assign_columns` +function. The overall school location model is run within a shadow pricing iterative loop as shown below. Refer +to :ref:`shadow_pricing` for more information. :: - # We only chose school locations for the subset of persons who go to school - # so we backfill the empty choices with -1 to code as no school location - persons['school_taz'] = choices.reindex(persons.index).fillna(-1).astype(int) - expressions.assign_columns( - df=persons, - model_settings=school_location_settings.get('annotate_persons'), - trace_label=tracing.extend_trace_label(trace_label, 'annotate_persons')) + # in iterate_location_choice() in location_choice.py + for iteration in range(1, max_iterations + 1): + + if spc.use_shadow_pricing and iteration > 1: + spc.update_shadow_prices() + + choices = run_location_choice( + persons_merged_df, + skim_dict, skim_stack, + spc, + model_settings, + chunk_size, trace_hh_id, + trace_label=tracing.extend_trace_label(trace_label, 'i%s' % iteration)) + + choices_df = choices.to_frame('dest_choice') + choices_df['segment_id'] = \ + persons_merged_df[chooser_segment_column].reindex(choices_df.index) + + spc.set_choices(choices_df) + + if locutor: + spc.write_trace_files(iteration) + + if spc.use_shadow_pricing and spc.check_fit(iteration): + logging.info("%s converged after iteration %s" % (trace_label, iteration,)) + break + + # - shadow price table + if locutor: + if spc.use_shadow_pricing and 'SHADOW_PRICE_TABLE' in model_settings: + inject.add_table(model_settings['SHADOW_PRICE_TABLE'], spc.shadow_prices) + if 'MODELED_SIZE_TABLE' in model_settings: + inject.add_table(model_settings['MODELED_SIZE_TABLE'], spc.modeled_size) + + dest_choice_column_name = model_settings['DEST_CHOICE_COLUMN_NAME'] + tracing.print_summary(dest_choice_column_name, choices, value_counts=True) + + persons_df = persons.to_frame() - pipeline.replace_table("persons", persons) + # We only chose school locations for the subset of persons who go to school + # so we backfill the empty choices with -1 to code as no school location + NO_DEST_TAZ = -1 + persons_df[dest_choice_column_name] = \ + choices.reindex(persons_df.index).fillna(NO_DEST_TAZ).astype(int) + + # - annotate persons table + if 'annotate_persons' in model_settings: + expressions.assign_columns( + df=persons_df, + model_settings=model_settings.get('annotate_persons'), + trace_label=tracing.extend_trace_label(trace_label, 'annotate_persons')) + + pipeline.replace_table("persons", persons_df) + Finishing Up ~~~~~~~~~~~~ @@ -424,12 +494,12 @@ Finishing Up The last models to be run by the data pipeline are: * ``write_data_dictionary``, which writes the table_name, number of rows, number of columns, and number of bytes for each checkpointed table +* ``track_skim_usage``, which tracks skim data memory usage * ``write_tables``, which writes pipeline tables as csv files as specified by the output_tables setting Back in the main ``simulation.py`` script, the final steps are to: * close the data pipeline (and attached HDF5 file) -* print the elapsed model runtime Additional Notes ---------------- @@ -447,27 +517,22 @@ In addition to calculating the mandatory tour frequency for a person, the model Once the number of tours is known, then the next step is to create tours records for subsequent models. This is done by the :func:`activitysim.abm.models.util.tour_frequency.process_tours` function, which is called by the :func:`activitysim.abm.models.mandatory_tour_frequency.mandatory_tour_frequency` function, which adds the tours to -the ``tours`` table managed in the data pipeline. This is the same basic pattern used for creating all new tables - -tours, trips, etc. +the ``tours`` table managed in the data pipeline. This is the same basic pattern used for creating new tables - tours, trips, etc. :: @inject.step() - def mandatory_tour_frequency(persons, persons_merged, - mandatory_tour_frequency_spec, - mandatory_tour_frequency_settings, - mandatory_tour_frequency_alternatives, - chunk_size, - trace_hh_id): + def mandatory_tour_frequency(persons_merged, chunk_size, trace_hh_id): - mandatory_tours = process_mandatory_tours( - persons=persons[~persons.mandatory_tour_frequency.isnull()], - mandatory_tour_frequency_alts=mandatory_tour_frequency_alternatives - ) + choosers['mandatory_tour_frequency'] = choices + mandatory_tours = process_mandatory_tours( + persons=choosers, + mandatory_tour_frequency_alts=alternatives + ) - tours = pipeline.extend_table("tours", mandatory_tours) + tours = pipeline.extend_table("tours", mandatory_tours) - + Vectorized 3D Skim Indexing ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -530,6 +595,124 @@ to origin zone and write them to the datastore. ) +.. index:: multiprocessing + +.. _multiprocessing: + +Multiprocessing +--------------- + +Most models can be implemented as a series of independent vectorized operations on pandas DataFrames and +numpy arrays. These vectorized operations are much faster than sequential Python because they are +implemented by native code (compiled C) and are to some extent multi-threaded. But the benefits of +numpy multi-processing are limited because they only apply to atomic numpy or pandas calls, and as +soon as control returns to Python it is single-threaded and slow. + +Multi-threading is not an attractive strategy to get around the Python performance problem because +of the limitations imposed by Python's global interpreter lock (GIL). Rather than struggling with +Python multi-threading, ActivitySim uses the +Python `multiprocessing `__ library to parallelize +most models. + +ActivitySim's modular and extensible architecture makes it possible to not hardwire the multiprocessing +architecture. The specification of which models should be run in parallel, how many processers +should be used, and the segmentation of the data between processes are all specified in the +settings config file. + +Mutliprocessing Configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The multiprocess_steps setting below indicate that the simulation should be broken into three steps. + +:: + + models: + ### mp_initialize step + - initialize_landuse + - compute_accessibility + - initialize_households + ### mp_households step + - school_location + - workplace_location + - auto_ownership_simulate + - free_parking + ### mp_summarize step + - write_tables + + multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_households + begin: school_location + num_processes: 2 + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_tables + + +The first multiprocess_step, ``mp_initialize``, begins with the initialize landuse step and is +implicity single-process because there is no 'slice' key indicating how to apportion the tables. +This first step includes all models listed in the 'models' setting up until the first step +in the next multiprocess_steps. + +The second multiprocess_step, ``mp_households``, starts with the school location model and continues +through auto ownership. The 'slice' info indicates that the tables should be sliced by +``households``, and that ``persons`` is a dependent table and so ``persons`` with a ref_col (foreign key +column with the same name as the ``Households`` table index) referencing a household record should be +taken to 'belong' to that household. Similarly, any other table that either share an index +(i.e. having the same name) with either the ``households`` or ``persons`` table, or have a ref_col to +either of their indexes, should also be considered a dependent table. + +The num_processes setting of 2 indicates that the pipeline should be split in two, and half of the +households should be apportioned into each subprocess pipeline, and all dependent tables should +likewise be apportioned accordingly. All other tables (e.g. ``land_use``) that do share an index (name) +or have a ref_col should be considered mirrored and be included in their entirety. + +The primary table is sliced by num_processes-sized strides. (e.g. for num_processes == 2, the +sub-processes get every second record starting at offsets 0 and 1 respectively. All other dependent +tables slices are based (directly or indirectly) on this primary stride segmentation of the primary +table index. + +Two separate sub-process are launched (num_processes == 2) and each passed the name of their +apportioned pipeline file. They execute independently and if they terminate successfully, their +contents are then coalesced into a single pipeline file whose tables should then be essentially +the same as it had been generated by a single process. + +We assume that any new tables that are created by the sub-processes are directly dependent on the +previously primary tables or are mirrored. Thus we can coalesce the sub-process pipelines by +concatenating the primary and dependent tables and simply retaining any copy of the mirrored tables +(since they should all be identical.) + +The third multiprocess_step, ``mp_summarize``, then is handled in single-process mode and runs the +``write_tables`` model, writing the results, but also leaving the tables in the pipeline, with +essentially the same tables and results as if the whole simulation had been run as a single process. + +Shared Data +~~~~~~~~~~~ + +Although multiprocessing subprocesses each have their apportioned pipeline, they also share some +data passed to them by the parent process: + + * read-only shared data such as skim matrices + * read-write shared memory when needed. For example when school and work modeled destinations by zone are compared to target zone sizes (as calculated by the size terms). + +Outputs +~~~~~~~ + +When multiprocessing is run, the following additional outputs are created, which are useful for understanding how multiprocessing works: + + * run_list.txt - which contains the expanded model run list with additional annotation for single and multiprocessed steps + * Log files for each multiprocess step and process, for example ``mp_households_0-activitysim.log`` and ``mp_households_1-activitysim.log`` + * Pipeline file for each multiprocess step and process, for example ``mp_households_0-pipeline.h5`` + * mem.csv - memory used for each step + * breadcrumbs.yaml - multiprocess global info + +See the :ref:`multiprocessing_in_detail` section for more detail. + + .. index:: data tables .. index:: tables .. index:: data schema @@ -542,9 +725,9 @@ the example model. These tables and skims are defined in the :mod:`activitysim. .. index:: constants .. index:: households +.. index:: input store .. index:: land use .. index:: persons -.. index:: random channels .. index:: size terms .. index:: time windows table .. index:: tours @@ -555,19 +738,21 @@ Data Tables The following tables are currently implemented: - * households - household attributes for each household being simulated. Index: ``HHID`` (see ``scripts\data_mover.ipynb``) - * landuse - zonal land use (such as population and employment) attributes. Index: ``TAZ`` (see ``scripts\data_mover.ipynb``) - * persons - person attributes for each person being simulated. Index: ``PERID`` (see ``scripts\data_mover.ipynb``) - * time windows - manages person time windows throughout the simulation. See :ref:`time_windows`. Index: ``PERID`` (see the person_windows table create decorator in ``activitysim.abm.tables.time_windows.py``) - * tours - tour attributes for each tour (mandatory, non-mandatory, joint, and atwork-subtour) being simulated. Index: ``TOURID`` (see ``activitysim.abm.models.util.tour_frequency.py``) - * trips - trip attributes for each trip being simulated. Index: ``TRIPID`` (see ``activitysim.abm.models.stop_frequency.py``) + * households - household attributes for each household being simulated. Index: ``household_id`` (see ``activitysim.abm.tables.households.py``) + * landuse - zonal land use (such as population and employment) attributes. Index: ``TAZ`` (see ``activitysim.abm.tables.landuse.py``) + * persons - person attributes for each person being simulated. Index: ``person_id`` (see ``activitysim.abm.tables.persons.py``) + * time windows - manages person time windows throughout the simulation. See :ref:`time_windows`. Index: ``person_id`` (see the person_windows table create decorator in ``activitysim.abm.tables.time_windows.py``) + * tours - tour attributes for each tour (mandatory, non-mandatory, joint, and atwork-subtour) being simulated. Index: ``tour_id`` (see ``activitysim.abm.models.util.tour_frequency.py``) + * trips - trip attributes for each trip being simulated. Index: ``trip_id`` (see ``activitysim.abm.models.stop_frequency.py``) A few additional tables are also used, which are not really tables, but classes: - * constants - various codes used throughout the model system, such as person type codes - * random channels - random channel management settings + * input store - reads input data tables from the input data store + * constants - various constants used throughout the model system, such as person type codes + * shadow pricing - shadow price calculator and associated utility methods, see :ref:`shadow_pricing` * size terms - created by reading the ``destination_choice_size_terms.csv`` input file. Index - ``segment`` (see ``activitysim.abm.tables.size_terms.py``) * skims - see :ref:`skims` + * table dictionary - stores which tables should be registered as random number generator channels for restartability of the pipeline Data Schema ~~~~~~~~~~~ @@ -576,477 +761,553 @@ The following table lists the pipeline data tables, each final field, the data t number of columns and rows in the table at the time of creation. The ``scripts\make_pipeline_output.py`` script uses the information stored in the pipeline file to create the table below for a small sample of households. -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| Table | Field | DType | Creator |NCol|NRow | -+===================================+===============================+=========+====================================+====+=====+ -| households | TAZ | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | SERIALNO | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | PUMA5 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | income | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hhsize | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | HHT | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | UNITTYPE | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | NOC | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | BLDGSZ | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | TENURE | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | VEHICL | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hinccat1 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hinccat2 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hhagecat | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hsizecat | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hfamily | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hunittype | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hNOCcat | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hwrkrcat | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h0004 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h0511 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h1215 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h1617 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h1824 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h2534 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h3549 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h5064 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h6579 | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | h80up | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_workers | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hwork_f | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hwork_p | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | huniv | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hnwork | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hretire | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hpresch | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hschpred | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hschdriv | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | htypdwel | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hownrent | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hadnwst | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hadwpst | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hadkids | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | bucketBin | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | originalPUMA | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | hmultiunit | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | chunk_id | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | income_in_thousands | float64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | income_segment | int32 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_non_workers | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_drivers | float64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_adults | float64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_children | float64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_young_children | float64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_children_5_to_15 | float64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_children_16_to_17 | float64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_college_age | float64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_young_adults | float64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | non_family | bool | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | family | bool | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | home_is_urban | bool | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | home_is_rural | bool | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | work_tour_auto_time_savings | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | auto_ownership | int64 | initialize | 64 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_under16_not_at_school | int32 | cdap_simulate | 68 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_travel_active | int32 | cdap_simulate | 68 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_travel_active_adults | int32 | cdap_simulate | 68 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_travel_active_children | int32 | cdap_simulate | 68 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | joint_tour_frequency | object | joint_tour_frequency | 70 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| households | num_hh_joint_tours | int8 | joint_tour_frequency | 70 | 100 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | DISTRICT | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | SD | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | county_id | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | TOTHH | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | HHPOP | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | TOTPOP | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | EMPRES | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | SFDU | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | MFDU | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | HHINCQ1 | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | HHINCQ2 | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | HHINCQ3 | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | HHINCQ4 | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | TOTACRE | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | RESACRE | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | CIACRE | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | SHPOP62P | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | TOTEMP | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | AGE0004 | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | AGE0519 | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | AGE2044 | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | AGE4564 | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | AGE65P | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | RETEMPN | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | FPSEMPN | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | HEREMPN | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | OTHEMPN | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | AGREMPN | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | MWTEMPN | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | PRKCST | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | OPRKCST | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | area_type | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | HSENROLL | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | COLLFTE | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | COLLPTE | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | TOPOLOGY | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | TERMINAL | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | ZERO | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | hhlds | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | sftaz | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | gqpop | int64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | household_density | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | employment_density | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | density_index | float64 | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| land_use | county_name | object | initialize | 45 | 25 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 4 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 5 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 6 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 7 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 8 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 9 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 10 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 11 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 12 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 13 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 14 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 15 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 16 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 17 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 18 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 19 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 20 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 21 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 22 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 23 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| person_windows | 24 | int8 | initialize | 21 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | household_id | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | age | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | RELATE | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | ESR | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | GRADE | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | PNUM | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | PAUG | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | DDP | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | sex | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | WEEKS | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | HOURS | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | MSP | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | POVERTY | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | EARNS | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | pagecat | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | pemploy | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | pstudent | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | ptype | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | padkid | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | age_16_to_19 | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | age_16_p | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | adult | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | male | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | female | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_non_worker | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_retiree | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_preschool_kid | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_driving_kid | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_school_kid | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_full_time | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_part_time | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_university | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | student_is_employed | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | nonstudent_to_school | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | is_worker | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | is_student | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | is_gradeschool | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | is_highschool | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | is_university | bool | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | home_taz | int64 | initialize | 40 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | school_taz | int32 | school_location_simulate | 43 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | distance_to_school | float64 | school_location_simulate | 43 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | roundtrip_auto_time_to_school | float64 | school_location_simulate | 43 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | workplace_taz | int32 | workplace_location_simulate | 48 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | distance_to_work | float64 | workplace_location_simulate | 48 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | roundtrip_auto_time_to_work | float64 | workplace_location_simulate | 48 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | workplace_in_cbd | bool | workplace_location_simulate | 48 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | work_taz_area_type | float64 | workplace_location_simulate | 48 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | cdap_activity | object | cdap_simulate | 54 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | cdap_rank | int64 | cdap_simulate | 54 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | travel_active | bool | cdap_simulate | 54 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | under16_not_at_school | bool | cdap_simulate | 54 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_preschool_kid_at_home | bool | cdap_simulate | 54 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | has_school_kid_at_home | bool | cdap_simulate | 54 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | mandatory_tour_frequency | object | mandatory_tour_frequency | 59 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | work_and_school_and_worker | bool | mandatory_tour_frequency | 59 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | work_and_school_and_student | bool | mandatory_tour_frequency | 59 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | num_mand | int8 | mandatory_tour_frequency | 59 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | num_work_tours | int8 | mandatory_tour_frequency | 59 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | non_mandatory_tour_frequency | float64 | non_mandatory_tour_frequency | 64 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | num_non_mand | float64 | non_mandatory_tour_frequency | 64 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | num_escort_tours | float64 | non_mandatory_tour_frequency | 64 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | num_non_escort_tours | float64 | non_mandatory_tour_frequency | 64 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| persons | num_eatout_tours | float64 | non_mandatory_tour_frequency | 64 | 157 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | person_id | int64 | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | tour_type | object | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | tour_type_count | int64 | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | tour_type_num | int64 | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | tour_num | int64 | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | tour_count | int64 | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | tour_category | object | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | number_of_participants | int64 | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | destination | int32 | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | origin | int64 | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | household_id | int64 | mandatory_tour_frequency | 11 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | start | int64 | mandatory_tour_scheduling | 15 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | end | int64 | mandatory_tour_scheduling | 15 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | duration | int64 | mandatory_tour_scheduling | 15 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | tdd | int64 | mandatory_tour_scheduling | 15 | 71 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | composition | object | joint_tour_composition | 16 | 73 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | tour_mode | object | joint_tour_mode_choice | 17 | 183 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | atwork_subtour_frequency | object | atwork_subtour_frequency | 19 | 186 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | parent_tour_id | float64 | atwork_subtour_frequency | 19 | 186 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | stop_frequency | object | stop_frequency | 21 | 186 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| tours | primary_purpose | object | stop_frequency | 21 | 186 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | person_id | int64 | stop_frequency | 7 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | household_id | int64 | stop_frequency | 7 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | tour_id | int64 | stop_frequency | 7 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | primary_purpose | object | stop_frequency | 7 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | trip_num | int64 | stop_frequency | 7 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | outbound | bool | stop_frequency | 7 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | trip_count | int64 | stop_frequency | 7 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | purpose | object | trip_purpose | 8 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | destination | int32 | trip_destination | 11 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | origin | int32 | trip_destination | 11 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | failed | bool | trip_destination | 11 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | depart | int64 | trip_scheduling | 12 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ -| trips | trip_mode | int64 | trip_mode_choice | 13 | 428 | -+-----------------------------------+-------------------------------+---------+------------------------------------+----+-----+ ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| Table | Field | DType | Creator |NCol |NRow | ++============================+===============================+=========+==============================+======+======+ +| accessibility | auPkRetail | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| accessibility | auPkTotal | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| accessibility | auOpRetail | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| accessibility | auOpTotal | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| accessibility | trPkRetail | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| accessibility | trPkTotal | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| accessibility | trOpRetail | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| accessibility | trOpTotal | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| accessibility | nmRetail | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| accessibility | nmTotal | float32 | compute_accessibility | 10 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | TAZ | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | SERIALNO | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | PUMA5 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | income | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hhsize | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | HHT | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | UNITTYPE | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | NOC | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | BLDGSZ | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | TENURE | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | VEHICL | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hinccat1 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hinccat2 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hhagecat | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hsizecat | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hfamily | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hunittype | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hNOCcat | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hwrkrcat | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h0004 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h0511 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h1215 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h1617 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h1824 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h2534 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h3549 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h5064 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h6579 | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | h80up | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_workers | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hwork_f | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hwork_p | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | huniv | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hnwork | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hretire | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hpresch | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hschpred | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hschdriv | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | htypdwel | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hownrent | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hadnwst | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hadwpst | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hadkids | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | bucketBin | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | originalPUMA | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hmultiunit | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | chunk_id | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | income_in_thousands | float64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | income_segment | int32 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | median_value_of_time | float64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hh_value_of_time | float64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_non_workers | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_drivers | int8 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_adults | int8 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_children | int8 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_young_children | int8 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_children_5_to_15 | int8 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_children_16_to_17 | int8 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_college_age | int8 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_young_adults | int8 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | non_family | bool | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | family | bool | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | home_is_urban | bool | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | home_is_rural | bool | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | auto_ownership | int64 | initialize_households | 65 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | hh_work_auto_savings_ratio | float32 | workplace_location | 66 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_under16_not_at_school | int8 | cdap_simulate | 70 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_travel_active | int8 | cdap_simulate | 70 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_travel_active_adults | int8 | cdap_simulate | 70 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_travel_active_children | int8 | cdap_simulate | 70 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | joint_tour_frequency | object | joint_tour_frequency | 72 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| households | num_hh_joint_tours | int8 | joint_tour_frequency | 72 | 100 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| joint_tour_participants | tour_id | int64 | joint_tour_participation | 4 | 13 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| joint_tour_participants | household_id | int64 | joint_tour_participation | 4 | 13 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| joint_tour_participants | person_id | int64 | joint_tour_participation | 4 | 13 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| joint_tour_participants | participant_num | int64 | joint_tour_participation | 4 | 13 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | DISTRICT | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | SD | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | county_id | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | TOTHH | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | HHPOP | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | TOTPOP | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | EMPRES | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | SFDU | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | MFDU | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | HHINCQ1 | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | HHINCQ2 | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | HHINCQ3 | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | HHINCQ4 | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | TOTACRE | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | RESACRE | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | CIACRE | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | SHPOP62P | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | TOTEMP | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | AGE0004 | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | AGE0519 | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | AGE2044 | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | AGE4564 | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | AGE65P | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | RETEMPN | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | FPSEMPN | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | HEREMPN | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | OTHEMPN | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | AGREMPN | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | MWTEMPN | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | PRKCST | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | OPRKCST | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | area_type | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | HSENROLL | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | COLLFTE | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | COLLPTE | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | TOPOLOGY | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | TERMINAL | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | ZERO | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | hhlds | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | sftaz | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | gqpop | int64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | household_density | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | employment_density | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| land_use | density_index | float64 | initialize_landuse | 44 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 4 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 5 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 6 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 7 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 8 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 9 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 10 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 11 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 12 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 13 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 14 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 15 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 16 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 17 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 18 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 19 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 20 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 21 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 22 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 23 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| person_windows | 24 | int8 | initialize_households | 21 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | household_id | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | age | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | RELATE | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | ESR | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | GRADE | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | PNUM | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | PAUG | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | DDP | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | sex | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | WEEKS | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | HOURS | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | MSP | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | POVERTY | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | EARNS | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | pagecat | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | pemploy | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | pstudent | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | ptype | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | padkid | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | age_16_to_19 | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | age_16_p | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | adult | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | male | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | female | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_non_worker | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_retiree | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_preschool_kid | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_driving_kid | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_school_kid | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_full_time | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_part_time | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_university | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | student_is_employed | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | nonstudent_to_school | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | is_student | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | is_gradeschool | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | is_highschool | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | is_university | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | school_segment | int8 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | is_worker | bool | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | home_taz | int64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | value_of_time | float64 | initialize_households | 42 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | school_taz | int32 | school_location | 45 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | distance_to_school | float32 | school_location | 45 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | roundtrip_auto_time_to_school | float32 | school_location | 45 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | workplace_taz | int32 | workplace_location | 52 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | distance_to_work | float32 | workplace_location | 52 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | workplace_in_cbd | bool | workplace_location | 52 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | work_taz_area_type | float64 | workplace_location | 52 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | roundtrip_auto_time_to_work | float32 | workplace_location | 52 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | work_auto_savings | float32 | workplace_location | 52 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | work_auto_savings_ratio | float32 | workplace_location | 52 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | free_parking_at_work | bool | free_parking | 53 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | cdap_activity | object | cdap_simulate | 59 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | cdap_rank | int64 | cdap_simulate | 59 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | travel_active | bool | cdap_simulate | 59 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | under16_not_at_school | bool | cdap_simulate | 59 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_preschool_kid_at_home | bool | cdap_simulate | 59 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | has_school_kid_at_home | bool | cdap_simulate | 59 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | mandatory_tour_frequency | object | mandatory_tour_frequency | 64 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | work_and_school_and_worker | bool | mandatory_tour_frequency | 64 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | work_and_school_and_student | bool | mandatory_tour_frequency | 64 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_mand | int8 | mandatory_tour_frequency | 64 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_work_tours | int8 | mandatory_tour_frequency | 64 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_joint_tours | int8 | joint_tour_participation | 65 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | non_mandatory_tour_frequency | int8 | non_mandatory_tour_frequency | 73 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_non_mand | int8 | non_mandatory_tour_frequency | 73 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_escort_tours | int8 | non_mandatory_tour_frequency | 73 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_eatout_tours | int8 | non_mandatory_tour_frequency | 73 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_shop_tours | int8 | non_mandatory_tour_frequency | 73 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_maint_tours | int8 | non_mandatory_tour_frequency | 73 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_social_tours | int8 | non_mandatory_tour_frequency | 73 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| persons | num_non_escort_tours | int8 | non_mandatory_tour_frequency | 73 | 271 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| school_destination_size | gradeschool | float64 | initialize_households | 3 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| school_destination_size | highschool | float64 | initialize_households | 3 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| school_destination_size | university | float64 | initialize_households | 3 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| school_modeled_size | gradeschool | int32 | school_location | 3 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| school_modeled_size | highschool | int32 | school_location | 3 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| school_modeled_size | university | int32 | school_location | 3 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | person_id | int64 | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | tour_type | object | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | tour_type_count | int64 | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | tour_type_num | int64 | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | tour_num | int64 | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | tour_count | int64 | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | tour_category | object | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | number_of_participants | int64 | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | destination | int32 | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | origin | int64 | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | household_id | int64 | mandatory_tour_frequency | 11 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | start | int8 | mandatory_tour_scheduling | 15 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | end | int8 | mandatory_tour_scheduling | 15 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | duration | int8 | mandatory_tour_scheduling | 15 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | tdd | int64 | mandatory_tour_scheduling | 15 | 153 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | composition | object | joint_tour_composition | 16 | 159 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | tour_mode | object | tour_mode_choice_simulate | 17 | 319 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | atwork_subtour_frequency | object | atwork_subtour_frequency | 19 | 344 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | parent_tour_id | float64 | atwork_subtour_frequency | 19 | 344 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | stop_frequency | object | stop_frequency | 21 | 344 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| tours | primary_purpose | object | stop_frequency | 21 | 344 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | person_id | int64 | stop_frequency | 7 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | household_id | int64 | stop_frequency | 7 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | tour_id | int64 | stop_frequency | 7 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | primary_purpose | object | stop_frequency | 7 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | trip_num | int64 | stop_frequency | 7 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | outbound | bool | stop_frequency | 7 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | trip_count | int64 | stop_frequency | 7 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | purpose | object | trip_purpose | 8 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | destination | int32 | trip_destination | 11 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | origin | int32 | trip_destination | 11 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | failed | bool | trip_destination | 11 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | depart | float64 | trip_scheduling | 11 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| trips | trip_mode | object | trip_mode_choice | 12 | 859 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| workplace_destination_size | work_high | float64 | initialize_households | 4 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| workplace_destination_size | work_low | float64 | initialize_households | 4 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| workplace_destination_size | work_med | float64 | initialize_households | 4 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| workplace_destination_size | work_veryhigh | float64 | initialize_households | 4 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| workplace_modeled_size | work_high | int32 | workplace_location | 4 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| workplace_modeled_size | work_low | int32 | workplace_location | 4 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| workplace_modeled_size | work_med | int32 | workplace_location | 4 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ +| workplace_modeled_size | work_veryhigh | int32 | workplace_location | 4 | 1454 | ++----------------------------+-------------------------------+---------+------------------------------+------+------+ .. index:: skims .. index:: omx_file diff --git a/docs/models.rst b/docs/models.rst index dd6b00e1f..b4fce9dd9 100644 --- a/docs/models.rst +++ b/docs/models.rst @@ -8,19 +8,21 @@ Models The currently implemented example ActivitySim AB models are described below. See the example model :ref:`sub-model-spec-files` for more information. -.. _initialize: +.. _initialize_landuse: +.. _initialize_households: Initialize ---------- -The initialize model isn't really a model, but a step in the data pipeline. This step pre-loads the land_use, -households, persons, and person_windows tables because random seeds are set differently for each step -and therefore the sampling of households depends on which step they are initially loaded in. So, we -load them explicitly up front. - -The main interface to the initialize model is the :py:func:`~activitysim.abm.models.initialize.initialize` -function. This function is registered as an orca step in the example Pipeline. +The initialize model isn't really a model, but rather a few data processing steps in the data pipeline. +The initialize data processing steps code variables used in downstream models, such as household and person +value-of-time. This step also pre-loads the land_use, households, persons, and person_windows tables because +random seeds are set differently for each step and therefore the sampling of households depends on which step +they are initially loaded in. +The main interface to the initialize land use step is the :py:func:`~activitysim.abm.models.initialize.initialize_landuse` +function. The main interface to the initialize household step is the :py:func:`~activitysim.abm.models.initialize.initialize_households` +function. These functions are registered as orca steps in the example Pipeline. .. automodule:: activitysim.abm.models.initialize :members: @@ -73,12 +75,13 @@ Core Table: ``skims`` | Result Table: ``accessibility`` | Skims Keys: ``O-D, D-O :members: .. _school_location: +.. _work_location: School Location --------------- The usual school location choice models assign a usual school location for the primary -mandatory activity of each school-aged child and university student in the +mandatory activity of each child and university student in the synthetic population. The models are composed of a set of accessibility-based parameters (including one-way distance between home and primary destination and the tour mode choice logsum - the expected maximum utility in the mode choice model which is given by the @@ -86,27 +89,21 @@ logarithm of the sum of exponentials in the denominator of the logit formula) an which describe the quantity of grade-school or university opportunities in each possible destination. -The school location model is made up of three model steps: - * school_location_sample - selects a sample of alternative school locations for the next model step. This selects X locations from the full set of model zones using a simple utility. - * school_location_logsums - starts with the table created above and calculates and adds the mode choice logsum expression for each alternative school location. - * school_location_simulate - starts with the table created above and chooses a final school location, this time with the mode choice logsum included. - -The interfaces to the model steps are -:py:func:`~activitysim.abm.models.school_location.school_location_sample`, -:py:func:`~activitysim.abm.models.school_location.school_location_logsums`, -:py:func:`~activitysim.abm.models.school_location.school_location_simulate`. -These functions are registered as orca steps in the example Pipeline. - -Core Table: ``persons`` | Result Field: ``school_taz`` | Skims Keys: ``TAZ, TAZ_r`` +The school location model is made up of four steps: + * sampling - selects a sample of alternative school locations for the next model step. This selects X locations from the full set of model zones using a simple utility. + * logsums - starts with the table created above and calculates and adds the mode choice logsum expression for each alternative school location. + * simulate - starts with the table created above and chooses a final school location, this time with the mode choice logsum included. + * shadow prices - compare modeled zonal destinations to target zonal size terms and calculate updated shadow prices. + +These steps are repeated until shadow pricing convergence criteria are satisfied or a max number of iterations is reached. See :ref:`shadow_pricing`. +The main interfaces to the model is the :py:func:`~activitysim.abm.models.location_choice.school_location` function. +This function is registered as an orca step in the example Pipeline. -.. automodule:: activitysim.abm.models.school_location - :members: +Core Table: ``persons`` | Result Field: ``school_taz`` | Skims Keys: ``TAZ, alt_dest, AM time period, MD time period`` -.. _work_location: - -Workplace Location ------------------- +Work Location +------------- The usual work location choice models assign a usual work location for the primary mandatory activity of each employed person in the @@ -116,21 +113,33 @@ logsum - the expected maximum utility in the mode choice model which is given by logarithm of the sum of exponentials in the denominator of the logit formula) and size terms, which describe the quantity of work opportunities in each possible destination. -The work location model is made up of three model steps: - * workplace_location_sample - selects a sample of alternative work locations for the next model step. This selects X locations from the full set of model zones using a simple utility. - * workplace_location_logsums - starts with the table created above and calculates and adds the mode choice logsum expression for each alternative work location. - * workplace_location_simulate - starts with the table created above and chooses a final work location, this time with the mode choice logsum included. +The work location model is made up of four steps: + * sample - selects a sample of alternative work locations for the next model step. This selects X locations from the full set of model zones using a simple utility. + * logsums - starts with the table created above and calculates and adds the mode choice logsum expression for each alternative work location. + * simulate - starts with the table created above and chooses a final work location, this time with the mode choice logsum included. + * shadow prices - compare modeled zonal destinations to target zonal size terms and calculate updated shadow prices. -The interfaces to the model steps are -:py:func:`~activitysim.abm.models.workplace_location.workplace_location_sample`, -:py:func:`~activitysim.abm.models.workplace_location.workplace_location_logsums`, -:py:func:`~activitysim.abm.models.workplace_location.workplace_location_simulate`. -These functions are registered as orca steps in the example Pipeline. +These steps are repeated until shadow pricing convergence criteria are satisfied or a max number of iterations is reached. See :ref:`shadow_pricing`. + +The main interfaces to the model is the :py:func:`~activitysim.abm.models.location_choice.workplace_location` function. +This function is registered as an orca step in the example Pipeline. -Core Table: ``persons`` | Result Field: ``workplace_taz`` | Skims Keys: ``TAZ, TAZ_r`` +Core Table: ``persons`` | Result Field: ``workplace_taz`` | Skims Keys: ``TAZ, alt_dest, AM time period, PM time period`` -.. automodule:: activitysim.abm.models.workplace_location +.. automodule:: activitysim.abm.models.location_choice + :members: + +.. index:: shadow pricing + +.. _shadow_pricing: + +Shadow Pricing +-------------- + +The shadow pricing calculator used by work and school location choice. + +.. automodule:: activitysim.abm.tables.shadow_pricing :members: .. _auto_ownership: @@ -156,17 +165,19 @@ Core Table: ``households`` | Result Field: ``auto_ownership`` | Skims Keys: NA Free Parking Eligibility ------------------------ -**NOT YET IMPLEMENTED** - The Free Parking Eligibility model predicts the availability of free parking at a person's -workplace for people who work in zones that have parking charges, which are generally located -in the Central Business Districts. The purpose of the model is to adequately reflect the cost -of driving to work in subsequent models, particularly in mode choice. +workplace. It is applied for people who work in zones that have parking charges, which are +generally located in the Central Business Districts. The purpose of the model is to adequately +reflect the cost of driving to work in subsequent models, particularly in mode choice. The main interface to the free parking eligibility model is the -XXXXX function. This function is registered as an orca step in the example Pipeline. +:py:func:`~activitysim.abm.models.free_parking.free_parking` function. This function is registered +as an orca step in the example Pipeline. -Core Table: ``persons`` | Result Field: ``XXXXX`` | Skims Keys: NA +Core Table: ``persons`` | Result Field: ``free_parking_at_work`` | Skims Keys: NA + +.. automodule:: activitysim.abm.models.free_parking + :members: .. _cdap: @@ -184,7 +195,7 @@ follows: The CDAP model is a sequence of vectorized table operations: -* create a person level table and rank each person in the household for inclusion in the CDAP model +* create a person level table and rank each person in the household for inclusion in the CDAP model. Priority is given to full time workers (up to two), then to part time workers (up to two workers, of any type), then to children (youngest to oldest, up to three). Additional members up to five are randomly included for the CDAP calculation. * solve individual M/N/H utilities for each person * take as input an interaction coefficients table and then programatically produce and write out the expression files for households size 1, 2, 3, 4, and 5 models independent of one another * select households of size 1, join all required person attributes, and then read and solve the automatically generated expressions @@ -239,7 +250,7 @@ The main interface to the mandatory tour purpose scheduling model is the :py:func:`~activitysim.abm.models.mandatory_scheduling.mandatory_tour_scheduling` function. This function is registered as an orca step in the example Pipeline. -Core Table: ``tours`` | Result Field: ``start,end,duration`` | Skims Keys: NA +Core Table: ``tours`` | Result Field: ``start, end, duration`` | Skims Keys: ``TAZ, workplace_taz, school_taz, start, end`` .. automodule:: activitysim.abm.models.mandatory_scheduling @@ -339,17 +350,14 @@ based on spatial, temporal, and modal characteristics of the inbound and outboun the primary destination. The joint tour destination choice model is made up of three model steps: - * joint_tour_destination_sample - selects a sample of alternative locations for the next model step. This selects X locations from the full set of model zones using a simple utility. - * joint_tour_destination_logsums - starts with the table created above and calculates and adds the mode choice logsum expression for each alternative location. - * joint_tour_destination_simulate - starts with the table created above and chooses a final location, this time with the mode choice logsum included. + * sample - selects a sample of alternative locations for the next model step. This selects X locations from the full set of model zones using a simple utility. + * logsums - starts with the table created above and calculates and adds the mode choice logsum expression for each alternative location. + * simulate - starts with the table created above and chooses a final location, this time with the mode choice logsum included. -The interfaces to the model steps are -:py:func:`~activitysim.abm.models.joint_tour_destination.joint_tour_destination_sample`, -:py:func:`~activitysim.abm.models.joint_tour_destination.joint_tour_destination_logsums`, -:py:func:`~activitysim.abm.models.joint_tour_destination.joint_tour_destination_simulate`. -These functions are registered as orca steps in the example Pipeline. +The main interface to the model is the :py:func:`~activitysim.abm.models.joint_tour_destination.joint_tour_destination` +function. This function is registered as an orca step in the example Pipeline. -Core Table: ``tours`` | Result Fields: ``destination`` | Skims Keys: ``TAZ, TAZ_r`` +Core Table: ``tours`` | Result Fields: ``destination`` | Skims Keys: ``TAZ, alt_dest, MD time period`` .. automodule:: activitysim.abm.models.joint_tour_destination @@ -365,12 +373,13 @@ period as well) for each joint tour. This model uses person :ref:`time_windows` models are accessibility-based parameters such as the auto travel time for the departure/arrival hour combination, demographics, and time pattern characteristics such as the time windows available from previously scheduled tours. +The joint tour scheduling model does not use mode choice logsums. The main interface to the joint tour purpose scheduling model is the :py:func:`~activitysim.abm.models.joint_tour_scheduling.joint_tour_scheduling` function. This function is registered as an orca step in the example Pipeline. -Core Table: ``tours`` | Result Field: ``start,end,duration`` | Skims Keys: NA +Core Table: ``tours`` | Result Field: ``start, end, duration`` | Skims Keys: `` TAZ, destination, MD time period, MD time period`` .. automodule:: activitysim.abm.models.joint_tour_scheduling @@ -387,7 +396,7 @@ It also adds non-mandatory tours to the tours in the data pipeline. The individu operates in two stages: * A choice is made using a random utility model between combinations of tours containing zero, one, and two or more escort tours, and between zero and one or more tours of each other purpose. - * Up to two additional tours of each purpose are added according to fixed extension probabilities. The extension probabilities are **NOT YET IMPLEMENTED** + * Up to two additional tours of each purpose are added according to fixed extension probabilities. The main interface to the non-mandatory tour purpose frequency model is the :py:func:`~activitysim.abm.models.non_mandatory_tour_frequency.non_mandatory_tour_frequency` @@ -406,13 +415,13 @@ Non-Mandatory Tour Destination Choice The non-mandatory tour destination choice model chooses a destination zone for non-mandatory tours. The three step (sample, logsums, final choice) process also used for -mandatory tour destination choice is **NOT YET IMPLEMENTED** for non-mandatory tour destination choice. +mandatory tour destination choice is used for non-mandatory tour destination choice. The main interface to the non-mandatory tour destination choice model is the -:py:func:`~activitysim.abm.models.non_mandatory_destination.non_mandatory_tour_destination_choice` +:py:func:`~activitysim.abm.models.non_mandatory_destination.non_mandatory_tour_destination` function. This function is registered as an orca step in the example Pipeline. -Core Table: ``tours`` | Result Field: ``destination`` | Skims Keys: ``TAZ, TAZ_r`` +Core Table: ``tours`` | Result Field: ``destination`` | Skims Keys: ``TAZ, alt_dest, MD time period, MD time period`` .. automodule:: activitysim.abm.models.non_mandatory_destination @@ -425,13 +434,14 @@ Non-Mandatory Tour Scheduling ----------------------------- The non-mandatory tour scheduling model selects a tour departure and duration period (and therefore a start and end -period as well) for each non-mandatory tour. This model uses person :ref:`time_windows`. +period as well) for each non-mandatory tour. This model uses person :ref:`time_windows`. +The non-mandatory tour scheduling model does not use mode choice logsums. The main interface to the non-mandatory tour purpose scheduling model is the :py:func:`~activitysim.abm.models.non_mandatory_scheduling.non_mandatory_tour_scheduling` function. This function is registered as an orca step in the example Pipeline. -Core Table: ``tours`` | Result Field: ``start,end,duration`` | Skims Keys: NA +Core Table: ``tours`` | Result Field: ``start, end, duration`` | Skims Keys: ``TAZ, destination, MD time period, MD time period`` .. automodule:: activitysim.abm.models.non_mandatory_scheduling @@ -443,20 +453,20 @@ Core Table: ``tours`` | Result Field: ``start,end,duration`` | Skims Keys: NA Tour Mode Choice ---------------- -The mandatory, individual non-mandatory, at-work, and joint tour mode choice model assigns to each tour the "primary" mode that +The mandatory, non-mandatory, and joint tour mode choice model assigns to each tour the "primary" mode that is used to get from the origin to the primary destination. The tour-based modeling approach requires a reconsideration of the conventional mode choice structure. Instead of a single mode choice model used in a fourstep structure, there are two different levels where the mode choice decision is modeled: (a) the tour mode level (upper-level choice); and, (b) the trip mode level (lower-level choice conditional upon the upper-level choice). -The mandatory, individual non-mandatory, at-work, and joint tour mode level represents the decisions that apply to the entire tour, and +The mandatory, non-mandatory, and joint tour mode level represents the decisions that apply to the entire tour, and that will affect the alternatives available for each individual trip or joint trip. These decisions include the choice to use a private car versus using public transit, walking, or biking; whether carpooling will be considered; and whether transit will be accessed by car or by foot. Trip-level decisions correspond to details of the exact mode used for each trip, which may or may not change over the trips in the tour. -The mandatory, individual non-mandatory, at-work, and joint tour mode choice structure is a nested logit model which separates +The mandatory, non-mandatory, and joint tour mode choice structure is a nested logit model which separates similar modes into different nests to more accurately model the cross-elasticities between the alternatives. The eighteen modes are incorporated into the nesting structure specified in the model settings file. The first level of nesting represents the use a private car, non-motorized @@ -469,14 +479,11 @@ from the automobile in-vehicle time coefficient and the persons' modeled value o characteristics of the destination zone, demographics, and the household's level of auto ownership. -The main interface to the mandatory, individual non-mandatory, at-work, and joint tour tour mode model is the +The main interface to the mandatory, non-mandatory, and joint tour tour mode model is the :py:func:`~activitysim.abm.models.tour_mode_choice.tour_mode_choice_simulate` function. This function is called in the orca step ``tour_mode_choice_simulate`` and is registered as an orca step in the example Pipeline. -Core Table: ``tours`` | Result Field: ``mode`` | Skims od_skims Keys: ``TAZ, destination`` | -SkimStackWrapper odt_skims Keys: ``TAZ, destination, in_period`` | SkimStackWrapper dot_skims Keys: -``destination, TAZ, out_period`` - +Core Table: ``tours`` | Result Field: ``mode`` | Skims Keys: ``TAZ, destination, start, end`` .. automodule:: activitysim.abm.models.tour_mode_choice :members: @@ -516,22 +523,19 @@ At-work Subtours Destination Choice The at-work subtours destination choice model is made up of three model steps: - * atwork_subtour_destination_sample - selects a sample of alternative locations for the next model step. This selects X locations from the full set of model zones using a simple utility. - * atwork_subtour_destination_logsums - starts with the table created above and calculates and adds the mode choice logsum expression for each alternative location. - * atwork_subtour_destination_simulate - starts with the table created above and chooses a final location, this time with the mode choice logsum included. + * sample - selects a sample of alternative locations for the next model step. This selects X locations from the full set of model zones using a simple utility. + * logsums - starts with the table created above and calculates and adds the mode choice logsum expression for each alternative location. + * simulate - starts with the table created above and chooses a final location, this time with the mode choice logsum included. -Core Table: ``tours`` | Result Table: ``destination`` | Skims Keys: ``workplace_taz, alt zone, MD time period`` +Core Table: ``tours`` | Result Table: ``destination`` | Skims Keys: ``workplace_taz, alt_dest, MD time period`` -The interfaces to the models are: - * :py:func:`~activitysim.abm.models.atwork_subtour_destination.atwork_subtour_destination_sample` - * :py:func:`~activitysim.abm.models.atwork_subtour_destination.atwork_subtour_destination_logsums` - * :py:func:`~activitysim.abm.models.atwork_subtour_destination.atwork_subtour_destination_simulate` - -These functions are registered as orca steps in the example Pipeline. +The main interface to the at-work subtour destination model is the +:py:func:`~activitysim.abm.models.atwork_subtour_destination.atwork_subtour_destination` +function. This function is registered as an orca step in the example Pipeline. .. automodule:: activitysim.abm.models.atwork_subtour_destination :members: - + .. _atwork_subtour_scheduling: At-work Subtour Scheduling @@ -541,9 +545,9 @@ The at-work subtours scheduling model selects a tour departure and duration peri period as well) for each at-work subtour. This model uses person :ref:`time_windows`. This model is the same as the mandatory tour scheduling model except it operates on the at-work tours and -constrains the alternative set to available person :ref:`time_windows`. Unlike the other departure time and duration models, -the at-work subtour model does not require mode choice logsums. The at-work subtour frequency model can choose multiple -tours so this model must process all first tours and then second tours since isFirstAtWorkTour is an explanatory variable. +constrains the alternative set to available person :ref:`time_windows`. The at-work subtour scheduling model does not use mode choice logsums. +The at-work subtour frequency model can choose multiple tours so this model must process all first tours and then second +tours since isFirstAtWorkTour is an explanatory variable. Choosers: at-work tours Alternatives: alternative departure time and arrival back at origin time pairs WITHIN the work tour departure time and arrival time back at origin AND the person time window. If no time window is available for the tour, make the first and last time periods within the work tour available, make the choice, and log the number of times this occurs. @@ -554,8 +558,7 @@ The main interface to the at-work subtours scheduling model is the :py:func:`~activitysim.abm.models.atwork_subtour_scheduling.atwork_subtour_scheduling` function. This function is registered as an orca step in the example Pipeline. -Core Table: ``tours`` | Result Field: ``start,end,duration`` | Skims Keys: **NOT YEY IMPLEMENTED** - +Core Table: ``tours`` | Result Field: ``start, end, duration`` | Skims Keys: ``workplace_taz, alt_dest, MD time period, MD time period`` .. automodule:: activitysim.abm.models.atwork_subtour_scheduling :members: @@ -573,10 +576,7 @@ The main interface to the at-work subtour mode choice model is the function. This function is called in the orca step ``atwork_subtour_mode_choice`` and is registered as an orca step in the example Pipeline. -Core Table: ``tour`` | Result Field: ``tour_mode`` | Skims od_skims Keys: ``workplace_taz,destination`` | -SkimStackWrapper odt_skims Keys: ``workplace_taz,destination,out_period`` | -SkimStackWrapper dot_skims Keys: ``destination,workplace_taz,in_period`` - +Core Table: ``tour`` | Result Field: ``tour_mode`` | Skims Keys: ``workplace_taz, destination, start, end`` .. automodule:: activitysim.abm.models.atwork_subtour_mode_choice :members: @@ -672,7 +672,7 @@ The main interface to the trip destination choice model is the :py:func:`~activitysim.abm.models.trip_destination.trip_destination` function. This function is registered as an orca step in the example Pipeline. -Core Table: ``trips`` | Result Field: ``destination`` | Skims Keys: NA +Core Table: ``trips`` | Result Field: ``(trip) destination`` | Skims Keys: ``origin, (tour primary) destination, dest_taz, trip_period`` .. note:: Trip purpose and trip destination choice can be run iteratively together via :ref:`trip_purpose_and_destination`. @@ -693,7 +693,7 @@ The main interface to the trip purpose model is the :py:func:`~activitysim.abm.models.trip_purpose_and_destination.trip_purpose_and_destination` function. This function is registered as an orca step in the example Pipeline. -Core Table: ``trips`` | Result Field: ``purpose,destination`` | Skims Keys: NA +Core Table: ``trips`` | Result Field: ``purpose, destination`` | Skims Keys: ``origin, (tour primary) destination, dest_taz, trip_period`` .. automodule:: activitysim.abm.models.trip_purpose_and_destination :members: @@ -717,6 +717,7 @@ the time period selected for an earlier trip in a half-tour makes selection of a period impossible (or very low probability). Thus, the sampling is re-run until a feasible set of trip time periods is found. If a trip can't be scheduled after the max iterations, then the trip is assigned the previous trip's choice (i.e. assumed to happen right after the previous trip) or dropped, as configured by the user. +The trip scheduling model does not use mode choice logsums. Alternatives: Available time periods in the tour window (i.e. tour start and end period). When processing stops on work tours, the available time periods is constrained by the at-work subtour start and end period as well. @@ -752,8 +753,7 @@ variables, and alternative-specific constants segmented by tour mode. The main interface to the trip mode choice model is the :py:func:`~activitysim.abm.models.trip_mode_choice.trip_mode_choice` function. This function is registered as an orca step in the example Pipeline. -Core Table: ``trips`` | Result Field: ``trip_mode`` | Skims od_skims Keys: ``origin,destination`` | -SkimStackWrapper odt_skims Keys: ``origin,destination,trip_period`` +Core Table: ``trips`` | Result Field: ``trip_mode`` | Skims Keys: ``origin, destination, trip_period`` .. automodule:: activitysim.abm.models.trip_mode_choice :members: @@ -780,7 +780,7 @@ not park in the destination zone. The main interface to the CBD parking model is the XXXXX function. This function is registered as an orca step in the example Pipeline. -Core Table: ``trips`` | Result Field: ``XXXXX`` | Skims Keys: NA +Core Table: ``trips`` | Result Field: ``XXXXX`` | Skims Keys: ``XXXXX`` .. _utility_steps: @@ -805,7 +805,7 @@ Expressions The expressions class is often used for pre- and post-processor table annotation, which read a CSV file of expression, calculate a number of additional table fields, and join the fields to the target table. An example table annotation expressions file is found in the example configuration files for households for the CDAP model - -`annotate_households_cdap.csv `__. +`annotate_households_cdap.csv `__. .. automodule:: activitysim.abm.models.util.expressions :members: @@ -846,8 +846,8 @@ Trip .. automodule:: activitysim.abm.models.util.trip :members: -Tour Scheduling -~~~~~~~~~~~~~~~ +Vectorize Tour Scheduling +~~~~~~~~~~~~~~~~~~~~~~~~~ .. automodule:: activitysim.abm.models.util.vectorize_tour_scheduling :members: diff --git a/example/README.MD b/example/README.MD new file mode 100644 index 000000000..0181e8e67 --- /dev/null +++ b/example/README.MD @@ -0,0 +1,4 @@ + +### Example + +The primary ActivitySim example model. See https://activitysim.github.io/activitysim for more information. diff --git a/example/configs/accessibility.csv b/example/configs/accessibility.csv index 027e5d7a4..920c081b2 100644 --- a/example/configs/accessibility.csv +++ b/example/configs/accessibility.csv @@ -43,6 +43,8 @@ d-o off-peak transit ivt,_inVehicleTime,"skim_do[('WLK_TRN_WLK_IVT', 'MD')]" d-o off-peak transit ovt,_outOfVehicleTime,"skim_do[('WLK_TRN_WLK_IWAIT', 'MD')] + skim_do[('WLK_TRN_WLK_XWAIT', 'MD')] + skim_do[('WLK_TRN_WLK_WACC', 'MD')] + skim_do[('WLK_TRN_WLK_WAUX', 'MD')] + skim_do[('WLK_TRN_WLK_WEGR', 'MD')]" d-o off-peak transit time,_trOpTime_do,(_inVehicleTime + out_of_vehicle_time_weight * _outOfVehicleTime) / 100.0 peak transit time,_trOpTime,_trOpTime_od + _trOpTime_do +# FIXME - _rt_available calculation appears to be wrong in mtctm1 accessibility.job +#round trip path is available,_rt_available,(_trOpTime > 0) round trip path is available,_rt_available,(_trOpTime_od > 0) & (_trOpTime_do > 0) decay function,_decay,_rt_available * exp(_trOpTime * dispersion_parameter_transit) transit off-peak retail,trOpRetail,df.RETEMPN * _decay diff --git a/example/configs/annotate_households.csv b/example/configs/annotate_households.csv index 6d64cb5e8..70109602c 100644 --- a/example/configs/annotate_households.csv +++ b/example/configs/annotate_households.csv @@ -1,30 +1,34 @@ -Description,Target,Expression -#,, annotate households table after import -,_PERSON_COUNT,"lambda query, persons, households: persons.query(query).groupby('household_id').size().reindex(households.index).fillna(0)" +Description,Target,Expression, +#,, annotate households table after import, +,_PERSON_COUNT,"lambda query, persons, households: persons.query(query).groupby('household_id').size().reindex(households.index).fillna(0).astype(np.int8)", #,,FIXME households.income can be negative, so we clip? -income_in_thousands,income_in_thousands,(households.income / 1000).clip(lower=0) -income_segment,income_segment,"pd.cut(income_in_thousands, bins=[-np.inf, 30, 60, 100, np.inf], labels=[1, 2, 3, 4]).astype(int)" -#,, -#num_workers was renamed in import,, -#,num_workers,households.workers -number of non_workers,num_non_workers,households.hhsize - households.num_workers -#,, -#,,we assume that everyone 16 and older is a potential driver -number of drivers,num_drivers,"_PERSON_COUNT('16 <= age', persons, households)" -num_adults,num_adults,"_PERSON_COUNT('adult', persons, households)" -num_children,num_children,"_PERSON_COUNT('~adult', persons, households)" -#,,FIXME num_young_children is under 5 here but used in mandatory_tour_frequency where CTRAMP uec wants num_preschool which java code has as under 6 -num_young_children,num_young_children,"_PERSON_COUNT('age <= 4', persons, households)" -num_children_5_to_15,num_children_5_to_15,"_PERSON_COUNT('5 <= age <= 15', persons, households)" -num_children_16_to_17,num_children_16_to_17,"_PERSON_COUNT('16 <= age <= 17', persons, households)" -num_college_age,num_college_age,"_PERSON_COUNT('18 <= age <= 24', persons, households)" -num_young_adults,num_young_adults,"_PERSON_COUNT('25 <= age <= 34', persons, households)" -non_family,non_family,households.HHT.isin(constants.HHT_NONFAMILY) -family,family,households.HHT.isin(constants.HHT_FAMILY) -home_is_urban,home_is_urban,"reindex(land_use.area_type, households.TAZ) < setting('urban_threshold')" -home_is_rural,home_is_rural,"reindex(land_use.area_type, households.TAZ) > setting('rural_threshold')" -#,, FIXME - fix this variable from auto ownership model -work_tour_auto_time_savings,work_tour_auto_time_savings,0 -#,, default for work and school location logsums before auto_ownership model is run -,auto_ownership,households.VEHICL -#home_taz,home_taz,households.TAZ +income_in_thousands,income_in_thousands,(households.income / 1000).clip(lower=0), +income_segment,income_segment,"pd.cut(income_in_thousands, bins=[-np.inf, 30, 60, 100, np.inf], labels=[1, 2, 3, 4]).astype(int)", +#,,, +,_MIN_VOT,setting('min_value_of_time'), +,_MAX_VOT,setting('max_value_of_time'), +,_MU,setting('distributed_vot_mu'), +,_SIGMA,setting('distributed_vot_sigma'), +median_value_of_time,median_value_of_time,"income_segment.map({k: v for k, v in setting('household_median_value_of_time').items()})", +hh_value_of_time,hh_value_of_time,"rng.lognormal_for_df(df, mu=np.log(median_value_of_time * _MU), sigma=_SIGMA).clip(_MIN_VOT, _MAX_VOT)", +#,,, +#num_workers was renamed in import,,, +#,num_workers,households.workers, +number of non_workers,num_non_workers,households.hhsize - households.num_workers, +#,,, +#,,we assume that everyone 16 and older is a potential driver, +number of drivers,num_drivers,"_PERSON_COUNT('16 <= age', persons, households)", +num_adults,num_adults,"_PERSON_COUNT('adult', persons, households)", +num_children,num_children,"_PERSON_COUNT('~adult', persons, households)", +num_young_children,num_young_children,"_PERSON_COUNT('age <= 5', persons, households)", +num_children_5_to_15,num_children_5_to_15,"_PERSON_COUNT('5 <= age <= 15', persons, households)", +num_children_16_to_17,num_children_16_to_17,"_PERSON_COUNT('16 <= age <= 17', persons, households)", +num_college_age,num_college_age,"_PERSON_COUNT('18 <= age <= 24', persons, households)", +num_young_adults,num_young_adults,"_PERSON_COUNT('25 <= age <= 34', persons, households)", +non_family,non_family,households.HHT.isin(constants.HHT_NONFAMILY), +family,family,households.HHT.isin(constants.HHT_FAMILY), +home_is_urban,home_is_urban,"reindex(land_use.area_type, households.TAZ) < setting('urban_threshold')", +home_is_rural,home_is_rural,"reindex(land_use.area_type, households.TAZ) > setting('rural_threshold')", +#,, default for work and school location logsums before auto_ownership model is run, +,auto_ownership,households.VEHICL, +#home_taz,home_taz,households.TAZ, diff --git a/example/configs/annotate_households_cdap.csv b/example/configs/annotate_households_cdap.csv index 8df638aa0..a025a60e9 100644 --- a/example/configs/annotate_households_cdap.csv +++ b/example/configs/annotate_households_cdap.csv @@ -1,6 +1,6 @@ Description,Target,Expression #,, annotate households table after cdap model has run -num_under16_not_at_school,num_under16_not_at_school,"persons.under16_not_at_school.astype(int).groupby(persons.household_id).sum().reindex(households.index).fillna(0)" -num_travel_active,num_travel_active,"persons.travel_active.astype(int).groupby(persons.household_id).sum().reindex(households.index).fillna(0)" -num_travel_active_adults,num_travel_active_adults,"(persons.adult & persons.travel_active).astype(int).groupby(persons.household_id).sum().reindex(households.index).fillna(0)" +num_under16_not_at_school,num_under16_not_at_school,"persons.under16_not_at_school.astype(int).groupby(persons.household_id).sum().reindex(households.index).fillna(0).astype(np.int8)" +num_travel_active,num_travel_active,"persons.travel_active.astype(int).groupby(persons.household_id).sum().reindex(households.index).fillna(0).astype(np.int8)" +num_travel_active_adults,num_travel_active_adults,"(persons.adult & persons.travel_active).astype(int).groupby(persons.household_id).sum().reindex(households.index).fillna(0).astype(np.int8)" num_travel_active_children,num_travel_active_children,"num_travel_active - num_travel_active_adults" diff --git a/example/configs/annotate_households_workplace.csv b/example/configs/annotate_households_workplace.csv new file mode 100644 index 000000000..1b53e91da --- /dev/null +++ b/example/configs/annotate_households_workplace.csv @@ -0,0 +1,5 @@ +Description,Target,Expression +#,, annotate households table after workplace_location model has run +#,, hh_work_auto_savings_ratio is sum of persons work_auto_savings_ratio +,hh_work_auto_savings_ratio,persons.work_auto_savings_ratio.groupby(persons.household_id).sum().reindex(households.index).fillna(0.0) +#,,handle persons with no locatcion diff --git a/example/configs/annotate_landuse.csv b/example/configs/annotate_landuse.csv index 8d374711a..229833a50 100644 --- a/example/configs/annotate_landuse.csv +++ b/example/configs/annotate_landuse.csv @@ -1,6 +1,5 @@ Description,Target,Expression #,, annotate landuse table after import -household_density,household_density,land_use.TOTHH / land_use.TOTACRE -employment_density,employment_density,land_use.TOTEMP / land_use.TOTACRE +household_density,household_density,land_use.TOTHH / (land_use.RESACRE + land_use.CIACRE) +employment_density,employment_density,land_use.TOTEMP / (land_use.RESACRE + land_use.CIACRE) density_index,density_index,(household_density *employment_density) / (household_density + employment_density).clip(lower=1) -county_name,county_name,"land_use.county_id.map({v: k for k, v in setting('county_map').items()})" diff --git a/example/configs/annotate_persons.csv b/example/configs/annotate_persons.csv index 4e5fed9e3..3690abc8a 100644 --- a/example/configs/annotate_persons.csv +++ b/example/configs/annotate_persons.csv @@ -15,7 +15,7 @@ presence of part_time worker other than self in household,has_part_time,"other_t presence of university student other than self in household,has_university,"other_than(persons.household_id, persons.ptype == constants.PTYPE_UNIVERSITY)" student_is_employed,student_is_employed,"(persons.ptype.isin([constants.PTYPE_UNIVERSITY, constants.PTYPE_DRIVING]) & persons.pemploy.isin([constants.PEMPLOY_FULL, constants.PEMPLOY_PART]))" nonstudent_to_school,nonstudent_to_school,"(persons.ptype.isin([constants.PTYPE_FULL, constants.PTYPE_PART, constants.PTYPE_NONWORK, constants.PTYPE_RETIRED]) & persons.pstudent.isin([constants.PSTUDENT_GRADE_OR_HIGH, constants.PSTUDENT_UNIVERSITY]))" -is_worker,is_worker,"persons.pemploy.isin([constants.PEMPLOY_FULL, constants.PEMPLOY_PART])" +#,, #,, FIXME - if person is a university student but has school age student category value then reset student category value ,pstudent,"persons.pstudent.where(persons.ptype!=constants.PTYPE_UNIVERSITY, constants.PSTUDENT_UNIVERSITY)" #,, FIXME if person is a student of any kind but has full-time employment status then reset student category value to non-student @@ -24,8 +24,15 @@ is_worker,is_worker,"persons.pemploy.isin([constants.PEMPLOY_FULL, constants.PEM ,pstudent,"pstudent.where((persons.ptype!=constants.PTYPE_DRIVING) & (persons.ptype!=constants.PTYPE_SCHOOL), constants.PSTUDENT_GRADE_OR_HIGH)" #,, is_student,is_student,"pstudent.isin([constants.PSTUDENT_GRADE_OR_HIGH, constants.PSTUDENT_UNIVERSITY])" -is_gradeschool,is_gradeschool,"(pstudent == constants.PSTUDENT_GRADE_OR_HIGH) & (persons.age <= setting('grade_school_max_age'))" -is_highschool,is_highschool,"(pstudent == constants.PSTUDENT_GRADE_OR_HIGH) & (persons.age > setting('grade_school_max_age'))" -is_university,is_university,"pstudent == constants.PSTUDENT_UNIVERSITY" +preschool age can go to preschool,is_student,"is_student.where(persons.age > constants.GRADE_SCHOOL_MIN_AGE, True)" +preschool age can go to preschool,pstudent,"pstudent.where(persons.age > constants.GRADE_SCHOOL_MIN_AGE, constants.PSTUDENT_GRADE_OR_HIGH)" +is_gradeschool,is_gradeschool,(pstudent == constants.PSTUDENT_GRADE_OR_HIGH) & (persons.age <= constants.GRADE_SCHOOL_MAX_AGE) +is_highschool,is_highschool,(pstudent == constants.PSTUDENT_GRADE_OR_HIGH) & (persons.age > constants.GRADE_SCHOOL_MAX_AGE) +is_university,is_university,pstudent == constants.PSTUDENT_UNIVERSITY +school_segment gradeschool,school_segment,"np.where(is_gradeschool, constants.SCHOOL_SEGMENT_GRADE, constants.SCHOOL_SEGMENT_NONE)" +school_segment highschool,school_segment,"np.where(is_highschool, constants.SCHOOL_SEGMENT_HIGH, school_segment)" +school_segment university,school_segment,"np.where(is_university, constants.SCHOOL_SEGMENT_UNIV, school_segment).astype(np.int8)" +#,, +is_worker,is_worker,"persons.pemploy.isin([constants.PEMPLOY_FULL, constants.PEMPLOY_PART])" #,, home_taz,home_taz,"reindex(households.TAZ, persons.household_id)" diff --git a/example/configs/annotate_persons_after_hh.csv b/example/configs/annotate_persons_after_hh.csv new file mode 100644 index 000000000..59374d5bf --- /dev/null +++ b/example/configs/annotate_persons_after_hh.csv @@ -0,0 +1,5 @@ +Description,Target,Expression +#,, annotate persons table after annotate_households +#,, adults get full hh_value_of_time and children get 60% +,_hh_vot,"reindex(households.hh_value_of_time, persons.household_id)" +,value_of_time,"_hh_vot.where(persons.age>=18, _hh_vot * 0.667)" diff --git a/example/configs/annotate_persons_jtp.csv b/example/configs/annotate_persons_jtp.csv new file mode 100644 index 000000000..a72c86605 --- /dev/null +++ b/example/configs/annotate_persons_jtp.csv @@ -0,0 +1,3 @@ +Description,Target,Expression +#,, annotate persons table after joint_tour_participation model has run +num_joint_tours,num_joint_tours,"joint_tour_participants.groupby('person_id').size().reindex(persons.index).fillna(0).astype(np.int8)" diff --git a/example/configs/annotate_persons_nmtf.csv b/example/configs/annotate_persons_nmtf.csv index 5a7c93846..5a3f8c18d 100644 --- a/example/configs/annotate_persons_nmtf.csv +++ b/example/configs/annotate_persons_nmtf.csv @@ -1,7 +1,9 @@ Description,Target,Expression #,, annotate persons table after non_mandatory_tour_frequency model has run -num_non_mand,num_non_mand,"tours[tours.tour_category=='mandatory'].groupby('person_id').size().reindex(persons.index).fillna(0)" -num_escort_tours,num_escort_tours,"tours[tours.tour_type == 'escort'].groupby('person_id').size().reindex(persons.index).fillna(0)" -num_non_escort_tours,num_non_escort_tours,"tours[~tours.tour_type.isin(['escort', 'work', 'school'])].groupby('person_id').size().reindex(persons.index).fillna(0)" -num_eatout_tours,num_eatout_tours,"tours[tours.tour_type == 'eatout'].groupby('person_id').size().reindex(persons.index).fillna(0)" - +num_non_mand,num_non_mand,"tours[tours.tour_category=='non_mandatory'].groupby('person_id').size().reindex(persons.index).fillna(0).astype(np.int8)" +num_escort_tours,num_escort_tours,"tours[tours.tour_type == 'escort'].groupby('person_id').size().reindex(persons.index).fillna(0).astype(np.int8)" +num_eatout_tours,num_eatout_tours,"tours[tours.tour_type == 'eatout'].groupby('person_id').size().reindex(persons.index).fillna(0).astype(np.int8)" +num_shop_tours,num_shop_tours,"tours[tours.tour_type == 'shopping'].groupby('person_id').size().reindex(persons.index).fillna(0).astype(np.int8)" +num_maint_tours,num_maint_tours,"tours[tours.tour_type == 'othmaint'].groupby('person_id').size().reindex(persons.index).fillna(0).astype(np.int8)" +num_social_tours,num_social_tours,"tours[tours.tour_type == 'social'].groupby('person_id').size().reindex(persons.index).fillna(0).astype(np.int8)" +num_non_escort_tours,num_non_escort_tours,"num_non_mand-num_escort_tours" diff --git a/example/configs/annotate_persons_school.csv b/example/configs/annotate_persons_school.csv index dd01674f5..3b33e893f 100644 --- a/example/configs/annotate_persons_school.csv +++ b/example/configs/annotate_persons_school.csv @@ -6,5 +6,4 @@ local scalar distance skim,_DISTANCE_SKIM,"skim_dict.get('DIST')" local scalar distance skim,_SOVMD_SKIM,"skim_dict.get(('SOV_TIME', 'MD'))" temp auto_time_to_school,_auto_time_to_school,"_SOVMD_SKIM.get(persons.home_taz, persons.school_taz)" temp auto_time_return,_auto_time_return,"_SOVMD_SKIM.get(persons.school_taz, persons.home_taz)" -free flow roundtrip_auto_time_to_school,roundtrip_auto_time_to_school,"_auto_time_to_school + _auto_time_return" -#free flow roundtrip_auto_time_to_school,roundtrip_auto_time_to_school,"pd.Series(_auto_time_to_school + _auto_time_return, index=persons.index)" +free flow roundtrip_auto_time_to_school,roundtrip_auto_time_to_school,"np.where(persons.school_taz>=0,_auto_time_to_school + _auto_time_return,0)" diff --git a/example/configs/annotate_persons_workplace.csv b/example/configs/annotate_persons_workplace.csv index cc0ea883d..e2b85eccb 100644 --- a/example/configs/annotate_persons_workplace.csv +++ b/example/configs/annotate_persons_workplace.csv @@ -1,12 +1,41 @@ Description,Target,Expression #,, annotate persons table after workplace_location model has run -local scalar distance skim,_DISTANCE_SKIM,"skim_dict.get('DIST')" +local scalar distance skim,_DISTANCE_SKIM,skim_dict.get('DIST') ,distance_to_work,"np.where(persons.workplace_taz>=0,_DISTANCE_SKIM.get(persons.home_taz, persons.workplace_taz),np.nan)" -#,, this uses the free flow travel time in both directions. MTC TM1 was MD and MD -local scalar distance skim,_SOVMD_SKIM,"skim_dict.get(('SOV_TIME', 'MD'))" -temp auto_time_to_work,_auto_time_to_work,"_SOVMD_SKIM.get(persons.home_taz, persons.workplace_taz)" -temp auto_time_return,_auto_time_return,"_SOVMD_SKIM.get(persons.workplace_taz, persons.home_taz)" -free flow roundtrip_auto_time_to_work,roundtrip_auto_time_to_work,"_auto_time_to_work + _auto_time_return" -#free flow roundtrip_auto_time_to_work,roundtrip_auto_time_to_work,"pd.Series(_auto_time_to_work + _auto_time_return, index=persons.index)" workplace_in_cbd,workplace_in_cbd,"reindex(land_use.area_type, persons.workplace_taz) < setting('cbd_threshold')" work_taz_area_type,work_taz_area_type,"reindex(land_use.area_type, persons.workplace_taz)" +#,, auto time to work - free flow travel time in both directions. MTC TM1 was MD and MD +local scalar distance skim,_SOVMD_SKIM,"skim_dict.get(('SOV_TIME', 'MD'))" +#,,roundtrip_auto_time_to_work +,_auto_time_home_to_work,"_SOVMD_SKIM.get(persons.home_taz, persons.workplace_taz)" +,_auto_time_work_to_home,"_SOVMD_SKIM.get(persons.workplace_taz, persons.home_taz)" +,roundtrip_auto_time_to_work,"np.where(persons.workplace_taz>=0,_auto_time_home_to_work + _auto_time_work_to_home,0)" +#,,_roundtrip_walk_time_to_work +,_MAX_TIME_TO_WORK,999 +,_WALK_SPEED_MPH,3 +,_DISTWALK_SKIM,skim_dict.get(('DISTWALK')) +,_walk_time_home_to_work,"60 * _DISTWALK_SKIM.get(persons.home_taz, persons.workplace_taz)/_WALK_SPEED_MPH" +,_walk_time_work_to_home,"60 * _DISTWALK_SKIM.get(persons.workplace_taz, persons.home_taz)/_WALK_SPEED_MPH" +,_work_walk_available,(_walk_time_home_to_work > 0) & (_walk_time_work_to_home > 0) +,_roundtrip_walk_time_to_work,"np.where(_work_walk_available, _walk_time_home_to_work + _walk_time_work_to_home, _MAX_TIME_TO_WORK)" +#,,_roundtrip_transit_time_to_work +,_IVT_SKIM,"skim_dict.get(('WLK_TRN_WLK_IVT', 'MD'))" +,_transit_ivt_home_to_work,"_IVT_SKIM.get(persons.home_taz, persons.workplace_taz)/100" +,_transit_ivt_work_to_home,"_IVT_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_work_transit_available,(_transit_ivt_home_to_work > 0) & (_transit_ivt_work_to_home > 0) +,_IWAIT_SKIM,"skim_dict.get(('WLK_TRN_WLK_IWAIT', 'MD'))" +,_transit_iwait,"_IWAIT_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _IWAIT_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_XWAIT_SKIM,"skim_dict.get(('WLK_TRN_WLK_XWAIT', 'MD'))" +,_transit_xwait,"_XWAIT_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _XWAIT_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_WAUX_SKIM,"skim_dict.get(('WLK_TRN_WLK_WAUX', 'MD'))" +,_transit_waux,"_WAUX_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _WAUX_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_WACC_SKIM,"skim_dict.get(('WLK_TRN_WLK_WACC', 'MD'))" +,_transit_wacc,"_WACC_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _WACC_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_WEGR_SKIM,"skim_dict.get(('WLK_TRN_WLK_WEGR', 'MD'))" +,_transit_wegr,"_WEGR_SKIM.get(persons.home_taz, persons.workplace_taz)/100 + _WEGR_SKIM.get(persons.workplace_taz, persons.home_taz)/100" +,_roundtrip_transit_time_to_work,_transit_ivt_home_to_work + _transit_ivt_work_to_home + _transit_iwait + _transit_xwait + _transit_waux + _transit_wacc + _transit_wegr +#,,work_auto_savings_ratio +,_min_work_walk_transit,"np.where(_work_transit_available, np.minimum(_roundtrip_transit_time_to_work, _roundtrip_walk_time_to_work), _roundtrip_walk_time_to_work)" +,work_auto_savings,"np.where(persons.is_worker, _min_work_walk_transit - roundtrip_auto_time_to_work, 0)" +#,,auto savings over walk or transit capped at 120 and normalized to unity +,work_auto_savings_ratio,"(work_auto_savings / 120.0).clip(-1.0, 1.0)" diff --git a/example/configs/atwork_subtour_destination.csv b/example/configs/atwork_subtour_destination.csv index 0d6157d62..0615eae20 100644 --- a/example/configs/atwork_subtour_destination.csv +++ b/example/configs/atwork_subtour_destination.csv @@ -1,10 +1,10 @@ Description,Expression,atwork -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-0.7926 +"Distance, piecewise linear from 0 to 1 miles","@skims['DIST'].clip(0,1)",-0.7926 "Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.7926 "Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.5197 "Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.2045 "Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.2045 -"Size variable atwork","@(df.income_segment==1)*df['atwork'].apply(np.log1p)",1 +Size variable atwork,"@df['atwork'].apply(np.log1p)",1 "No attractions, atwork size variable is 0",atwork==0,-999 -"Mode choice logsum",mode_choice_logsum,0.5136 -"Sample of alternatives correction factor","@np.minimum(np.log(df.pick_count/df.prob), 60)",1 +Mode choice logsum,mode_choice_logsum,0.5136 +Sample of alternatives correction factor,"@np.minimum(np.log(df.pick_count/df.prob), 60)",1 diff --git a/example/configs/atwork_subtour_destination.yaml b/example/configs/atwork_subtour_destination.yaml index 277c71a9c..207f0c1e5 100644 --- a/example/configs/atwork_subtour_destination.yaml +++ b/example/configs/atwork_subtour_destination.yaml @@ -10,6 +10,5 @@ LOGSUM_SETTINGS: tour_mode_choice.yaml # model-specific logsum-related settings CHOOSER_ORIG_COL_NAME: workplace_taz ALT_DEST_COL_NAME: alt_dest -IN_PERIOD: 12 -OUT_PERIOD: 12 - +IN_PERIOD: 14 +OUT_PERIOD: 14 diff --git a/example/configs/atwork_subtour_destination_sample.csv b/example/configs/atwork_subtour_destination_sample.csv index 616525a72..541db7cf0 100644 --- a/example/configs/atwork_subtour_destination_sample.csv +++ b/example/configs/atwork_subtour_destination_sample.csv @@ -1,8 +1,8 @@ Description,Expression,atwork -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-0.7926 +"Distance, piecewise linear from 0 to 1 miles","@skims['DIST'].clip(0,1)",-0.7926 "Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.7926 "Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.5197 "Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.2045 "Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.2045 -"Size variable atwork","@(df.income_segment==1)*df['atwork'].apply(np.log1p)",1 +Size variable atwork,"@df['atwork'].apply(np.log1p)",1 "No attractions, atwork",atwork==0,-999 diff --git a/example/configs/atwork_subtour_frequency.csv b/example/configs/atwork_subtour_frequency.csv index 1320bd43e..5f65e17f3 100644 --- a/example/configs/atwork_subtour_frequency.csv +++ b/example/configs/atwork_subtour_frequency.csv @@ -5,19 +5,19 @@ Dummy for person types 4-7 (non-workers),"ptype in [4, 5, 6, 7]",,0.0000,-5.0000 Medium HH income dummy,income_segment == 2,,0.6100,0.5555,0.1527,1.1110,1.1655 High HH income dummy,(income_segment > 2) & (income_segment < 5),,0.8693,1.0660,0.1651,2.1320,1.9353 Zero cars owned by HH - dummy, auto_ownership == 0,,,-0.3391,0.1762,0.0000,-0.3391 -# Individual discretionary tour made by the person who is a full-time worker @DiscrFt 0.2334 0.7045 0.5061 1.4090 0.9379 -# Individual discretionary tour made by the person who is a part-time worker @indivDiscrPt 0.6776 0.7045 0.5061 1.4090 1.3821 +Individual discretionary tour made by the person who is a full-time worker,@(df.ptype == 1)*df.num_non_mand,,0.2334,0.7045,0.5061,1.4090,0.9379 +Individual discretionary tour made by the person who is a part-time worker,@(df.ptype != 1)*df.num_non_mand,,0.6776,0.7045,0.5061,1.4090,1.3821 Individual eating-out tour made by the person,num_eatout_tours,,0.5491,0.5434,0.9166,1.0868,1.0925 -# Main/shop/escort tour allocated to the person who is a full-time worker @indivMaintShopEscortFt -0.0520 -0.1903 0.1446 -0.3806 -0.2423 -# Main/shop/escort tour allocated to the person who is a part-time worker @indivMaintShopEscortPt -0.3099 -0.1903 -0.2723 -0.3806 -0.5002 -# Participation in at least one joint shop/main/eat tour @jointMaintShopEatPerson 0.2458 0.0830 0.0803 0.1660 0.3288 -# Participation in at least one joint discretionary tour @jointDiscrPerson 0.3588 -0.2637 0.5822 -0.5274 0.0951 +Main/shop/escort tour allocated to the person who is a full-time worker,@(df.ptype == 1)*df.num_maint_shop_escort,,0.0520,-0.1903,0.1446,-0.3806,-0.2423 +Main/shop/escort tour allocated to the person who is a part-time worker,@(df.ptype != 1)*df.num_maint_shop_escort,,-0.3099,-0.1903,-0.2723,-0.3806,-0.5002 +Participation in at least one joint shop/main/eat tour,num_joint_maint_shop_eat,,0.2458,0.0830,0.0803,0.1660,0.3288 +Participation in at least one joint discretionary tour,num_joint_discr,,0.3588,-0.2637,0.5822,-0.5274,0.0951 Log of the work tour duration,@np.log(df.duration+0.5),,1.5500,1.1420,1.6590,2.2840,2.6920 -# Dummy for drive-alone mode for the work tour @workTourModeIsSOV 0.4804 0.9901 1.1530 1.9802 1.4705 +Dummy for drive-alone mode for the work tour,work_tour_is_SOV,,0.4804,0.9901,1.1530,1.9802,1.4705 Two work tours implemented by the person,num_work_tours==2,,-0.9862,0.3753,-0.2312,0.7506,-0.6109 "Workplace urban area dummy (cbd=1, urban=2,3, suburban=4,5,6, rural=7)",work_taz_area_type<4,,-0.4182,-0.2235,-0.1479,-0.4470,-0.6417 "Workplace suburban area dummy (cbd=1, urban=2,3, suburban=4,5,6, rural=7)",(work_taz_area_type>3) & (work_taz_area_type<6),,-0.2916,-0.1102,,-0.2204,-0.4018 -# Auto accessibility to retail for work taz (from zonal file) autoOffPeakRetail z 0.0150 0.0534 0.0265 0.1067 0.0683 -# Walk accessibility to retail for work taz (from zonal file) nonMotorizedRetail z 0.0600 0.0400 0.0000 0.0600 +Auto accessibility to retail for work taz (from zonal file),auOpRetail,,0.0150,0.0534,0.0265,0.1067,0.0683 +Walk accessibility to retail for work taz (from zonal file),nmRetail,,0.0600,,0.0400,0.0000,0.0600 Dummy for worker or student with non-mandatory tour(s),(is_worker | is_student) * num_non_mand,,,,-0.3573,0.0000,0.0000 At-work sub-tour alternative specific constant,1,,0.8576,-0.5372,-0.6198,-2.1337,-0.9721 diff --git a/example/configs/atwork_subtour_frequency.yaml b/example/configs/atwork_subtour_frequency.yaml new file mode 100644 index 000000000..88f4907e8 --- /dev/null +++ b/example/configs/atwork_subtour_frequency.yaml @@ -0,0 +1,8 @@ + +preprocessor: + SPEC: atwork_subtour_frequency_annotate_tours_preprocessor + DF: df + TABLES: + - land_use + - tours + - joint_tour_participants diff --git a/example/configs/atwork_subtour_frequency_annotate_tours_preprocessor.csv b/example/configs/atwork_subtour_frequency_annotate_tours_preprocessor.csv new file mode 100644 index 000000000..3e4f15187 --- /dev/null +++ b/example/configs/atwork_subtour_frequency_annotate_tours_preprocessor.csv @@ -0,0 +1,9 @@ +Description,Target,Expression +,num_maint_shop_escort,df.num_maint_tours+df.num_shop_tours+df.num_escort_tours +#,num_joint_maint_shop_eat,"reindex_i(tours[(tours.tour_category=='joint') & tours.tour_type.isin(['othmaint', 'shopping', 'eatout'])].groupby('person_id').size(), df.person_id)" +#,num_eatout_tours,"reindex_i(tours[~tours.is_joint & (tours.tour_type==EATOUT_TOUR)].groupby('person_id').size(), df.person_id)" +joint tour participants annotated with tour type,_PARTICIPANTS,"pd.merge(joint_tour_participants[['tour_id', 'person_id']], tours[['tour_type']], left_on='tour_id', right_index=True, how='left')" +,num_joint_discr,"reindex_i(_PARTICIPANTS[_PARTICIPANTS.tour_type=='othdiscr'].groupby('person_id').size(), df.person_id)" +,num_joint_maint_shop_eat,"reindex_i(_PARTICIPANTS[_PARTICIPANTS.tour_type.isin(['othmaint', 'shopping', 'eatout'])].groupby('person_id').size(), df.person_id)" +#,, +,work_tour_is_SOV,"df.tour_mode.isin(['DRIVEALONEFREE','DRIVEALONEPAY'])" diff --git a/example/configs/auto_ownership.csv b/example/configs/auto_ownership.csv index 322071e5e..888e4686f 100644 --- a/example/configs/auto_ownership.csv +++ b/example/configs/auto_ownership.csv @@ -16,15 +16,15 @@ Presence of children age 5-17,(num_children_5_to_15+num_children_16_to_17)>0,,0. "Density index up to 10, if 1+ workers","@(df.num_workers>0)*df.density_index.clip(0, 10)",,0,-0.2028,-0.3654,-0.3654 "Density index in excess of 10, if 1+ workers",@(df.num_workers>0)*(df.density_index-10).clip(0),,-0.0152,-0.1106,-0.1766,-0.1766 Constants,@1,,1.1865,-1.0846,-3.2502,-5.313 -San Francisco county,county_name == 'San Francisco',,0.4259,0.4683,0.1458,0.1458 -Solano county,county_name == 'Solano',,-0.566,-0.4429,-0.2372,-0.2372 -Napa county,county_name == 'Napa',,-0.566,-0.4429,-0.2372,-0.2372 -Sonoma county,county_name == 'Sonoma',,-0.566,-0.4429,-0.2372,-0.2372 -Marin county,county_name == 'Marin',,-0.2434,0,0,0 +San Francisco county,@df.county_id == ID_SAN_FRANCISCO,,0.4259,0.4683,0.1458,0.1458 +Solano county,@df.county_id == ID_SOLANO,,-0.566,-0.4429,-0.2372,-0.2372 +Napa county,@df.county_id == ID_NAPA,,-0.566,-0.4429,-0.2372,-0.2372 +Sonoma county,@df.county_id == ID_SONOMA,,-0.566,-0.4429,-0.2372,-0.2372 +Marin county,@df.county_id == ID_MARIN,,-0.2434,0,0,0 "Retail accessibility (0.66*PK + 0.34*OP) by auto, if 0 workers",(num_workers==0)*(0.66*auPkRetail+0.34*auOpRetail),,0.0626,0.0626,0.0626,0.0626 "Retail accessibility (0.66*PK + 0.34*OP) by auto, if 1+ workers",(num_workers>0)*(0.66*auPkRetail+0.34*auOpRetail),,0.1646,0.1646,0.1646,0.1646 "Retail accessibility (0.66*PK + 0.34*OP) by transit, if 0 workers",(num_workers==0)*(0.66*trPkRetail+0.34*trOpRetail),,-0.3053,-0.3053,-0.3053,-0.3053 "Retail accessibility (0.66*PK + 0.34*OP) by transit, if 1+ workers",(num_workers>0)*(0.66*trPkRetail+0.34*trOpRetail),,-0.5117,-0.5117,-0.5117,-0.5117 "Retail accessibility by non-motorized, if 0 workers",(num_workers==0)*nmRetail,,-0.03,-0.03,-0.03,-0.03 "Retail accessibility by non-motorized, if 1+ workers",(num_workers>0)*nmRetail,,-0.03,-0.03,-0.03,-0.03 -"Auto time savings per worker (over walk or transit, max 120) to work",work_tour_auto_time_savings / (num_workers+1),,0.4707,0.6142,0.5705,0.7693 +Auto time savings per worker to work","@np.where(df.num_workers > 0, df.hh_work_auto_savings_ratio / df.num_workers, 0)",,0.4707,0.6142,0.5705,0.7693 diff --git a/example/configs/auto_ownership.yaml b/example/configs/auto_ownership.yaml index 5ac0295ca..5f0a52674 100644 --- a/example/configs/auto_ownership.yaml +++ b/example/configs/auto_ownership.yaml @@ -1,2 +1,13 @@ #LOGIT_TYPE: NL LOGIT_TYPE: MNL + +CONSTANTS: + ID_SAN_FRANCISCO: 1 + ID_SAN_MATEO: 2 + ID_SANTA_CLARA: 3 + ID_ALAMEDA: 4 + ID_CONTRA_COSTA: 5 + ID_SOLANO: 6 + ID_NAPA: 7 + ID_SONOMA: 8 + ID_MARIN: 9 diff --git a/example/configs/cdap_fixed_relative_proportions.csv b/example/configs/cdap_fixed_relative_proportions.csv index 2bdaca8bb..788f398b6 100644 --- a/example/configs/cdap_fixed_relative_proportions.csv +++ b/example/configs/cdap_fixed_relative_proportions.csv @@ -1,10 +1,9 @@ Description,Expression,M,N,H Full-time worker,ptype == 1,0.79647,0.09368,0.10985 Part-time worker,ptype == 2,0.61678,0.25757,0.12565 -University student,ptype == 3,0.69229,0.15641,0.15130 -Non-working adult,ptype == 4,0.00000,0.67169,0.32831 -Retired,ptype == 5,0.00000,0.54295,0.45705 +University student,ptype == 3,0.69229,0.15641,0.1513 +Non-working adult,ptype == 4,0,0.67169,0.32831 +Retired,ptype == 5,0,0.54295,0.45705 Driving-age child who is in school,ptype == 6,0.77609,0.06004,0.16387 Pre-driving-age child who is in school,ptype == 7,0.68514,0.09144,0.22342 -Pre-driving-age child who is too young for school,(ptype == 8) & (school_taz>=0),0.14056,0.06512,0.79432 -Pre-driving-age child who is too young for school,(ptype == 8) & (school_taz<0),0.00000,0.06512,0.79432 +Child who is too young for school,ptype == 8,0.14056,0.06512,0.79432 diff --git a/example/configs/cdap_indiv_and_hhsize1.csv b/example/configs/cdap_indiv_and_hhsize1.csv index 62fc273a5..9e17fdcde 100644 --- a/example/configs/cdap_indiv_and_hhsize1.csv +++ b/example/configs/cdap_indiv_and_hhsize1.csv @@ -9,11 +9,10 @@ Pre-driving-age child who is in school alternative-specific constants,ptype == 7 Pre-driving-age child who is in school interaction with age 6 to 9,(ptype == 7) & (age >= 6) & (age <= 9),-0.2943,, Pre-driving-age child who is in school interaction with age 13 to 15,(ptype == 7) & (age >= 13) & (age <= 15),-0.7141,-0.672, Pre-driving-age child who is too young for school alternative-specific constants,ptype == 8,1.052531189,-0.837567776, +# corrected tm1 age bug,,,, Pre-driving-age child who is too young for school interaction with age 0 to 1,(ptype == 8) & (age >= 0) & (age <= 1),-0.4515,, Pre-driving-age child who is too young for school interaction with age 4 to 5,(ptype == 8) & (age >= 4) & (age <= 5),0.6107,, -# FIXME,,,, -Pre-driving-age child who is too young for school ,(ptype == 8) & (school_taz<0),-999,, -# +#,,,, Full-time worker interaction with age less than 40,(ptype == 1) & (age < 40),0.2091,, Retired interaction with age more than 80,(ptype == 5) & (age > 80),,,0.7666 Full-time worker interaction with female gender,(ptype == 1) & (sex == 2),-0.1259,, @@ -32,14 +31,14 @@ Full-time worker interaction with income less than $20k,(ptype == 1) & (income_i Retired interaction with income less than $20k,(ptype == 5) & (income_in_thousands < 20),,,0.533 Part-time worker interaction with income less than $20k,(ptype == 2) & (income_in_thousands < 20),,,0.3232 Part-time worker interaction with income between $50k and $100k,(ptype == 2) & (income_in_thousands >= 50) & (income_in_thousands <= 100),,,-0.4032 -Part-time worker interaction with income more than $100k,(ptype == 2) & (income_in_thousands < 100),,0.4207,-0.3534 +Part-time worker interaction with income more than $100k,(ptype == 2) & (income_in_thousands >= 100),,0.4207,-0.3534 Non-working adult interaction with income between $50k and $100k,(ptype == 4) & (income_in_thousands >= 50) & (income_in_thousands <= 100),,,-0.5602 -Non-working adult interaction with income more than $100k,(ptype == 4) & (income_in_thousands < 100),,,-0.7188 +Non-working adult interaction with income more than $100k,(ptype == 4) & (income_in_thousands >= 100),,,-0.7188 Driving-age child who is in school interaction with less than $20k,(ptype == 6) & (income_in_thousands < 20),,,1.307 Driving-age child who is in school interaction income between $50k and $100k,(ptype == 6) & (income_in_thousands >= 50) & (income_in_thousands <= 100),,,-0.5031 -Driving-age child who is in school interaction with income more than $100k,(ptype == 6) & (income_in_thousands < 100),,,-2.046 +Driving-age child who is in school interaction with income more than $100k,(ptype == 6) & (income_in_thousands >= 100),,,-2.046 Pre-driving-age child who is too young for school interaction with income between $50k and $100k,(ptype == 8) & (income_in_thousands >= 50) & (income_in_thousands <= 100),,,-0.5708 -Pre-driving-age child who is too young for school interaction with income more than $100k,(ptype == 8) & (income_in_thousands < 100),,,-0.6186 +Pre-driving-age child who is too young for school interaction with income more than $100k,(ptype == 8) & (income_in_thousands >= 100),,,-0.6186 Full-time worker intraction with peak accessibility to all employment,(ptype == 1) * auPkTotal,0.1212,, Part-time worker interaction with peak accessibility to all employment,(ptype == 2) * auPkTotal,0.2004,, Non-working adult interaction with peak accessibility to all employment,(ptype == 4) * auPkTotal,0.2314,, @@ -50,9 +49,12 @@ University student interaction with off-peak accessibility to retail,(ptype == 3 Driving-age child who is in school interaction with off-peak accessibility to retail,(ptype == 6) * auOpRetail,,0.08233, Pre-driving-age child who is in school interaction with off-peak accessibility to retail,(ptype == 7) * auOpRetail,,0.08233, Pre-driving-age child who is too young for school interaction with off-peak accessibility to retail,(ptype == 8) * auOpRetail,,0.08233, +# commented out because not used in mtctm1,,,, # Full-time worker interaction with usual work location is home,(ptype == 1) * usualWorkLocationIsHome,-1.758,,0.1813 # Part-time worker interaction with usual work location is home,(ptype == 2) * usualWorkLocationIsHome,-1.758,,0.1813 # Full-time worker interaction with no usual work location,(ptype == 1) * noUsualWorkLocation,-0.5935,, # Part-time worker interaction with no usual work location,(ptype == 2) * noUsualWorkLocation,-0.5935,, # Driving-age child who is in school interaction with no usual school location,(ptype == 6) * noUsualWorkLocation,-0.866,, # Pre-driving age child who is in school interaction with no usual school location,(ptype == 7) * noUsualWorkLocation,-0.866,, +#tm1 scenario test,,,, +#Simulate telecommuting by reducing mandatory patterns,(ptype == 1) * (income_in_thousands >= 50),-0.142930042,, diff --git a/example/configs/destination_choice_size_terms.csv b/example/configs/destination_choice_size_terms.csv index 4f01529a9..465e0b93b 100644 --- a/example/configs/destination_choice_size_terms.csv +++ b/example/configs/destination_choice_size_terms.csv @@ -1,13 +1,14 @@ -selector,segment,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE -work,work_low,0,0.129,0.193,0.383,0.12,0.01,0.164,0,0,0,0 -work,work_med,0,0.12,0.197,0.325,0.139,0.008,0.21,0,0,0,0 -work,work_high,0,0.11,0.207,0.284,0.154,0.006,0.239,0,0,0,0 -work,work_veryhigh,0,0.093,0.27,0.241,0.146,0.004,0.246,0,0,0,0 +model_selector,segment,TOTHH,RETEMPN,FPSEMPN,HEREMPN,OTHEMPN,AGREMPN,MWTEMPN,AGE0519,HSENROLL,COLLFTE,COLLPTE +workplace,work_low,0,0.129,0.193,0.383,0.12,0.01,0.164,0,0,0,0 +workplace,work_med,0,0.12,0.197,0.325,0.139,0.008,0.21,0,0,0,0 +workplace,work_high,0,0.11,0.207,0.284,0.154,0.006,0.239,0,0,0,0 +workplace,work_veryhigh,0,0.093,0.27,0.241,0.146,0.004,0.246,0,0,0,0 school,university,0,0,0,0,0,0,0,0,0,0.592,0.408 school,gradeschool,0,0,0,0,0,0,0,1,0,0,0 school,highschool,0,0,0,0,0,0,0,0,1,0,0 -non_mandatory,escort_kids,0,0.225,0,0.144,0,0,0,0.465,0.166,0,0 -non_mandatory,escort_nokids,0,0.225,0,0.144,0,0,0,0.465,0.166,0,0 +non_mandatory,escort,0,0.225,0,0.144,0,0,0,0.465,0.166,0,0 +#non_mandatory,escort_kids,0,0.225,0,0.144,0,0,0,0.465,0.166,0,0 +#non_mandatory,escort_nokids,0,0.225,0,0.144,0,0,0,0.465,0.166,0,0 non_mandatory,shopping,0,1,0,0,0,0,0,0,0,0,0 non_mandatory,eatout,0,0.742,0,0.258,0,0,0,0,0,0,0 non_mandatory,othmaint,0,0.482,0,0.518,0,0,0,0,0,0,0 diff --git a/example/configs/free_parking.csv b/example/configs/free_parking.csv new file mode 100644 index 000000000..a7edb484a --- /dev/null +++ b/example/configs/free_parking.csv @@ -0,0 +1,9 @@ +Description,Expression,free,pay +,@df.workplace_county_id == ID_SAN_FRANCISCO,-2.6403, +,@df.workplace_county_id == ID_SANTA_CLARA,0.2118, +,@df.workplace_county_id == ID_ALAMEDA,-0.1092, +Very high income household dummy,@df.income>=100000,0.2300, +High income housheold dummy,@(df.income>=60000) & (df.income<100000),0.2300, +Household size is greater than 3 dummy,@df.hhsize>3,0.2530, +More automobiles than workers dummy,@df.auto_ownership>df.num_workers,0.2310, +Fewer automobiles than workers dummy,@df.auto_ownership -1),-999,-999,,,-999 Unavailable: School tours for those with no usual school location,~(school_taz > -1),,,-999,-999,-999 diff --git a/example/configs/mandatory_tour_frequency.yaml b/example/configs/mandatory_tour_frequency.yaml index 30ba67b84..a28d28364 100644 --- a/example/configs/mandatory_tour_frequency.yaml +++ b/example/configs/mandatory_tour_frequency.yaml @@ -3,3 +3,5 @@ annotate_persons: DF: persons TABLES: - tours + +#SEGMENT_COL: tour_purpose diff --git a/example/configs/mandatory_tour_scheduling.yaml b/example/configs/mandatory_tour_scheduling.yaml new file mode 100644 index 000000000..d75c8c96d --- /dev/null +++ b/example/configs/mandatory_tour_scheduling.yaml @@ -0,0 +1,28 @@ + +SIMULATE_CHOOSER_COLUMNS: + - ptype + - hhsize + - roundtrip_auto_time_to_work + - num_workers + - income_in_thousands + - work_and_school_and_worker + - work_and_school_and_student + - workplace_in_cbd + - home_is_rural + - mandatory_tour_frequency + - is_worker + - is_student + - is_university + - workplace_taz + - school_taz + - TAZ + +LOGSUM_SETTINGS: tour_mode_choice.yaml + + +#CHOOSER_ORIG_COL_NAME: TAZ + +DESTINATION_FOR_TOUR_PURPOSE: + work: workplace_taz + school: school_taz + univ: school_taz diff --git a/example/configs/non_mandatory_tour_destination.csv b/example/configs/non_mandatory_tour_destination.csv index 62843060a..a4d2a6368 100644 --- a/example/configs/non_mandatory_tour_destination.csv +++ b/example/configs/non_mandatory_tour_destination.csv @@ -1,10 +1,10 @@ -Description,Expression,escortkids,escortnokids,shopping,eatout,othmaint,social,othdiscr -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-0.1499,-0.1499,0,-0.5609,0,-0.7841,-0.1677 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.1499,-0.1499,0,-0.5609,0,-0.7841,-0.1677 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.8671,-0.8671,-0.5655,-0.3192,-0.6055,-0.3485,-0.4955 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.2137,-0.2137,-0.1832,-0.1238,-0.1093,-0.1306,-0.1193 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.2137,-0.2137,-0.1832,-0.1238,-0.1093,-0.1306,-0.1193 -Size variable,@df[segment].apply(np.log1p),1,1,1,1,1,1,1 -No attractions,@df[segment]==0,-999,-999,-999,-999,-999,-999,-999 -Mode choice logsum,mode_choice_logsum,0.3 -Sample of alternatives correction factor,"@np.minimum(np.log(df.pick_count/df.prob), 60)",1 +Description,Expression,escort,escortkids,escortnokids,shopping,eatout,othmaint,social,othdiscr +"Distance, piecewise linear from 0 to 1 miles","@skims['DIST'].clip(0,1)",-0.1499,-0.1499,-0.1499,0,-0.5609,0,-0.7841,-0.1677 +"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.1499,-0.1499,-0.1499,0,-0.5609,0,-0.7841,-0.1677 +"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.8671,-0.8671,-0.8671,-0.5655,-0.3192,-0.6055,-0.3485,-0.4955 +"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.2137,-0.2137,-0.2137,-0.1832,-0.1238,-0.1093,-0.1306,-0.1193 +"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.2137,-0.2137,-0.2137,-0.1832,-0.1238,-0.1093,-0.1306,-0.1193 +Size variable,@df['size_term'].apply(np.log1p),1,1,1,1,1,1,1,1 +No attractions,@df['size_term']==0,-999,-999,-999,-999,-999,-999,-999,-999 +Mode choice logsum,mode_choice_logsum,0.6755,0.6755,0.6755,0.6755,0.6755,0.6755,0.6755,0.6755 +Sample of alternatives correction factor,"@np.minimum(np.log(df.pick_count/df.prob), 60)",1,1,1,1,1,1,1,1 diff --git a/example/configs/non_mandatory_tour_destination.yaml b/example/configs/non_mandatory_tour_destination.yaml index 5875a84a6..f964e9def 100644 --- a/example/configs/non_mandatory_tour_destination.yaml +++ b/example/configs/non_mandatory_tour_destination.yaml @@ -1 +1,33 @@ -SAMPLE_SIZE: 30 \ No newline at end of file +SAMPLE_SIZE: 30 + + +SIZE_TERM_SELECTOR: non_mandatory + +# we can't use use household income_segment as this will also be set for non-workers +CHOOSER_SEGMENT_COLUMN_NAME: tour_type + + + +SEGMENTS: + - shopping + - othmaint + - othdiscr + - eatout + - social + - escort + +SAMPLE_SPEC: non_mandatory_tour_destination_sample.csv +SPEC: non_mandatory_tour_destination.csv + +SIMULATE_CHOOSER_COLUMNS: + - tour_type + - TAZ + - person_id + +LOGSUM_SETTINGS: tour_mode_choice.yaml + +# model-specific logsum-related settings +CHOOSER_ORIG_COL_NAME: TAZ +ALT_DEST_COL_NAME: alt_dest +IN_PERIOD: 14 +OUT_PERIOD: 14 diff --git a/example/configs/non_mandatory_tour_destination_sample.csv b/example/configs/non_mandatory_tour_destination_sample.csv index d863d369c..d7b9a8784 100644 --- a/example/configs/non_mandatory_tour_destination_sample.csv +++ b/example/configs/non_mandatory_tour_destination_sample.csv @@ -1,8 +1,9 @@ -Description,Expression,escortkids,escortnokids,shopping,eatout,othmaint,social,othdiscr -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-0.1499,-0.1499,0,-0.5609,0,-0.7841,-0.1677 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.1499,-0.1499,0,-0.5609,0,-0.7841,-0.1677 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.8671,-0.8671,-0.5655,-0.3192,-0.6055,-0.3485,-0.4955 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.2137,-0.2137,-0.1832,-0.1238,-0.1093,-0.1306,-0.1193 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.2137,-0.2137,-0.1832,-0.1238,-0.1093,-0.1306,-0.1193 -Size variable,@df[segment].apply(np.log1p),1,1,1,1,1,1,1 -No attractions,@df[segment]==0,-999,-999,-999,-999,-999,-999,-999 +Description,Expression,escort,escortkids,escortnokids,shopping,eatout,othmaint,social,othdiscr +"Distance, piecewise linear from 0 to 1 miles","@skims['DIST'].clip(0,1)",-0.1499,-0.1499,-0.1499,0,-0.5609,0,-0.7841,-0.1677 +"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.1499,-0.1499,-0.1499,0,-0.5609,0,-0.7841,-0.1677 +"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.8671,-0.8671,-0.8671,-0.5655,-0.3192,-0.6055,-0.3485,-0.4955 +"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.2137,-0.2137,-0.2137,-0.1832,-0.1238,-0.1093,-0.1306,-0.1193 +"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.2137,-0.2137,-0.2137,-0.1832,-0.1238,-0.1093,-0.1306,-0.1193 +Size variable,@df['size_term'].apply(np.log1p),1,1,1,1,1,1,1,1 +No attractions,@df['size_term']==0,-999,-999,-999,-999,-999,-999,-999,-999 + diff --git a/example/configs/non_mandatory_tour_frequency.csv b/example/configs/non_mandatory_tour_frequency.csv index ec9d079a5..e95575ab0 100644 --- a/example/configs/non_mandatory_tour_frequency.csv +++ b/example/configs/non_mandatory_tour_frequency.csv @@ -24,12 +24,12 @@ Number of Joint Maintenance tours,num_hh_joint_maint_tours,0,0,0,0,0,0,0,0 Number of Joint Eating Out tours,num_hh_joint_eatout_tours,-0.5866,0,0,-0.7727,0,0,0,0 Number of Joint Visit tours,num_hh_joint_social_tours,0,0,0,0,0,0,0,0 Number of Joint Discretionary tours,num_hh_joint_othdiscr_tours,0,0,0.6713,0,0,0,0,0 -"Logged Maximum Residual Window, tour frequency =0",max_window*(tot_tours == 0),0,0,1.1858,0,0,0,0,0 -"Logged Maximum Residual Window, tour frequency =1",max_window*(tot_tours == 1),1.2562,1.5748,1.4842,1.7637,1.8357,1.3298,1.3298,0 -"Logged Maximum Residual Window, tour frequency =2",max_window*(tot_tours == 2),1.2868,2.0026,1.4842,1.7928,2.2707,1.3759,1.3759,0 -"Logged Maximum Residual Window, tour frequency =3",max_window*(tot_tours == 3),1.3993,2.0026,1.4842,1.7928,4.4023,3.2808,3.2808,0 -"Logged Maximum Residual Window, tour frequency =4",max_window*(tot_tours == 4),1.3993,2.0026,1.4842,1.7928,4.4023,3.2808,3.2808,0 -"Logged Maximum Residual Window, tour frequency =5+",max_window*(tot_tours > 4),1.3993,2.0026,1.4842,1.7928,4.4023,3.2808,3.2808,0 +"Logged Maximum Residual Window, tour frequency =0",((num_mand > 0) | (num_hh_joint_tours > 0)) * log_max_window*(tot_tours == 0),0,0,1.1858,0,0,0,0,0 +"Logged Maximum Residual Window, tour frequency =1",((num_mand > 0) | (num_hh_joint_tours > 0)) * log_max_window*(tot_tours == 1),1.2562,1.5748,1.4842,1.7637,1.8357,1.3298,1.3298,0 +"Logged Maximum Residual Window, tour frequency =2",((num_mand > 0) | (num_hh_joint_tours > 0)) * log_max_window*(tot_tours == 2),1.2868,2.0026,1.4842,1.7928,2.2707,1.3759,1.3759,0 +"Logged Maximum Residual Window, tour frequency =3",((num_mand > 0) | (num_hh_joint_tours > 0)) * log_max_window*(tot_tours == 3),1.3993,2.0026,1.4842,1.7928,4.4023,3.2808,3.2808,0 +"Logged Maximum Residual Window, tour frequency =4",((num_mand > 0) | (num_hh_joint_tours > 0)) * log_max_window*(tot_tours == 4),1.3993,2.0026,1.4842,1.7928,4.4023,3.2808,3.2808,0 +"Logged Maximum Residual Window, tour frequency =5+",((num_mand > 0) | (num_hh_joint_tours > 0)) * log_max_window*(tot_tours > 4),1.3993,2.0026,1.4842,1.7928,4.4023,3.2808,3.2808,0 Dummy for Mediumlow Income group (20K-50K) & tour frequency=1,medium_low_income & (tot_tours == 1),0.4981,0.5981,0,0.5709,0,0,0,0 Dummy for Mediumlow Income group (20K-50K) & tour frequency=2,medium_low_income & (tot_tours == 2),0.8345,0.9178,0,0.8315,0,0,0,0 Dummy for Mediumlow Income group (20K-50K) & tour frequency=3,medium_low_income & (tot_tours == 3),1.0213,1.7539,0,0.8315,0,0,0,0 @@ -75,16 +75,16 @@ Dummy for zero car ownership & tour frequency =2,no_cars & (tot_tours == 2),-0.3 Dummy for zero car ownership & tour frequency =3,no_cars & (tot_tours == 3),-0.3486,-0.5498,-0.581,-1.9307,0,-0.6369,-0.6369,0 Dummy for zero car ownership & tour frequency =4,no_cars & (tot_tours == 4),-0.3486,-0.5498,-0.581,-1.9307,0,-0.6369,-0.6369,0 Dummy for zero car ownership & tour frequency =5+,no_cars & (tot_tours > 4),-0.3486,-0.5498,-0.581,-1.9307,0,-0.6369,-0.6369,0 -Dummy for Car Shortage vs Workers & tour frequency =1,(car_sufficiency < 0) & (tot_tours == 1),0,-0.5498,-0.581,-0.3623,0,-0.6369,-0.6369,0 -Dummy for Car Shortage vs Workers & tour frequency =2,(car_sufficiency < 0) & (tot_tours == 2),0,-0.5498,-0.581,-1.272,0,-0.6369,-0.6369,0 -Dummy for Car Shortage vs Workers & tour frequency =3,(car_sufficiency < 0) & (tot_tours == 3),0,-0.5498,-0.581,-1.9307,0,-0.6369,-0.6369,0 -Dummy for Car Shortage vs Workers & tour frequency =4,(car_sufficiency < 0) & (tot_tours == 4),0,-0.5498,-0.581,-1.9307,0,-0.6369,-0.6369,0 -Dummy for Car Shortage vs Workers & tour frequency =5+,(car_sufficiency < 0) & (tot_tours > 4),0,-0.5498,-0.581,-1.9307,0,-0.6369,-0.6369,0 -Dummy for Car Surplus vs Workers & tour frequency =1,(car_sufficiency > 0) & (tot_tours == 1),0.1304,0,0,0.7738,0.7965,0.2902,0.2902,0 -Dummy for Car Surplus vs Workers & tour frequency =2,(car_sufficiency > 0) & (tot_tours == 2),0.1304,0,0,0.7738,2.1302,2.0352,2.0352,0 -Dummy for Car Surplus vs Workers & tour frequency =3,(car_sufficiency > 0) & (tot_tours == 3),0.1304,0,0,0.7738,2.1302,2.0352,2.0352,0 -Dummy for Car Surplus vs Workers & tour frequency =4,(car_sufficiency > 0) & (tot_tours == 4),0.1304,0,0,0.7738,2.1302,2.0352,2.0352,0 -Dummy for Car Surplus vs Workers & tour frequency =5+,(car_sufficiency > 0) & (tot_tours > 4),0.1304,0,0,0.7738,2.1302,2.0352,2.0352,0 +Dummy for Car Shortage vs Workers & tour frequency =1,~no_cars & (car_sufficiency < 0) & (tot_tours == 1),0,-0.5498,-0.581,-0.3623,0,-0.6369,-0.6369,0 +Dummy for Car Shortage vs Workers & tour frequency =2,~no_cars & (car_sufficiency < 0) & (tot_tours == 2),0,-0.5498,-0.581,-1.272,0,-0.6369,-0.6369,0 +Dummy for Car Shortage vs Workers & tour frequency =3,~no_cars & (car_sufficiency < 0) & (tot_tours == 3),0,-0.5498,-0.581,-1.9307,0,-0.6369,-0.6369,0 +Dummy for Car Shortage vs Workers & tour frequency =4,~no_cars & (car_sufficiency < 0) & (tot_tours == 4),0,-0.5498,-0.581,-1.9307,0,-0.6369,-0.6369,0 +Dummy for Car Shortage vs Workers & tour frequency =5+,~no_cars & (car_sufficiency < 0) & (tot_tours > 4),0,-0.5498,-0.581,-1.9307,0,-0.6369,-0.6369,0 +Dummy for Car Surplus vs Workers & tour frequency =1,~no_cars & (car_sufficiency > 0) & (tot_tours == 1),0.1304,0,0,0.7738,0.7965,0.2902,0.2902,0 +Dummy for Car Surplus vs Workers & tour frequency =2,~no_cars & (car_sufficiency > 0) & (tot_tours == 2),0.1304,0,0,0.7738,2.1302,2.0352,2.0352,0 +Dummy for Car Surplus vs Workers & tour frequency =3,~no_cars & (car_sufficiency > 0) & (tot_tours == 3),0.1304,0,0,0.7738,2.1302,2.0352,2.0352,0 +Dummy for Car Surplus vs Workers & tour frequency =4,~no_cars & (car_sufficiency > 0) & (tot_tours == 4),0.1304,0,0,0.7738,2.1302,2.0352,2.0352,0 +Dummy for Car Surplus vs Workers & tour frequency =5+,~no_cars & (car_sufficiency > 0) & (tot_tours > 4),0.1304,0,0,0.7738,2.1302,2.0352,2.0352,0 Dummy for Presence of Non-Worker(other than modeled person) & tour frequency =1,has_non_worker & (tot_tours == 1),0,0,-0.8506,-0.3763,0.224,0,0,0 Dummy for Presence of Non-Worker(other than modeled person) & tour frequency =2,has_non_worker & (tot_tours == 2),0,0,-1.1804,-0.719,0.2436,-0.6571,-0.6571,0 Dummy for Presence of Non-Worker(other than modeled person) & tour frequency =3,has_non_worker & (tot_tours == 3),0,0,-1.1804,-1.0229,0.62,-1.4044,-1.4044,0 diff --git a/example/configs/non_mandatory_tour_frequency_annotate_persons_preprocessor.csv b/example/configs/non_mandatory_tour_frequency_annotate_persons_preprocessor.csv index 30298dda5..621c31950 100644 --- a/example/configs/non_mandatory_tour_frequency_annotate_persons_preprocessor.csv +++ b/example/configs/non_mandatory_tour_frequency_annotate_persons_preprocessor.csv @@ -16,4 +16,6 @@ Description,Target,Expression # not used,,num_hh_joint_maint_tours,"reindex_i(_JOINT_TOURS[_JOINT_TOURS.tour_type=='maint'].groupby('household_id').size(), persons.household_id)" # not used,num_hh_joint_social_tours,"reindex_i(_JOINT_TOURS[_JOINT_TOURS.tour_type=='social'].groupby('household_id').size(), persons.household_id)" ,num_hh_joint_othdiscr_tours,"reindex_i(_JOINT_TOURS[_JOINT_TOURS.tour_type=='othdiscr'].groupby('household_id').size(), persons.household_id)" - +# non_mandatory tour frequency extension,, +,has_mandatory_tour,(persons.num_mand > 0) * 1 +,has_joint_tour,(persons.num_joint_tours > 0) * 1 diff --git a/example/configs/non_mandatory_tour_frequency_extension_probs.csv b/example/configs/non_mandatory_tour_frequency_extension_probs.csv new file mode 100644 index 000000000..ec78c4c8e --- /dev/null +++ b/example/configs/non_mandatory_tour_frequency_extension_probs.csv @@ -0,0 +1,193 @@ +ptype,has_mandatory_tour,has_joint_tour,nonmandatory_tour_type,0_tours,1_tours,2_tours +1,0,0,1,0.829545455,1,1 +2,0,0,1,0.769230769,1,1 +3,0,0,1,0.893939394,1,1 +4,0,0,1,0.75,1,1 +5,0,0,1,0.842105263,1,1 +6,0,0,1,0.714285714,1,1 +7,0,0,1,0.814814815,1,1 +8,0,0,1,0.75,1,1 +1,1,0,1,0.789473684,1,1 +2,1,0,1,0.6,1,1 +3,1,0,1,1,1,1 +4,1,0,1,1,1,1 +5,1,0,1,0.825910931,1,1 +6,1,0,1,0.837209302,1,1 +7,1,0,1,0.6,1,1 +8,1,0,1,1,1,1 +1,0,1,1,0.842105263,1,1 +2,0,1,1,1,1,1 +3,0,1,1,1,1,1 +4,0,1,1,1,1,1 +5,0,1,1,1,1,1 +6,0,1,1,1,1,1 +7,0,1,1,1,1,1 +8,0,1,1,1,1,1 +1,1,1,1,1,1,1 +2,1,1,1,1,1,1 +3,1,1,1,1,1,1 +4,1,1,1,1,1,1 +5,1,1,1,0.777777778,1,1 +6,1,1,1,1,1,1 +7,1,1,1,1,1,1 +8,1,1,1,1,1,1 +1,0,0,2,0.892694064,0.99086758,1 +2,0,0,2,0.84057971,0.992753623,1 +3,0,0,2,0.971014493,1,1 +4,0,0,2,0.96969697,1,1 +5,0,0,2,0.870056497,0.994350282,1 +6,0,0,2,0.866666667,1,1 +7,0,0,2,0.971014493,1,1 +8,0,0,2,0.931034483,1,1 +1,1,0,2,0.885057471,1,1 +2,1,0,2,0.727272727,1,1 +3,1,0,2,0.971428571,1,1 +4,1,0,2,1,1,1 +5,1,0,2,0.895977809,0.993065187,1 +6,1,0,2,0.885185185,1,1 +7,1,0,2,1,1,1 +8,1,0,2,1,1,1 +1,0,1,2,0.910087719,0.993421053,1 +2,0,1,2,0.88,1,1 +3,0,1,2,0.8,1,1 +4,0,1,2,1,1,1 +5,0,1,2,1,1,1 +6,0,1,2,1,1,1 +7,0,1,2,1,1,1 +8,0,1,2,1,1,1 +1,1,1,2,1,1,1 +2,1,1,2,1,1,1 +3,1,1,2,1,1,1 +4,1,1,2,1,1,1 +5,1,1,2,1,1,1 +6,1,1,2,0.964912281,1,1 +7,1,1,2,1,1,1 +8,1,1,2,0.888888889,1,1 +1,0,0,3,0.935643564,0.997524752,1 +2,0,0,3,0.905660377,1,1 +3,0,0,3,0.978813559,1,1 +4,0,0,3,0.928571429,1,1 +5,0,0,3,0.901515152,0.992424242,1 +6,0,0,3,0.863636364,1,1 +7,0,0,3,0.947368421,1,1 +8,0,0,3,0.913043478,1,1 +1,1,0,3,0.893333333,0.986666667,1 +2,1,0,3,1,1,1 +3,1,0,3,1,1,1 +4,1,0,3,0.857142857,1,1 +5,1,0,3,0.916071429,0.996428571,1 +6,1,0,3,0.856382979,0.984042553,1 +7,1,0,3,1,1,1 +8,1,0,3,1,1,1 +1,0,1,3,0.916201117,0.991620112,1 +2,0,1,3,0.912280702,0.98245614,1 +3,0,1,3,1,1,1 +4,0,1,3,1,1,1 +5,0,1,3,1,1,1 +6,0,1,3,0.833333333,1,1 +7,0,1,3,0.961538462,1,1 +8,0,1,3,1,1,1 +1,1,1,3,0.97826087,0.989130435,1 +2,1,1,3,0.97260274,1,1 +3,1,1,3,1,1,1 +4,1,1,3,1,1,1 +5,1,1,3,0.995762712,1,1 +6,1,1,3,0.921568627,0.980392157,1 +7,1,1,3,1,1,1 +8,1,1,3,1,1,1 +1,0,0,4,0.9218107,0.995884774,1 +2,0,0,4,0.900900901,1,1 +3,0,0,4,0.997354497,1,1 +4,0,0,4,0.991176471,1,1 +5,0,0,4,0.921568627,0.980392157,1 +6,0,0,4,0.954545455,1,1 +7,0,0,4,1,1,1 +8,0,0,4,0.954545455,1,1 +1,1,0,4,0.941176471,0.970588235,1 +2,1,0,4,0.925925926,1,1 +3,1,0,4,1,1,1 +4,1,0,4,0.875,1,1 +5,1,0,4,0.915322581,1,1 +6,1,0,4,0.947674419,0.994186047,1 +7,1,0,4,0.666666667,1,1 +8,1,0,4,1,1,1 +1,0,1,4,0.925925926,0.987654321,1 +2,0,1,4,0.903703704,1,1 +3,0,1,4,1,1,1 +4,0,1,4,1,1,1 +5,0,1,4,1,1,1 +6,0,1,4,1,1,1 +7,0,1,4,1,1,1 +8,0,1,4,1,1,1 +1,1,1,4,1,1,1 +2,1,1,4,0.911111111,1,1 +3,1,1,4,1,1,1 +4,1,1,4,1,1,1 +5,1,1,4,1,1,1 +6,1,1,4,0.962962963,1,1 +7,1,1,4,1,1,1 +8,1,1,4,1,1,1 +1,0,0,5,0.976744186,1,1 +2,0,0,5,0.981818182,1,1 +3,0,0,5,0.985915493,1,1 +4,0,0,5,1,1,1 +5,0,0,5,1,1,1 +6,0,0,5,1,1,1 +7,0,0,5,1,1,1 +8,0,0,5,0.875,1,1 +1,1,0,5,1,1,1 +2,1,0,5,1,1,1 +3,1,0,5,0.964285714,1,1 +4,1,0,5,1,1,1 +5,1,0,5,0.985714286,1,1 +6,1,0,5,0.951807229,1,1 +7,1,0,5,1,1,1 +8,1,0,5,1,1,1 +1,0,1,5,0.926605505,1,1 +2,0,1,5,0.941176471,1,1 +3,0,1,5,1,1,1 +4,0,1,5,1,1,1 +5,0,1,5,1,1,1 +6,0,1,5,1,1,1 +7,0,1,5,1,1,1 +8,0,1,5,1,1,1 +1,1,1,5,1,1,1 +2,1,1,5,1,1,1 +3,1,1,5,0.972972973,1,1 +4,1,1,5,1,1,1 +5,1,1,5,1,1,1 +6,1,1,5,0.933333333,1,1 +7,1,1,5,1,1,1 +8,1,1,5,1,1,1 +1,0,0,6,0.93837535,0.988795518,1 +2,0,0,6,0.888888889,1,1 +3,0,0,6,0.966832504,0.998341625,1 +4,0,0,6,0.942028986,1,1 +5,0,0,6,0.88034188,1,1 +6,0,0,6,0.925925926,1,1 +7,0,0,6,0.967741935,1,1 +8,0,0,6,0.90625,1,1 +1,1,0,6,0.85915493,1,1 +2,1,0,6,0.818181818,0.96969697,1 +3,1,0,6,1,1,1 +4,1,0,6,0.952380952,1,1 +5,1,0,6,0.879237288,0.997881356,1 +6,1,0,6,0.862944162,0.984771574,1 +7,1,0,6,0.9,1,1 +8,1,0,6,1,1,1 +1,0,1,6,0.927835052,0.996563574,1 +2,0,1,6,0.859375,0.9921875,1 +3,0,1,6,1,1,1 +4,0,1,6,1,1,1 +5,0,1,6,0.92,1,1 +6,0,1,6,1,1,1 +7,0,1,6,0.904761905,1,1 +8,0,1,6,1,1,1 +1,1,1,6,0.982758621,1,1 +2,1,1,6,0.927710843,0.987951807,1 +3,1,1,6,0.982954545,1,1 +4,1,1,6,0.938679245,1,1 +5,1,1,6,1,1,1 +6,1,1,6,0.9375,1,1 +7,1,1,6,1,1,1 +8,1,1,6,1,1,1 diff --git a/example/configs/non_mandatory_tour_scheduling.yaml b/example/configs/non_mandatory_tour_scheduling.yaml index 3aabb44d7..68a7af64f 100644 --- a/example/configs/non_mandatory_tour_scheduling.yaml +++ b/example/configs/non_mandatory_tour_scheduling.yaml @@ -6,3 +6,12 @@ preprocessor: TABLES: - land_use - joint_tour_participants + +SIMULATE_CHOOSER_COLUMNS: + - ptype + - num_children + - roundtrip_auto_time_to_work + - num_mand + - num_escort_tours + - num_non_escort_tours + - adult diff --git a/example/configs/school_location.csv b/example/configs/school_location.csv index c771116ca..49dceddbd 100644 --- a/example/configs/school_location.csv +++ b/example/configs/school_location.csv @@ -1,11 +1,12 @@ Description,Expression,university,highschool,gradeschool -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-3.2451,-0.9523,-1.6419 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-2.7011,-0.5700,-0.5700 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.5707,-0.5700,-0.5700 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.5002,-0.1930,-0.2031 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.0730,-0.1882,-0.0460 -Size variable,@df[segment].apply(np.log1p),1.0000,1.0000,1.0000 -No attractions,@df[segment]==0,-999.0000,-999.0000,-999.0000 +,_DIST@skims['DIST'],1,1,1 +"Distance, piecewise linear from 0 to 1 miles","@_DIST.clip(0,1)",-3.2451,-0.9523,-1.6419 +"Distance, piecewise linear from 1 to 2 miles","@(_DIST-1).clip(0,1)",-2.7011,-0.57,-0.57 +"Distance, piecewise linear from 2 to 5 miles","@(_DIST-2).clip(0,3)",-0.5707,-0.57,-0.57 +"Distance, piecewise linear from 5 to 15 miles","@(_DIST-5).clip(0,10)",-0.5002,-0.193,-0.2031 +"Distance, piecewise linear for 15+ miles",@(_DIST-15.0).clip(0),-0.073,-0.1882,-0.046 +Size variable,@(df['size_term'] * df['shadow_price_size_term_adjustment']).apply(np.log1p),1,1,1 +utility adjustment,@df['shadow_price_utility_adjustment'],1,1,1 +No attractions,@df['size_term']==0,-999,-999,-999 Mode choice logsum,mode_choice_logsum,0.5358,0.5358,0.5358 -"Sample of alternatives correction factor","@np.minimum(np.log(df.pick_count/df.prob), 60)",1 - +Sample of alternatives correction factor,"@np.minimum(np.log(df.pick_count/df.prob), 60)",1,1,1 diff --git a/example/configs/school_location.yaml b/example/configs/school_location.yaml index 83813ad50..5132c6ea6 100644 --- a/example/configs/school_location.yaml +++ b/example/configs/school_location.yaml @@ -2,22 +2,56 @@ SAMPLE_SIZE: 30 SIMULATE_CHOOSER_COLUMNS: - TAZ - - is_university - - is_highschool - - is_gradeschool - - -LOGSUM_SETTINGS: tour_mode_choice.yaml -LOGSUM_PREPROCESSOR: nontour_preprocessor - + - school_segment + - household_id # model-specific logsum-related settings CHOOSER_ORIG_COL_NAME: TAZ ALT_DEST_COL_NAME: alt_dest -IN_PERIOD: 8 -OUT_PERIOD: 17 +IN_PERIOD: 14 +OUT_PERIOD: 8 + +DEST_CHOICE_COLUMN_NAME: school_taz + +SAMPLE_SPEC: school_location_sample.csv +SPEC: school_location.csv + +LOGSUM_SETTINGS: tour_mode_choice.yaml +LOGSUM_PREPROCESSOR: nontour_preprocessor +LOGSUM_TOUR_PURPOSE: + university: univ + highschool: school + gradeschool: school annotate_persons: SPEC: annotate_persons_school DF: persons + +# - shadow pricing + +# required by initialize_households when creating school_destination_size table +CHOOSER_TABLE_NAME: persons + +# size_terms model_selector +MODEL_SELECTOR: school + +# chooser column with segment_id for this segment type +CHOOSER_SEGMENT_COLUMN_NAME: school_segment + +# boolean column to filter choosers (True means keep) +CHOOSER_FILTER_COLUMN_NAME: is_student + + +# FIXME - these are assigned to persons in annotate_persons. we need a better way to manage this +SEGMENT_IDS: + university: 3 + highschool: 2 + gradeschool: 1 + +# model adds these tables (informational - not added if commented out) +SHADOW_PRICE_TABLE: school_shadow_prices +MODELED_SIZE_TABLE: school_modeled_size + +# not loaded if commented out +SAVED_SHADOW_PRICE_TABLE_NAME: school_shadow_prices.csv diff --git a/example/configs/school_location_sample.csv b/example/configs/school_location_sample.csv index c66526b1a..6da18a838 100644 --- a/example/configs/school_location_sample.csv +++ b/example/configs/school_location_sample.csv @@ -1,8 +1,10 @@ Description,Expression,university,highschool,gradeschool -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-3.2451,-0.9523,-1.6419 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-2.7011,-0.5700,-0.5700 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.5707,-0.5700,-0.5700 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.5002,-0.1930,-0.2031 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.0730,-0.1882,-0.0460 -Size variable,@df[segment].apply(np.log1p),1.0000,1.0000,1.0000 -No attractions,@df[segment]==0,-999.0000,-999.0000,-999.0000 +,_DIST@skims['DIST'],1,1,1 +"Distance, piecewise linear from 0 to 1 miles","@_DIST.clip(0,1)",-3.2451,-0.9523,-1.6419 +"Distance, piecewise linear from 1 to 2 miles","@(_DIST-1).clip(0,1)",-2.7011,-0.57,-0.57 +"Distance, piecewise linear from 2 to 5 miles","@(_DIST-2).clip(0,3)",-0.5707,-0.57,-0.57 +"Distance, piecewise linear from 5 to 15 miles","@(_DIST-5).clip(0,10)",-0.5002,-0.193,-0.2031 +"Distance, piecewise linear for 15+ miles",@(_DIST-15.0).clip(0),-0.073,-0.1882,-0.046 +Size variable,@(df['size_term'] * df['shadow_price_size_term_adjustment']).apply(np.log1p),1,1,1 +utility adjustment,@df['shadow_price_utility_adjustment'],1,1,1 +No attractions,@df['size_term']==0,-999,-999,-999 diff --git a/example/configs/settings.yaml b/example/configs/settings.yaml index 5c9521e32..f94c61b33 100644 --- a/example/configs/settings.yaml +++ b/example/configs/settings.yaml @@ -1,52 +1,58 @@ #input data store and skims -store: mtc_asim.h5 +input_store: mtc_asim.h5 skims_file: skims.omx #number of households to simulate -households_sample_size: 100 +households_sample_size: 100 +# simulate all households +#households_sample_size: 0 -#trace household id; comment out for no trace -# household with all tour categories -trace_hh_id: 1269102 +chunk_size: 0 -# trace origin, destination in accessibility calculation -#trace_od: [5, 11] +# set false to disable variability check in simple_simulate and interaction_simulate +check_for_variability: False -#internal settings -chunk_size: 400000000 +# - shadow pricing global switches +# turn shadow_pricing on and off for all models (e.g. school and work) +# shadow pricing is deprecated for less than full samples +use_shadow_pricing: False + + +# - tracing + +#trace household id; comment out or leave empty for no trace +# households with all tour types +# [ 728370 1234067 1402924 1594625 1595333 1747572 1896849 1931818 2222690 2344951 2677154] +trace_hh_id: 701664 + +# trace origin, destination in accessibility calculation; comment out or leave empty for no trace +#trace_od: [5, 11] +trace_od: -# comment out or set false to disable variability check in simple_simulate and interaction_simulate -check_for_variability: False models: - - initialize + - initialize_landuse - compute_accessibility - - school_location_sample - - school_location_logsums - - school_location_simulate - - workplace_location_sample - - workplace_location_logsums - - workplace_location_simulate + - initialize_households + - school_location + - workplace_location - auto_ownership_simulate + - free_parking - cdap_simulate - mandatory_tour_frequency - mandatory_tour_scheduling - joint_tour_frequency - joint_tour_composition - joint_tour_participation - - joint_tour_destination_sample - - joint_tour_destination_logsums - - joint_tour_destination_simulate + - joint_tour_destination - joint_tour_scheduling - non_mandatory_tour_frequency - non_mandatory_tour_destination - non_mandatory_tour_scheduling - tour_mode_choice_simulate - atwork_subtour_frequency - - atwork_subtour_destination_sample - - atwork_subtour_destination_logsums - - atwork_subtour_destination_simulate + - atwork_subtour_destination - atwork_subtour_scheduling - atwork_subtour_mode_choice - stop_frequency @@ -56,43 +62,60 @@ models: - trip_scheduling - trip_mode_choice - write_data_dictionary + - track_skim_usage - write_tables -#resume_after: joint_tour_destination_simulate +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: trip_mode_choice output_tables: action: include prefix: final_ tables: - checkpoints -# - tours -# - trips + - accessibility + - land_use + - households + - persons + - tours + - trips # area_types less than this are considered urban urban_threshold: 4 cbd_threshold: 2 rural_threshold: 6 -grade_school_max_age: 14 - -county_map: - San Francisco: 1 - San Mateo: 2 - Santa Clara: 3 - Alameda: 4 - Contra Costa: 5 - Solano: 6 - Napa: 7 - Sonoma: 8 - Marin: 9 +#upperEA Upper limit on time of day for the Early morning time period 5 +#upperAM Upper limit on time of day for the AM peak time period 10 +#upperMD Upper limit on time of day for the Midday time period 15 +#upperPM Upper limit on time of day for the PM time peak period 19 skim_time_periods: hours: - 0 + - 6 - 11 - 16 + - 20 - 24 labels: + - EA - AM - MD - PM + - EV + +# - value of time + +# value_of_time = lognormal(np.log(median_value_of_time * mu), sigma).clip(min_vot, max_vot) + +min_value_of_time: 1 +max_value_of_time: 50 +distributed_vot_mu: 0.684 +distributed_vot_sigma: 0.85 + +household_median_value_of_time: + 1: 6.01 + 2: 8.81 + 3: 10.44 + 4: 12.86 diff --git a/example/configs/shadow_pricing.yaml b/example/configs/shadow_pricing.yaml new file mode 100644 index 000000000..b61ec4192 --- /dev/null +++ b/example/configs/shadow_pricing.yaml @@ -0,0 +1,34 @@ +shadow_pricing_models: + school: school_location + workplace: workplace_location + +# global switch to enable/disable loading of saved shadow prices +# (ignored if global use_shadow_pricing switch is False) +LOAD_SAVED_SHADOW_PRICES: True + +# number of shadow price iterations for cold start +MAX_ITERATIONS: 10 + +# number of shadow price iterations for warm start (after loading saved shadow_prices) +MAX_ITERATIONS_SAVED: 1 + +# ignore criteria for zones smaller than size_threshold +SIZE_THRESHOLD: 10 + +# zone passes if modeled is within percent_tolerance of predicted_size +PERCENT_TOLERANCE: 5 + +# max percentage of zones allowed to fail +FAIL_THRESHOLD: 10 + +# CTRAMP or daysim +SHADOW_PRICE_METHOD: ctramp +#SHADOW_PRICE_METHOD: daysim + +# ctramp-style shadow_pricing_method parameters +DAMPING_FACTOR: 1 + +# daysim-style shadow_pricing_method parameters +# FIXME should these be the same as PERCENT_TOLERANCE and FAIL_THRESHOLD above? +DAYSIM_ABSOLUTE_TOLERANCE: 50 +DAYSIM_PERCENT_TOLERANCE: 10 diff --git a/example/configs/stop_frequency_annotate_tours_preprocessor.csv b/example/configs/stop_frequency_annotate_tours_preprocessor.csv index 9e658848e..0cf45ea67 100644 --- a/example/configs/stop_frequency_annotate_tours_preprocessor.csv +++ b/example/configs/stop_frequency_annotate_tours_preprocessor.csv @@ -26,23 +26,22 @@ Number of Adults (>= 16 years old),num_adult,"reindex_i(_HH_PERSON_COUNT('age >= ,num_univ_tours,(df.is_university) * num_school_tours #num_escort_tours already defined,, # indiv tour counts should not include joint tours by point_person,, -,num_shop_tours,"reindex_i(df[~is_joint & (df.tour_type==SHOP_TOUR)].groupby('person_id').size(), df.person_id)" -,num_maint_tours,"reindex_i(df[~is_joint & (df.tour_type==MAINT_TOUR)].groupby('person_id').size(), df.person_id)" -,num_eatout_tours,"reindex_i(df[~is_joint & (df.tour_type==EATOUT_TOUR)].groupby('person_id').size(), df.person_id)" -,num_social_tours,"reindex_i(df[~is_joint & (df.tour_type==SOCIAL_TOUR)].groupby('person_id').size(), df.person_id)" +#,num_shop_tours,"reindex_i(df[~is_joint & (df.tour_type==SHOP_TOUR)].groupby('person_id').size(), df.person_id)" +#,num_maint_tours,"reindex_i(df[~is_joint & (df.tour_type==MAINT_TOUR)].groupby('person_id').size(), df.person_id)" +#,num_eatout_tours,"reindex_i(df[~is_joint & (df.tour_type==EATOUT_TOUR)].groupby('person_id').size(), df.person_id)" +#,num_social_tours,"reindex_i(df[~is_joint & (df.tour_type==SOCIAL_TOUR)].groupby('person_id').size(), df.person_id)" #,, Number of subtours in the tour,num_atwork_subtours,"df.atwork_subtour_frequency.map(num_atwork_subtours_map, na_action='ignore').fillna(0).astype(np.int8)" #,, Number of hh shop tours including joint,num_hh_shop_tours,"reindex_i(df[df.tour_type==SHOP_TOUR].groupby('household_id').size(), df.person_id)" Number of hh maint tours including joint,num_hh_maint_tours,"reindex_i(df[df.tour_type==MAINT_TOUR].groupby('household_id').size(), df.person_id)" -# FIXME - need hhacc and pracc,, -,_outbound_is_peak,"(df.start>=setting('start_am_peak')) & (df.end<=setting('end_am_peak'))" +tourStartsInPeakPeriod,_tour_starts_in_peak,skim_time_period_label(df.start) == 'AM' AccesibilityAtOrigin fallback,hhacc,0 -AccesibilityAtOrigin if transit,hhacc,"hhacc.where(~tour_mode_is_transit, df.trPkRetail.where(_outbound_is_peak, df.trOpRetail))" +AccesibilityAtOrigin if transit,hhacc,"hhacc.where(~tour_mode_is_transit, df.trPkRetail.where(_tour_starts_in_peak, df.trOpRetail))" AccesibilityAtOrigin if non_motorized,hhacc,"hhacc.where(~tour_mode_is_non_motorized, df.nmRetail)" AccesibilityADestination fallback,pracc,0 AccesibilityADestination peak transit,_dest_trPkRetail,"reindex(accessibility.trPkRetail, df.destination)" AccesibilityADestination off-peak transit,_dest_trOpRetail,"reindex(accessibility.trOpRetail, df.destination)" -AccesibilityAtDestination if transit,pracc,"pracc.where(~tour_mode_is_transit, _dest_trPkRetail.where(_outbound_is_peak, _dest_trOpRetail))" +AccesibilityAtDestination if transit,pracc,"pracc.where(~tour_mode_is_transit, _dest_trPkRetail.where(_tour_starts_in_peak, _dest_trOpRetail))" AccesibilityAtDestination if non_motorized,pracc,"pracc.where(~tour_mode_is_non_motorized, reindex(accessibility.nmRetail, df.destination))" ,destination_area_type,"reindex(land_use.area_type, df.destination)" diff --git a/example/configs/stop_frequency_work.csv b/example/configs/stop_frequency_work.csv index 12abe662e..72139ac62 100644 --- a/example/configs/stop_frequency_work.csv +++ b/example/configs/stop_frequency_work.csv @@ -1,46 +1,46 @@ Description,Expression,0out_0in,0out_1in,0out_2in,0out_3in,1out_0in,1out_1in,1out_2in,1out_3in,2out_0in,2out_1in,2out_2in,2out_3in,3out_0in,3out_1in,3out_2in,3out_3in -Middle to Low Income HH,(income_in_thousands>19999) & (income_in_thousands<50000),,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700,0.1700 -Mid to High Income HH,(income_in_thousands>=50000) & (income_in_thousands<100000),,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300,0.2300 -High Income HH,(income_in_thousands>=100000),,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400,0.2400 -Number of HH Persons,hhsize,,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100,-0.3100 -Number of full time workers in HH,num_full,,,,,,,,,,,,,,, -Number of Students in HH,num_student,,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100,0.2100 -Num Kids between 0 and 4 (including) years old,num_age_0_4,,,,,,,,,,,,,,, -Presence of Kids between 0 and 4 (including) years old,(num_age_0_4 > 0),,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400,0.7400 -Num kids between 5 and 15 (including) years old,num_age_5_15,,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800,0.0800 -Presence of kids between 5 and 15 (including) years old,(num_age_5_15 > 0),,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600,0.2600 -Number of Adults (>= 16 years old),num_adult,,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300,0.0300 -Dummy for single parent household,(num_adult == 1) & (num_age_0_4 + num_age_5_15 > 0),,,,,,,,,,,,,,, -Number of Cars > Number of Workers,more_cars_than_workers,,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600,0.1600 -Number of Vehicles,auto_ownership,,,,,,,,,,,,,,, -Dummy for female,female,,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200,0.2200 -Dummy for all stops made by transit,tour_mode_is_transit,,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700,-0.700 -Dummy for walking to all stops,tour_mode_is_non_motorized,,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400,-1.5400 -Number of work tours undertaken by the person,num_work_tours,,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500,-0.1500 -Number of university tours tours undertaken by the person,num_univ_tours,,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800,-0.4800 -Number of school tours tours undertaken by the person,num_school_tours,,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500,-1.5500 -Number of escort tours tours undertaken by the person,num_escort_tours,,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000,0.2000 -#Number of shop tours undertaken by the person,num_shop_tours,,,,,,,,,,,,,,, -#Number of maintenace tours tours undertaken by the person,num_maint_tours,,,,,,,,,,,,,,, -#Number of eating tours tours undertaken by the person,num_eatout_tours,,,,,,,,,,,,,,, -#Number of visit tours tours undertaken by the person,num_social_tours,,,,,,,,,,,,,,, -Number of shop tours undertaken by the houshold,num_hh_shop_tours,,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500,-0.0500 -AM Peak departure between 6AM and 7 AM (including) Interacted with outbound tours,(start>5) & (start<8),,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300,-1.9300 -Arrival later than 17:00.,(end > 16),,,,,,,,,,,,,,, -Evening Arrival (>=19:00) Interacted with return tours,(end > 18),,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100,0.3100 -Dummy for the duration of the tour being equal or greater than or equal to 11 hours,(duration > 10),,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000,0.6000 -Dummy for the duration of the tour being equal or greater than or equal to 9 hours ,(duration > 8),,,,,,,,,,,,,,, -Dummy for the duration of the tour being equal or greater than or equal to 3 hours ,(duration > 2),,,,,,,,,,,,,,, -HH accesibility for outbound tours. Interaction,hhacc,,,,,,,,,,,,,,, -HH accesibility for inbound tours. Interaction,hhacc,,,,,,,,,,,,,,, -Primary Destination Accessibility for outbound tours. Interaction,pracc,,,,,,,,,,,,,,, -Primary Destination Accessibility for return tours. Interaction,pracc,,,,,,,,,,,,,,, -dummy for distance less than 20 Miles,(distance_in_miles < 20),,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200,-0.2200 -dummy for distance in miles,distance_in_miles,,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100,0.0100 -#distance in miles * Number of stops,distance_in_miles * @@numStopsAlt,,,,,,,,,,,,,,, +Middle to Low Income HH,(income_in_thousands>19999) & (income_in_thousands<50000),,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17 +Mid to High Income HH,(income_in_thousands>=50000) & (income_in_thousands<100000),,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23,0.23 +High Income HH,(income_in_thousands>=100000),,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24,0.24 +Number of HH Persons,hhsize,,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31,-0.31 +Number of full time workers in HH,num_full,,,,,,,,,,,,,,,, +Number of Students in HH,num_student,,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21 +Num Kids between 0 and 4 (including) years old,num_age_0_4,,,,,,,,,,,,,,,, +Presence of Kids between 0 and 4 (including) years old,(num_age_0_4 > 0),,0.74,0.74,0.74,0.74,0.74,0.74,0.74,0.74,0.74,0.74,0.74,0.74,0.74,0.74,0.74 +Num kids between 5 and 15 (including) years old,num_age_5_15,,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08 +Presence of kids between 5 and 15 (including) years old,(num_age_5_15 > 0),,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26 +Number of Adults (>= 16 years old),num_adult,,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03 +Dummy for single parent household,(num_adult == 1) & (num_age_0_4 + num_age_5_15 > 0),,,,,,,,,,,,,,,, +Number of Cars > Number of Workers,more_cars_than_workers,,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16,0.16 +Number of Vehicles,auto_ownership,,,,,,,,,,,,,,,, +Dummy for female,female,,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22 +Dummy for all stops made by transit,tour_mode_is_transit,,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7,-0.7 +Dummy for walking to all stops,tour_mode_is_non_motorized,,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54,-1.54 +Number of work tours undertaken by the person,num_work_tours,,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15,-0.15 +Number of university tours tours undertaken by the person,num_univ_tours,,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48 +Number of school tours tours undertaken by the person,num_school_tours,,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55,-1.55 +Number of escort tours tours undertaken by the person,num_escort_tours,,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2 +#Number of shop tours undertaken by the person,num_shop_tours,,,,,,,,,,,,,,,, +#Number of maintenace tours tours undertaken by the person,num_maint_tours,,,,,,,,,,,,,,,, +#Number of eating tours tours undertaken by the person,num_eatout_tours,,,,,,,,,,,,,,,, +#Number of visit tours tours undertaken by the person,num_social_tours,,,,,,,,,,,,,,,, +Number of shop tours undertaken by the houshold,num_hh_shop_tours,,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05 +AM Peak departure between 6AM and 7 AM (including) Interacted with outbound tours,(start>5) & (start<8),,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93,-1.93 +Arrival later than 17:00.,(end > 16),,,,,,,,,,,,,,,, +Evening Arrival (>=19:00) Interacted with return tours,(end > 18),,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31 +Dummy for the duration of the tour being equal or greater than or equal to 11 hours,(duration > 10),,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6 +Dummy for the duration of the tour being equal or greater than or equal to 9 hours ,(duration > 8),,,,,,,,,,,,,,,, +Dummy for the duration of the tour being equal or greater than or equal to 3 hours ,(duration > 2),,,,,,,,,,,,,,,, +HH accesibility for outbound tours. Interaction,hhacc,,,,,,,,,,,,,,,, +HH accesibility for inbound tours. Interaction,hhacc,,,,,,,,,,,,,,,, +Primary Destination Accessibility for outbound tours. Interaction,pracc,,,,,,,,,,,,,,,, +Primary Destination Accessibility for return tours. Interaction,pracc,,,,,,,,,,,,,,,, +dummy for distance less than 20 Miles,(distance_in_miles < 20),,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22,-0.22 +dummy for distance in miles,distance_in_miles,,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01 +#distance in miles * Number of stops,distance_in_miles * @@numStopsAlt,,,,,,,,,,,,,,,, No stops if tour mode is driveTransit,tour_mode_is_drive_transit,,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999 -Alternative specific constant for outbound stops,1,,,,-0.833,-0.833,-0.833,-0.833,-2.613,-2.613,-2.613,-2.613,-3.934,-3.934,-3.934,-3.934 +Alternative specific constant for outbound stops,1,,,,,-0.833,-0.833,-0.833,-0.833,-2.613,-2.613,-2.613,-2.613,-3.934,-3.934,-3.934,-3.934 Alternative specific constant for return stops,1,,-0.445,-1.775,-2.139,,-0.445,-1.775,-2.139,,-0.445,-1.775,-2.139,,-0.445,-1.775,-2.139 -Alternative specific constant for the total number of stops,1,,0,0,,0,0,0,0,0,0,0.695,0,0,0.695,0.695 -#work has one row not found in other tour types,, -Number of subtours in the tour,num_atwork_subtours,,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900,0.1900 +Alternative specific constant for the total number of stops,1,,,0,0,,0,0,0,0,0,0,0.695,0,0,0.695,0.695 +#work has one row not found in other tour types,,,,,,,,,,,,,,,,, +Number of subtours in the tour,num_atwork_subtours,,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19 diff --git a/example/configs/tour_mode_choice.yaml b/example/configs/tour_mode_choice.yaml index 513738f58..8fb41b5f2 100644 --- a/example/configs/tour_mode_choice.yaml +++ b/example/configs/tour_mode_choice.yaml @@ -52,8 +52,8 @@ SPEC: tour_mode_choice.csv COEFFS: tour_mode_choice_coeffs.csv CONSTANTS: - valueOfTime: 8.00 - costPerMile: 18.48 + #valueOfTime: 8.00 + costPerMile: 18.29 costShareSr2: 1.75 costShareSr3: 2.50 waitThresh: 10.00 @@ -96,3 +96,5 @@ LOGSUM_CHOOSER_COLUMNS: - number_of_participants - tour_category - num_workers + - value_of_time + - free_parking_at_work diff --git a/example/configs/tour_mode_choice_annotate_choosers_preprocessor.csv b/example/configs/tour_mode_choice_annotate_choosers_preprocessor.csv index 10c5c5db0..d0e8f839d 100644 --- a/example/configs/tour_mode_choice_annotate_choosers_preprocessor.csv +++ b/example/configs/tour_mode_choice_annotate_choosers_preprocessor.csv @@ -14,15 +14,18 @@ local,_DF_IS_TOUR,'tour_type' in df.columns ,is_indiv,~is_joint ,is_atwork_subtour,(df.tour_category=='atwork') if 'tour_category' in df.columns else False #,, -,value_of_time,8 -,c_cost,(0.60 * c_ivt) / value_of_time +,c_cost,(0.60 * c_ivt) / df.value_of_time #,, ,dest_topology,"reindex(land_use.TOPOLOGY, df[dest_col_name])" ,terminal_time,"reindex(land_use.TERMINAL, df[dest_col_name])" ,dest_density_index,"reindex(land_use.density_index, df[dest_col_name])" FIXME,origin_walk_time,0 FIXME,destination_walk_time,0 -FIXME,daily_parking_cost,0 +#,, +,_free_parking_available,"(df.tour_type == 'work') & df.free_parking_at_work if _DF_IS_TOUR else False" +,_dest_hourly_peak_parking_cost,"reindex(land_use.PRKCST, df[dest_col_name])" +,_hourly_parking_cost,"np.where(_free_parking_available, 0, _dest_hourly_peak_parking_cost)" +,daily_parking_cost,_hourly_parking_cost * df.duration #,, ,drive_commuter_available,(odt_skims['DRV_COM_WLK_TOTIVT']>0) & (dot_skims['WLK_COM_DRV_TOTIVT']>0) & (odt_skims['DRV_COM_WLK_KEYIVT']>0) & (dot_skims['WLK_COM_DRV_KEYIVT']>0) ,drive_express_available,(odt_skims['DRV_EXP_WLK_TOTIVT']>0) & (dot_skims['WLK_EXP_DRV_TOTIVT']>0) & (odt_skims['DRV_EXP_WLK_KEYIVT']>0) & (dot_skims['WLK_EXP_DRV_KEYIVT']>0) @@ -45,3 +48,5 @@ FIXME,daily_parking_cost,0 ,drive_ferry_available,drive_lrf_available & (odt_skims['DRV_LRF_WLK_FERRYIVT']>0) & (dot_skims['WLK_LRF_WLK_FERRYIVT']>0) #,, destination in central business district,destination_in_cbd,"(reindex(land_use.area_type, df[dest_col_name]) < setting('cbd_threshold')) * 1" +#,,FIXME diagnostic +#,sov_dist_rt,(odt_skims['SOV_DIST'] + dot_skims['SOV_DIST']) diff --git a/example/configs/tour_mode_choice_coeffs.csv b/example/configs/tour_mode_choice_coeffs.csv index b37523518..3e12e41db 100644 --- a/example/configs/tour_mode_choice_coeffs.csv +++ b/example/configs/tour_mode_choice_coeffs.csv @@ -9,7 +9,8 @@ c_walktimeshort,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt c_walktimelong,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,10.00 * c_ivt,-0.188 c_biketimeshort,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,4.00 * c_ivt,-0.0752 c_biketimelong,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,20.00 * c_ivt,-0.376 -c_cost,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.6*c_ivt) / valueOfTime +#value_of_time is a person attribute so we cant compute c_cost as scalar here,,,,,,,,,, +#c_cost,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.60 * c_ivt) / valueOfTime,(0.6*c_ivt) / valueOfTime c_short_i_wait,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,-0.0376 c_long_i_wait,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,1.00 * c_ivt,-0.0188 c_wacc,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,2.00 * c_ivt,-0.0376 diff --git a/example/configs/tour_scheduling_atwork.csv b/example/configs/tour_scheduling_atwork.csv index 73ce01a43..7a1849a0b 100644 --- a/example/configs/tour_scheduling_atwork.csv +++ b/example/configs/tour_scheduling_atwork.csv @@ -1,4 +1,59 @@ -Description,Expression,Coefficient -Free-flow round trip auto time shift effects - departure,roundtrip_auto_time_to_work * start,-0.00114 -Free-flow round trip auto time shift effects - duration,roundtrip_auto_time_to_work * duration,0.00221 -Part-time worker departure shift effects,(ptype == 2) * start,0.06736 +Description,Expression,Coefficient +# Departure Constants,, +Early start at 5,start < 6,-7.765548476 +AM peak start at 6,start == 6,-6.156717827 +AM peak start at 7,start == 7,-4.061708142 +AM peak start at 8,start == 8,-2.330535201 +AM peak start at 9,start == 9,-1.881593386 +Midday start at 10/11/12,(start > 9) & (start < 13),0 +Midday start at 13/14/15,(start > 12) & (start < 16),-0.77502158 +PM peak start at 16/17/18,(start > 15) & (start < 19),-0.227528489 +Evening start at 19/20/21,(start > 18) & (start < 22),-1.015090023 +Late start at 22/23,start > 21,-0.737570054 +# Arrival Constants,, +Early end at 5/6 ,end < 7,-2.928312295 +AM peak end,(end > 6) & (end < 10),-2.928312295 +Midday end at 10/11/12,(end > 9) & (end < 13),-2.297264374 +Midday end at 13/14,(end > 12) & (end < 15),0 +PM peak end at 15,end == 15,-0.578344457 +PM peak end at 16,end == 16,-1.09408722 +PM peak end at 17,end == 17,-1.1658466 +PM peak end at 18,end == 18,-1.496131081 +Evening end at 19/20/21,(end > 18) & (end < 22),-2.31998226 +Late end at 22/23,end > 21,-2.31998226 +#,, +Duration of 0 hours,duration==0,-0.906681512 +Duration of 1 hour,duration==1,0 +Duration of 2 to 3 hours,(duration >=1) and (duration <= 4),-1.362175802 +Duration of 4 to 5 hours,(duration >=4) and (duration <=5),-0.819617616 +Duration of 6 to 7 hours,(duration >=6) and (duration <=7),1.088111072 +Duration of 8 to 10 hours,(duration >=8) and (duration <=10),1.734038505 +Duration of 11 to 13 hours,(duration >=11) and (duration <=13),0.3 +Duration of 14 to 18 hours,(duration >=14) and (duration <=18),0 +#,, +Start shift for outbound auto travel time for off-peak,"@df.start * np.minimum(df.sovtimemd, time_cap)",0.00065 +Start shift for inbound auto travel time for off-peak,"@df.start * np.minimum(df.sovtimemd_t, time_cap)",0.00065 +Duration shift for outbound auto travel time for off-peak,"@df.duration * np.minimum(df.sovtimemd, time_cap)",0.00981 +Duration shift for inbound auto travel time for off-peak,"@df.duration * np.minimum(df.sovtimemd_t, time_cap)",0.00981 +#,, +Start shift for business-related sub-tour purpose,(tour_type == 'business') * start,-0.1113 +Duration shift for business-related sub-tour purpose,(tour_type == 'business') * duration,0.2646 +Start shift for first sub-tour of the same work tour,(tour_type_num == 1) * start,-0.5433 +Duration shift for first sub-tour of the same work tour,(tour_type_num == 1) * duration,-0.3992 +Start shift for subsequent sub-tour of the same work tour,(tour_type_num == 2) * start,-0.1844 +Duration shift for subsequent sub-tour of the same work tour,(tour_type_num == 2) * duration,-0.1844 +Start shift for number of mandatory tours made by the person,start * num_mand,-0.0193 +Duration shift for number of mandatory tours made by the person,duration * num_mand,-0.7702 +Start shift for number of joint tours in which the person participated,start * num_joint_tours,-0.0206 +Duration shift for number of joint tours in which the person participated,duration * num_joint_tours,-0.2497 +Start shift for number of individual nonm tours (including escort) made by the person,start * num_non_mand,-0.0128 +Duration shift for number of individual nonm tours (including escort) made by the person,duration * num_non_mand,-0.0422 +#,, +Dummy for business-related purpose and duration from 0 to 1,(tour_type == 'business') & (duration <=1),-1.543 +Dummy for eating-out purpose and duration of 1 hour,(tour_type == 'business') & (duration ==1),0.3999 +Dummy for eating-out purpose and departure at 11,(tour_type == 'business') & (start == 11),1.511 +Dummy for eating-out purpose and departure at 12,(tour_type == 'business') & (start == 12),2.721 +Dummy for eating-out purpose and departure at 13,(tour_type == 'business') & (start == 13),2.122 +#,, +#Mode Choice Logsum,mode_choice_logsum,0 +#,, diff --git a/example/configs/tour_scheduling_atwork.yaml b/example/configs/tour_scheduling_atwork.yaml new file mode 100644 index 000000000..ee6eb396b --- /dev/null +++ b/example/configs/tour_scheduling_atwork.yaml @@ -0,0 +1,9 @@ +preprocessor: + SPEC: tour_scheduling_atwork_preprocessor + DF: df +# TABLES: +# - land_use +# - tours + +CONSTANTS: + time_cap: 30 diff --git a/example/configs/tour_scheduling_atwork_preprocessor.csv b/example/configs/tour_scheduling_atwork_preprocessor.csv new file mode 100644 index 000000000..c44e65d05 --- /dev/null +++ b/example/configs/tour_scheduling_atwork_preprocessor.csv @@ -0,0 +1,3 @@ +Description,Target,Expression +,sovtimemd,"od_skims[('SOV_TIME', 'MD')]" +,sovtimemd_t,"do_skims[('SOV_TIME', 'MD')]" diff --git a/example/configs/tour_scheduling_joint.csv b/example/configs/tour_scheduling_joint.csv index b843da1b0..fda7dbb24 100644 --- a/example/configs/tour_scheduling_joint.csv +++ b/example/configs/tour_scheduling_joint.csv @@ -25,6 +25,7 @@ University student - arrive after 22,(ptype == 3) & (end > 22),0.5466 Shopping tour - duration < 2 hours,"(tour_type == 'shopping') & (duration < 2)",0.5168 Discretionary tour - duration < 2 hours,"(tour_type == 'othdiscr') & (duration < 2)",-0.6974 Adult with children in HH - arrive 19 - 21,adult & (num_children > 0) & ( end > 18 ) & ( end < 22 ),0.336 +#,, #Mode Choice Logsum,mode_choice_logsum,0 #,, #,, FIXME - pathological knowledge that tour_id is timetable window_id diff --git a/example/configs/tour_scheduling_nonmandatory.csv b/example/configs/tour_scheduling_nonmandatory.csv index fd2c0810b..80fd4fe97 100644 --- a/example/configs/tour_scheduling_nonmandatory.csv +++ b/example/configs/tour_scheduling_nonmandatory.csv @@ -1,13 +1,13 @@ Description,Expression,Coefficient Subsequent tour must start after previous tour for this purpose ends,(start < end_previous) & (tour_type_num > 1),-999 Free-flow round trip auto time shift effects - duration,roundtrip_auto_time_to_work * duration,0.004741 -Shopping tour - departure shift effects,"(tour_type == 'shopping') * start",-0.06015 -Shopping tour - duration shift effects,"(tour_type == 'shopping') * duration",-0.1208 -Maintenance tour - departure shift effects,"(tour_type == 'othmaint') * start",-0.1489 -Maintenance tour - departure shift effects,"(tour_type == 'othmaint') * duration",-0.08372 -Visit tour - departure shift effects,"(tour_type == 'social') * start",0.09688 -Visit tour - departure shift effects,"(tour_type == 'social') * duration",0.1638 -Eat Out tour - departure shift effects,"(tour_type == 'eatout') * start",0.07549 +Shopping tour - departure shift effects,(tour_type == 'shopping') * start,-0.06015 +Shopping tour - duration shift effects,(tour_type == 'shopping') * duration,-0.1208 +Maintenance tour - departure shift effects,(tour_type == 'othmaint') * start,-0.1489 +Maintenance tour - departure shift effects,(tour_type == 'othmaint') * duration,-0.08372 +Visit tour - departure shift effects,(tour_type == 'social') * start,0.09688 +Visit tour - departure shift effects,(tour_type == 'social') * duration,0.1638 +Eat Out tour - departure shift effects,(tour_type == 'eatout') * start,0.07549 School child age 16+ - departure shift effects,(ptype == 6) * start,0.07266 School child age 16+ - duration shift effects,(ptype == 6) * duration,0.2095 School child age under 16 - departure shift effects,(ptype == 7) * start,0.04657 @@ -19,15 +19,16 @@ Number of escort tours - departure shift effects,num_escort_tours * start,0.0201 Number of idividual non-mandatory tours (excluding escort) - departure shift effects,num_non_escort_tours * start,0.03896 First of 2+ tours for same purpose - departure shift effect,((tour_type_count>1) & (tour_type_num == 1)) * start,-0.2364 subsequent of 2+ tours for same purpose - duration shift effect,(tour_type_num > 1) * duration,-0.1731 -Maintenance tour - depart before 7,"(tour_type == 'othmaint') & (start < 7)",-0.8826 -Shopping tour - depart before 8,"(tour_type == 'shopping') & (start < 8)",-1.037 -Shopping tour - arrive after 22,"(tour_type == 'shopping') & (end > 22)",-0.6027 +Maintenance tour - depart before 7,(tour_type == 'othmaint') & (start < 7),-0.8826 +Shopping tour - depart before 8,(tour_type == 'shopping') & (start < 8),-1.037 +Shopping tour - arrive after 22,(tour_type == 'shopping') & (end > 22),-0.6027 School child under 16 - arrive after 22,(ptype == 7) & (end > 22),-1.18 University student - arrive after 22,(ptype == 3) & (end > 22),0.5466 -Shopping tour - duration < 2 hours,"(tour_type == 'shopping') & (duration < 2)",0.5168 -Discretionary tour - duration < 2 hours,"(tour_type == 'othdiscr') & (duration < 2)",-0.6974 +Shopping tour - duration < 2 hours,(tour_type == 'shopping') & (duration < 2),0.5168 +Discretionary tour - duration < 2 hours,(tour_type == 'othdiscr') & (duration < 2),-0.6974 Adult with children in HH - arrive 19 - 21,adult & (num_children > 0) & ( end > 18 ) & ( end < 22 ),0.336 -# Mode Choice Logsum,mode_choice_logsum,0 +#,, +#Mode Choice Logsum,mode_choice_logsum,0 #,, Some previously-scheduled tour ends in this departure hour,"@tt.previous_tour_ends(df.person_id, df.start)",-0.4562 Some previously-scheduled tour begins in this arrival hour,"@tt.previous_tour_begins(df.person_id, df.end)",-0.3992 @@ -37,57 +38,57 @@ Adjacent window exists before this departure hour - second+ tour interaction,"@( Adjacent window exists after this arrival hour - second+ tour interaction,"@(df.tour_type_num > 1) & tt.adjacent_window_after(df.person_id, df.end)",-0.02734 Remaining individual non-mandatory tours to be scheduled / number of unscheduled hours,"@((1.0 + df.tour_count - df.tour_num)) / tt.remaining_periods_available(df.person_id, df.start, df.end)",-13.63 #,, -Departure Constants -- Early (up to 5),"(tour_type != 'escort') & (start < 6)",-1.740135661 -Departure Constants -- AM peak 1 (6),"(tour_type != 'escort') & (start == 6)",-0.654163573 -Departure Constants -- AM peak 2 (7),"(tour_type != 'escort') & (start == 7)",0.554282571 -Departure Constants -- AM peak 3 (8),"(tour_type != 'escort') & (start == 8)",1.050561087 -Departure Constants -- AM peak 4 (9),"(tour_type != 'escort') & (start == 9)",0.971568228 -Departure Constants -- Midday 1 (10 to 12),"(tour_type != 'escort') & (start > 9) & (start < 13)",0.881991986 -Departure Constants -- Midday 2 (13 to 15),"(tour_type != 'escort') & (start > 12) & (start < 16)",0.411103634 -Departure Constants -- PM peak (16 to 18),"(tour_type != 'escort') & (start > 15) & (start < 19)",0 -Departure Constants -- Evening (19 to 21),"(tour_type != 'escort') & (start > 18) & (start < 22)",-1.856475096 -Departure Constants -- Late (22 and later),"(tour_type != 'escort') & (start > 21)",-8.228880141 -Arrival Constants -- Early (up to 6),"(tour_type != 'escort') & (end < 7)",-0.051990748 -Arrival Constants -- AM peak (7 to 9),"(tour_type != 'escort') & (end > 6) & (end < 10)",-1.814822602 -Arrival Constants -- Midday 1 (10 to 12),"(tour_type != 'escort') & (end > 9) & (end < 13)",0.000371501 -Arrival Constants -- Midday 2 (13 to 14),"(tour_type != 'escort') & (end > 12) & (end < 15)",0.532116031 -Arrival Constants -- PM peak 1 (15),"(tour_type != 'escort') & (end == 15)",0.628481567 -Arrival Constants -- PM peak 2 (16),"(tour_type != 'escort') & (end == 16)",0.650521416 -Arrival Constants -- PM peak 3 (17),"(tour_type != 'escort') & (end == 17)",0.402894406 -Arrival Constants -- PM peak 4 (18),"(tour_type != 'escort') & (end == 18)",0.154213293 -Arrival Constants -- Evening (19 to 21),"(tour_type != 'escort') & (end > 18) & (end < 22)",0 -Arrival Constants -- Late (22 and later),"(tour_type != 'escort') & (end > 21)",-0.866671315 -Duration Constants -- 0 to 1 hours,"(tour_type != 'escort') & (duration < 2)",0 -Duration Constants -- 2 to 3 hours,"(tour_type != 'escort') & (duration > 1) & (duration < 4)",0.051385565 -Duration Constants -- 4 to 5 hours,"(tour_type != 'escort') & (duration > 3) & (duration < 6)",-0.593951321 -Duration Constants -- 6 to 7 hours,"(tour_type != 'escort') & (duration > 5) & (duration < 8)",-0.951155328 -Duration Constants -- 8 to 10 hours,"(tour_type != 'escort') & (duration > 7) & (duration < 11)",-0.828108399 -Duration Constants -- 11 to 13 hours,"(tour_type != 'escort') & (duration > 10) & (duration < 14)",-0.955635554 -Duration Constants -- 14 to 18 hours,"(tour_type != 'escort') & (duration > 13) & (duration < 19)",-1.042580879 -Escort Tour Departure Constants -- Early (up to 5),"(tour_type == 'escort') & (start < 6)",-1.740135661 -Escort Tour Departure Constants -- AM peak 1 (6),"(tour_type == 'escort') & (start == 6)",-1.112357753 -Escort Tour Departure Constants -- AM peak 2 (7),"(tour_type == 'escort') & (start == 7)",0.698788185 -Escort Tour Departure Constants -- AM peak 3 (8),"(tour_type == 'escort') & (start == 8)",1.196268813 -Escort Tour Departure Constants -- AM peak 4 (9),"(tour_type == 'escort') & (start == 9)",-0.225258221 -Escort Tour Departure Constants -- Midday 1 (10 to 12),"(tour_type == 'escort') & (start > 9) & (start < 13)",0.028662017 -Escort Tour Departure Constants -- Midday 2 (13 to 15),"(tour_type == 'escort') & (start > 12) & (start < 16)",0 -Escort Tour Departure Constants -- PM peak (16 to 18),"(tour_type == 'escort') & (start > 15) & (start < 19)",-1.180140161 -Escort Tour Departure Constants -- Evening (19 to 21),"(tour_type == 'escort') & (start > 18) & (start < 22)",-3.948732811 -Escort Tour Departure Constants -- Late (22 and later),"(tour_type == 'escort') & (start > 21)",-8.228880141 -Escort Tour Arrival Constants -- Early (up to 6),"(tour_type == 'escort') & (end < 7)",0 -Escort Tour Arrival Constants -- AM peak (7 to 9),"(tour_type == 'escort') & (end > 6) & (end < 10)",0 -Escort Tour Arrival Constants -- Midday 1 (10 to 12),"(tour_type == 'escort') & (end > 9) & (end < 13)",0 -Escort Tour Arrival Constants -- Midday 2 (13 to 14),"(tour_type == 'escort') & (end > 12) & (end < 15)",0 -Escort Tour Arrival Constants -- PM peak 1 (15),"(tour_type == 'escort') & (end == 15)",0 -Escort Tour Arrival Constants -- PM peak 2 (16),"(tour_type == 'escort') & (end == 16)",0 -Escort Tour Arrival Constants -- PM peak 3 (17),"(tour_type == 'escort') & (end == 17)",0 -Escort Tour Arrival Constants -- PM peak 4 (18),"(tour_type == 'escort') & (end == 18)",0 -Escort Tour Arrival Constants -- Evening (19 to 21),"(tour_type == 'escort') & (end > 18) & (end < 22)",-0.536918728 -Escort Tour Arrival Constants -- Late (22 and later),"(tour_type == 'escort') & (end > 21)",-1.008290213 -Escort Tour Duration Constants -- 0 to 1 hours,"(tour_type == 'escort') & (duration < 2)",0 -Escort Tour Duration Constants -- 2 to 3 hours,"(tour_type == 'escort') & (duration > 1) & (duration < 4)",-2.042013897 -Escort Tour Duration Constants -- 4 to 5 hours,"(tour_type == 'escort') & (duration > 3) & (duration < 6)",-2.880293896 -Escort Tour Duration Constants -- 6 to 7 hours,"(tour_type == 'escort') & (duration > 5) & (duration < 8)",-2.973533731 -Escort Tour Duration Constants -- 8 to 10 hours,"(tour_type == 'escort') & (duration > 7) & (duration < 11)",-3.020213758 -Escort Tour Duration Constants -- 11 to 13 hours,"(tour_type == 'escort') & (duration > 10) & (duration < 14)",-2.974364976 -Escort Tour Duration Constants -- 14 to 18 hours,"(tour_type == 'escort') & (duration > 13) & (duration < 19)",-2.507447146 +Departure Constants -- Early (up to 5),(tour_type != 'escort') & (start < 6),-1.740135661 +Departure Constants -- AM peak 1 (6),(tour_type != 'escort') & (start == 6),-0.654163573 +Departure Constants -- AM peak 2 (7),(tour_type != 'escort') & (start == 7),0.554282571 +Departure Constants -- AM peak 3 (8),(tour_type != 'escort') & (start == 8),1.050561087 +Departure Constants -- AM peak 4 (9),(tour_type != 'escort') & (start == 9),0.971568228 +Departure Constants -- Midday 1 (10 to 12),(tour_type != 'escort') & (start > 9) & (start < 13),0.881991986 +Departure Constants -- Midday 2 (13 to 15),(tour_type != 'escort') & (start > 12) & (start < 16),0.411103634 +Departure Constants -- PM peak (16 to 18),(tour_type != 'escort') & (start > 15) & (start < 19),0 +Departure Constants -- Evening (19 to 21),(tour_type != 'escort') & (start > 18) & (start < 22),-1.856475096 +Departure Constants -- Late (22 and later),(tour_type != 'escort') & (start > 21),-8.228880141 +Arrival Constants -- Early (up to 6),(tour_type != 'escort') & (end < 7),-0.051990748 +Arrival Constants -- AM peak (7 to 9),(tour_type != 'escort') & (end > 6) & (end < 10),-1.814822602 +Arrival Constants -- Midday 1 (10 to 12),(tour_type != 'escort') & (end > 9) & (end < 13),0.000371501 +Arrival Constants -- Midday 2 (13 to 14),(tour_type != 'escort') & (end > 12) & (end < 15),0.532116031 +Arrival Constants -- PM peak 1 (15),(tour_type != 'escort') & (end == 15),0.628481567 +Arrival Constants -- PM peak 2 (16),(tour_type != 'escort') & (end == 16),0.650521416 +Arrival Constants -- PM peak 3 (17),(tour_type != 'escort') & (end == 17),0.402894406 +Arrival Constants -- PM peak 4 (18),(tour_type != 'escort') & (end == 18),0.154213293 +Arrival Constants -- Evening (19 to 21),(tour_type != 'escort') & (end > 18) & (end < 22),0 +Arrival Constants -- Late (22 and later),(tour_type != 'escort') & (end > 21),-0.866671315 +Duration Constants -- 0 to 1 hours,(tour_type != 'escort') & (duration < 2),0 +Duration Constants -- 2 to 3 hours,(tour_type != 'escort') & (duration > 1) & (duration < 4),0.051385565 +Duration Constants -- 4 to 5 hours,(tour_type != 'escort') & (duration > 3) & (duration < 6),-0.593951321 +Duration Constants -- 6 to 7 hours,(tour_type != 'escort') & (duration > 5) & (duration < 8),-0.951155328 +Duration Constants -- 8 to 10 hours,(tour_type != 'escort') & (duration > 7) & (duration < 11),-0.828108399 +Duration Constants -- 11 to 13 hours,(tour_type != 'escort') & (duration > 10) & (duration < 14),-0.955635554 +Duration Constants -- 14 to 18 hours,(tour_type != 'escort') & (duration > 13) & (duration < 19),-1.042580879 +Escort Tour Departure Constants -- Early (up to 5),(tour_type == 'escort') & (start < 6),-1.740135661 +Escort Tour Departure Constants -- AM peak 1 (6),(tour_type == 'escort') & (start == 6),-1.112357753 +Escort Tour Departure Constants -- AM peak 2 (7),(tour_type == 'escort') & (start == 7),0.698788185 +Escort Tour Departure Constants -- AM peak 3 (8),(tour_type == 'escort') & (start == 8),1.196268813 +Escort Tour Departure Constants -- AM peak 4 (9),(tour_type == 'escort') & (start == 9),-0.225258221 +Escort Tour Departure Constants -- Midday 1 (10 to 12),(tour_type == 'escort') & (start > 9) & (start < 13),0.028662017 +Escort Tour Departure Constants -- Midday 2 (13 to 15),(tour_type == 'escort') & (start > 12) & (start < 16),0 +Escort Tour Departure Constants -- PM peak (16 to 18),(tour_type == 'escort') & (start > 15) & (start < 19),-1.180140161 +Escort Tour Departure Constants -- Evening (19 to 21),(tour_type == 'escort') & (start > 18) & (start < 22),-3.948732811 +Escort Tour Departure Constants -- Late (22 and later),(tour_type == 'escort') & (start > 21),-8.228880141 +Escort Tour Arrival Constants -- Early (up to 6),(tour_type == 'escort') & (end < 7),0 +Escort Tour Arrival Constants -- AM peak (7 to 9),(tour_type == 'escort') & (end > 6) & (end < 10),0 +Escort Tour Arrival Constants -- Midday 1 (10 to 12),(tour_type == 'escort') & (end > 9) & (end < 13),0 +Escort Tour Arrival Constants -- Midday 2 (13 to 14),(tour_type == 'escort') & (end > 12) & (end < 15),0 +Escort Tour Arrival Constants -- PM peak 1 (15),(tour_type == 'escort') & (end == 15),0 +Escort Tour Arrival Constants -- PM peak 2 (16),(tour_type == 'escort') & (end == 16),0 +Escort Tour Arrival Constants -- PM peak 3 (17),(tour_type == 'escort') & (end == 17),0 +Escort Tour Arrival Constants -- PM peak 4 (18),(tour_type == 'escort') & (end == 18),0 +Escort Tour Arrival Constants -- Evening (19 to 21),(tour_type == 'escort') & (end > 18) & (end < 22),-0.536918728 +Escort Tour Arrival Constants -- Late (22 and later),(tour_type == 'escort') & (end > 21),-1.008290213 +Escort Tour Duration Constants -- 0 to 1 hours,(tour_type == 'escort') & (duration < 2),0 +Escort Tour Duration Constants -- 2 to 3 hours,(tour_type == 'escort') & (duration > 1) & (duration < 4),-2.042013897 +Escort Tour Duration Constants -- 4 to 5 hours,(tour_type == 'escort') & (duration > 3) & (duration < 6),-2.880293896 +Escort Tour Duration Constants -- 6 to 7 hours,(tour_type == 'escort') & (duration > 5) & (duration < 8),-2.973533731 +Escort Tour Duration Constants -- 8 to 10 hours,(tour_type == 'escort') & (duration > 7) & (duration < 11),-3.020213758 +Escort Tour Duration Constants -- 11 to 13 hours,(tour_type == 'escort') & (duration > 10) & (duration < 14),-2.974364976 +Escort Tour Duration Constants -- 14 to 18 hours,(tour_type == 'escort') & (duration > 13) & (duration < 19),-2.507447146 diff --git a/example/configs/tour_scheduling_school.csv b/example/configs/tour_scheduling_school.csv index 649de0e44..c1508c22b 100644 --- a/example/configs/tour_scheduling_school.csv +++ b/example/configs/tour_scheduling_school.csv @@ -18,14 +18,25 @@ First of 2+ school/univ tours- duration<6 hrs,(tour_count>1) & (tour_num == 1) & Subsequent of 2+ school/univ tours- duration<6 hrs,(tour_num > 1) & (duration < 6),2.142 School+work tours by student- duration<6 hrs,work_and_school_and_worker & (duration < 6),1.73 School+work tours by worker- duration<6 hrs,work_and_school_and_student & (duration < 6),2.142 -# Mode Choice Logsum,@@modeChoiceLogsumAlt,2.127 +#,, +Mode Choice Logsum,mode_choice_logsum,2.127 #,, Previously-scheduled tour ends in this departure hour,"@tt.previous_tour_ends(df.person_id, df.start)",-0.5995 Previously-scheduled tour begins in this arrival hour,"@tt.previous_tour_begins(df.person_id, df.end)",-1.102 -Adjacent window exists before this departure hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & tt.adjacent_window_before(df.person_id, df.start)",0.08975 -Adjacent window exists after this arrival hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & tt.adjacent_window_after(df.person_id, df.end)",-0.003049 -Adjacent window exists before this departure hour - second+ tour interaction,"@(df.tour_num > 1) & tt.adjacent_window_before(df.person_id, df.start)",-0.44 -Adjacent window exists after this arrival hour - second+ tour interaction,"@(df.tour_num > 1) & tt.adjacent_window_after(df.person_id, df.end)",-0.5271 +#,, +#,, FIXME - use temps as timetable ops can be very time-consuming +#Adjacent window exists before this departure hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & tt.adjacent_window_before(df.person_id, df.start)",0.08975 +#Adjacent window exists after this arrival hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & tt.adjacent_window_after(df.person_id, df.end)",-0.003049 +#Adjacent window exists before this departure hour - second+ tour interaction,"@(df.tour_num > 1) & tt.adjacent_window_before(df.person_id, df.start)",-0.44 +#Adjacent window exists after this arrival hour - second+ tour interaction,"@(df.tour_num > 1) & tt.adjacent_window_after(df.person_id, df.end)",-0.5271 +#,, +,"_adjacent_window_before@tt.adjacent_window_before(df.person_id, df.start)",1 +,"_adjacent_window_after@tt.adjacent_window_after(df.person_id, df.end)",1 +Adjacent window exists before this departure hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & _adjacent_window_before",0.08975 +Adjacent window exists after this arrival hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & _adjacent_window_after",-0.003049 +Adjacent window exists before this departure hour - second+ tour interaction,"@(df.tour_num > 1) & _adjacent_window_before",-0.44 +Adjacent window exists after this arrival hour - second+ tour interaction,"@(df.tour_num > 1) & _adjacent_window_after",-0.5271 +#,, Remaining work/school tours to be scheduled / number of unscheduled hours,"@((df.tour_count>1) & (df.tour_num == 1)) * 1.0 / tt.remaining_periods_available(df.person_id, df.start, df.end)",-16.67 #,, Departure Constants -- Early (up to 5),start < 6,-3.820662404 diff --git a/example/configs/tour_scheduling_work.csv b/example/configs/tour_scheduling_work.csv index 3eaf2406f..80cbe20e8 100644 --- a/example/configs/tour_scheduling_work.csv +++ b/example/configs/tour_scheduling_work.csv @@ -26,14 +26,24 @@ First of 2+ work tours- duration<8 hrs,((tour_count>1) & (tour_num == 1)) & (dur Subsequent of 2+ work tours- duration<8 hrs,(tour_num == 2) & (duration < 8),2.582 Work+school tours by worker- duration<8 hrs,(mandatory_tour_frequency == 'work_and_school') & is_worker & (duration < 8),0.9126 School+work tours by student- duration<8 hrs,(mandatory_tour_frequency == 'work_and_school') & is_student & (duration < 8),2.582 -# Mode Choice Logsum,mode_choice_logsum,1.027 +#,, +Mode Choice Logsum,mode_choice_logsum,1.027 #,, Previously-scheduled tour ends in this departure hour,"@tt.previous_tour_ends(df.person_id, df.start)",-0.8935 Previously-scheduled tour begins in this arrival hour,"@tt.previous_tour_begins(df.person_id, df.end)",-1.334 -Adjacent window exists before this departure hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & tt.adjacent_window_before(df.person_id, df.start)",0.1771 -Adjacent window exists after this arrival hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & tt.adjacent_window_after(df.person_id, df.end)",0.3627 -Adjacent window exists before this departure hour - second+ tour interaction,"@(df.tour_num > 1) & tt.adjacent_window_before(df.person_id, df.start)",-0.2123 -Adjacent window exists after this arrival hour - second+ tour interaction,"@(df.tour_num > 1) & tt.adjacent_window_after(df.person_id, df.end)",-0.1012 +#,, +#,, FIXME - use temps as timetable ops can be very time-consuming +#Adjacent window exists before this departure hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & tt.adjacent_window_before(df.person_id, df.start)",0.1771 +#Adjacent window exists after this arrival hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & tt.adjacent_window_after(df.person_id, df.end)",0.3627 +#Adjacent window exists before this departure hour - second+ tour interaction,"@(df.tour_num > 1) & tt.adjacent_window_before(df.person_id, df.start)",-0.2123 +#Adjacent window exists after this arrival hour - second+ tour interaction,"@(df.tour_num > 1) & tt.adjacent_window_after(df.person_id, df.end)",-0.1012 +,"_adjacent_window_before@tt.adjacent_window_before(df.person_id, df.start)",1 +,"_adjacent_window_after@tt.adjacent_window_after(df.person_id, df.end)",1 +Adjacent window exists before this departure hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & _adjacent_window_before",0.1771 +Adjacent window exists after this arrival hour - first tour interaction,"@(df.tour_count>1) & (df.tour_num == 1) & _adjacent_window_after",0.3627 +Adjacent window exists before this departure hour - second+ tour interaction,"@(df.tour_num > 1) & _adjacent_window_before",-0.2123 +Adjacent window exists after this arrival hour - second+ tour interaction,"@(df.tour_num > 1) & _adjacent_window_after",-0.1012 +#,, Remaining work/school tours to be scheduled / number of unscheduled hours,"@((df.tour_count>1) & (df.tour_num == 1)) * 1.0 / tt.remaining_periods_available(df.person_id, df.start, df.end)",-18.68 #,, Departure Constants -- Early (up to 5),start < 6,-0.95272527 diff --git a/example/configs/trip_destination_sample.csv b/example/configs/trip_destination_sample.csv index 5e603d0a1..7a350c3d9 100644 --- a/example/configs/trip_destination_sample.csv +++ b/example/configs/trip_destination_sample.csv @@ -1,4 +1,6 @@ Description,Expression,work,univ,school,escort,shopping,eatout,othmaint,social,othdiscr,atwork +,_od_DIST@od_skims['DIST'],1,1,1,1,1,1,1,1,1,1 +,_dp_DIST@dp_skims['DIST'],1,1,1,1,1,1,1,1,1,1 Not available if walk tour not within walking distance,@(df.tour_mode=='WALK') & (od_skims['DISTWALK'] > max_walk_distance),-999,-999,-999,-999,-999,-999,-999,-999,-999,-999 Not available if walk tour not within walking distance,@(df.tour_mode=='WALK') & (dp_skims['DISTWALK'] > max_walk_distance),-999,-999,-999,-999,-999,-999,-999,-999,-999,-999 Not available if bike tour not within biking distance,@(df.tour_mode=='BIKE') & (od_skims['DISTBIKE'] > max_bike_distance),-999,-999,-999,-999,-999,-999,-999,-999,-999,-999 @@ -7,10 +9,10 @@ Not available if bike tour not within biking distance,@(df.tour_mode=='BIKE') & size term,"@np.log1p(size_terms.get(df.dest_taz, df.purpose))",1,1,1,1,1,1,1,1,1,1 no attractions,"@size_terms.get(df.dest_taz, df.purpose) == 0",-999,-999,-999,-999,-999,-999,-999,-999,-999,-999 #stop zone CBD area type,"@reindex(land_use.area_type, df.dest_taz) < setting('cbd_threshold')",,,,,,,,,, -distance (calibration adjustment individual - inbound),@(~df.is_joint & ~df.outbound) * (od_skims['DIST'] + dp_skims['DIST']),-0.04972591574229,-0.0613,-0.1056,-0.1491,-0.1192,-0.1029,-0.0962,-0.1329,-0.126172224,-0.122334597 -distance (calibration adjustment individual - outbound),@(~df.is_joint & df.outbound) * (od_skims['DIST'] + dp_skims['DIST']),0.147813278663948,-0.0613,-0.1056,-0.1491,-0.1192,-0.1029,-0.0962,-0.1329,-0.126172224,-0.122334597 -distance (calibration adjustment joint),@df.is_joint * (od_skims['DIST'] + dp_skims['DIST']),0,0,0,-0.1238,-0.1238,-0.1238,-0.1238,-0.1238,-0.123801985,0 -stop proximity to home (outbound),@df.outbound * od_skims['DIST'],-0.3800,0,0,0,0,0,0,0,0,0 -stop proximity to home (inbound),@~df.outbound * dp_skims['DIST'],-0.1500,0,0,0,0,0,0,0,0,0 -stop proximity to main destination (outbound),@df.outbound * dp_skims['DIST'],-0.26,,,,,,,,, -stop proximity to main destination (inbound),@~df.outbound * od_skims['DIST'],0,,,,,,,,, +distance (calibration adjustment individual - inbound),@(~df.is_joint & ~df.outbound) * (_od_DIST + _dp_DIST),-0.04972591574229,-0.0613,-0.1056,-0.1491,-0.1192,-0.1029,-0.0962,-0.1329,-0.126172224,-0.122334597 +distance (calibration adjustment individual - outbound),@(~df.is_joint & df.outbound) * (_od_DIST + _dp_DIST),0.147813278663948,-0.0613,-0.1056,-0.1491,-0.1192,-0.1029,-0.0962,-0.1329,-0.126172224,-0.122334597 +distance (calibration adjustment joint),@df.is_joint * (_od_DIST + _dp_DIST),0,0,0,-0.1238,-0.1238,-0.1238,-0.1238,-0.1238,-0.123801985,0 +stop proximity to home (outbound),@df.outbound * _od_DIST,-0.3800,0,0,0,0,0,0,0,0,0 +stop proximity to home (inbound),@~df.outbound * _od_DIST,-0.1500,0,0,0,0,0,0,0,0,0 +stop proximity to main destination (outbound),@df.outbound * _dp_DIST,-0.26,,,,,,,,, +stop proximity to main destination (inbound),@~df.outbound * _od_DIST,0,,,,,,,,, diff --git a/example/configs/trip_mode_choice.yaml b/example/configs/trip_mode_choice.yaml index 06c8ff10f..b92f9834b 100644 --- a/example/configs/trip_mode_choice.yaml +++ b/example/configs/trip_mode_choice.yaml @@ -54,8 +54,7 @@ NESTS: CONSTANTS: orig_col_name: origin dest_col_name: destination -# valueOfTime: 8.00 - costPerMile: 18.48 + costPerMile: 18.29 costShareSr2: 1.75 costShareSr3: 2.50 waitThresh: 10.00 @@ -112,19 +111,16 @@ preprocessor: # TABLES: # - land_use - - TOURS_MERGED_CHOOSER_COLUMNS: -# - tour_type - hhsize -# - density_index - age -# - age_16_p -# - age_16_to_19 - auto_ownership - number_of_participants - tour_category - parent_tour_id - tour_mode - duration + - value_of_time + - tour_type + - free_parking_at_work diff --git a/example/configs/trip_mode_choice_annotate_trips_preprocessor.csv b/example/configs/trip_mode_choice_annotate_trips_preprocessor.csv index 381374e2c..aaf54a1d8 100644 --- a/example/configs/trip_mode_choice_annotate_trips_preprocessor.csv +++ b/example/configs/trip_mode_choice_annotate_trips_preprocessor.csv @@ -2,8 +2,7 @@ Description,Target,Expression ,is_joint,(df.number_of_participants > 1) ,is_indiv,(df.number_of_participants == 1) ,is_atwork_subtour,~df.parent_tour_id.isnull() -,value_of_time,8 -,c_cost,(0.60 * c_ivt) / value_of_time +,c_cost,(0.60 * c_ivt) / df.value_of_time #,, #atwork subtours,, #FIXME tripModeChoice uec wrongly conflates these with tour_mode_is_bike?,, @@ -19,20 +18,20 @@ Description,Target,Expression ,tour_mode_is_walk_transit,i_tour_mode.isin(I_WALK_TRANSIT_MODES) ,tour_mode_is_drive_transit,i_tour_mode.isin(I_DRIVE_TRANSIT_MODES) #,, -FIXME,free_parking_available,False ,inbound,~df.outbound ,first_trip,df.trip_num == 1 ,last_trip,df.trip_num == df.trip_count origin terminal time not counted at home,_origin_terminal_time,"np.where(df.outbound & first_trip, 0, reindex(land_use.TERMINAL, df[ORIGIN]))" dest terminal time not counted at home,_dest_terminal_time,"np.where(inbound & last_trip, 0, reindex(land_use.TERMINAL, df[DESTINATION]))" ,total_terminal_time,_origin_terminal_time + _dest_terminal_time -FIXME,origin_hourly_parking_cost,0 -FIXME,dest_hourly_parking_cost,0 -#tourDuration,, +#,, +,free_parking_available,"(df.tour_type == 'work') & df.free_parking_at_work" +,dest_hourly_peak_parking_cost,"reindex(land_use.PRKCST, df[DESTINATION])" +,origin_hourly_peak_parking_cost,"reindex(land_use.PRKCST, df[ORIGIN])" ,origin_duration,"np.where(first_trip, np.where(inbound,df.duration * ~free_parking_available,0), 1)" ,dest_duration,"np.where(last_trip, np.where(inbound, df.duration * ~free_parking_available, 0), 1)" -,origin_parking_cost,origin_duration*origin_hourly_parking_cost -,dest_parking_cost,dest_duration*dest_hourly_parking_cost +,origin_parking_cost,origin_duration*origin_hourly_peak_parking_cost +,dest_parking_cost,dest_duration*dest_hourly_peak_parking_cost ,total_parking_cost,(origin_parking_cost + dest_parking_cost) / 2.0 ,trip_topology,"np.where(df.outbound, reindex(land_use.TOPOLOGY, df[DESTINATION]), reindex(land_use.TOPOLOGY, df[ORIGIN]))" ,density_index,"np.where(df.outbound, reindex(land_use.density_index, df[DESTINATION]), reindex(land_use.density_index, df[ORIGIN]))" diff --git a/example/configs/workplace_location.csv b/example/configs/workplace_location.csv index 1aec2724d..0db9976e3 100644 --- a/example/configs/workplace_location.csv +++ b/example/configs/workplace_location.csv @@ -1,18 +1,14 @@ -Description,Expression,Alt -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-0.8428 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.3104 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.3783 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.1285 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.0917 -"Distance 0 to 5 mi, high and very high income",@(df.income_segment>=3)*skims['DIST'].clip(upper=5),0.15 -"Distance 5+ mi, high and very high income",@(df.income_segment>=3)*(skims['DIST']-5).clip(0),0.02 -"Size variable full-time worker, low income","@(df.income_segment==1)*df['work_low'].apply(np.log1p)",1 -"Size variable full-time worker, medium income","@(df.income_segment==2)*df['work_med'].apply(np.log1p)",1 -"Size variable full-time worker, high income","@(df.income_segment==3)*df['work_high'].apply(np.log1p)",1 -"Size variable full-time worker, very high income","@(df.income_segment==4)*df['work_veryhigh'].apply(np.log1p)",1 -"No attractions full-time worker, low income","@(df.income_segment==1)&(df['work_low']==0)",-999 -"No attractions full-time worker, medium income","@(df.income_segment==2)&(df['work_med']==0)",-999 -"No attractions full-time worker, high income","@(df.income_segment==3)&(df['work_high']==0)",-999 -"No attractions full-time worker, very high income","@(df.income_segment==4)&(df['work_veryhigh']==0)",-999 -"Mode choice logsum",mode_choice_logsum,0.3 -"Sample of alternatives correction factor","@np.minimum(np.log(df.pick_count/df.prob), 60)",1 +Description,Expression,work_low,work_med,work_high,work_veryhigh +,_DIST@skims['DIST'],1,1,1,1 +"Distance, piecewise linear from 0 to 1 miles","@_DIST.clip(0,1)",-0.8428,-0.8428,-0.8428,-0.8428 +"Distance, piecewise linear from 1 to 2 miles","@(_DIST-1).clip(0,1)",-0.3104,-0.3104,-0.3104,-0.3104 +"Distance, piecewise linear from 2 to 5 miles","@(_DIST-2).clip(0,3)",-0.3783,-0.3783,-0.3783,-0.3783 +"Distance, piecewise linear from 5 to 15 miles","@(_DIST-5).clip(0,10)",-0.1285,-0.1285,-0.1285,-0.1285 +"Distance, piecewise linear for 15+ miles",@(_DIST-15.0).clip(0),-0.0917,-0.0917,-0.0917,-0.0917 +"Distance 0 to 5 mi, high and very high income",@_DIST.clip(upper=5),0,0,0.15,0.15 +"Distance 5+ mi, high and very high income",@(_DIST-5).clip(0),0,0,0.02,0.02 +Size variable,@(df['size_term'] * df['shadow_price_size_term_adjustment']).apply(np.log1p),1,1,1,1 +utility adjustment,@df['shadow_price_utility_adjustment'],1,1,1,1 +No attractions,@df['size_term']==0,-999,-999,-999,-999 +Mode choice logsum,mode_choice_logsum,0.3,0.3,0.3,0.3 +Sample of alternatives correction factor,"@np.minimum(np.log(df.pick_count/df.prob), 60)",1,1,1,1 diff --git a/example/configs/workplace_location.yaml b/example/configs/workplace_location.yaml index 2a61a3b0d..e83163ebe 100644 --- a/example/configs/workplace_location.yaml +++ b/example/configs/workplace_location.yaml @@ -4,18 +4,60 @@ SIMULATE_CHOOSER_COLUMNS: - income_segment - TAZ +SAMPLE_SPEC: workplace_location_sample.csv +SPEC: workplace_location.csv + LOGSUM_SETTINGS: tour_mode_choice.yaml LOGSUM_PREPROCESSOR: nontour_preprocessor +LOGSUM_TOUR_PURPOSE: work # model-specific logsum-related settings CHOOSER_ORIG_COL_NAME: TAZ ALT_DEST_COL_NAME: alt_dest -IN_PERIOD: 8 -OUT_PERIOD: 17 +IN_PERIOD: 17 +OUT_PERIOD: 8 +DEST_CHOICE_COLUMN_NAME: workplace_taz annotate_persons: SPEC: annotate_persons_workplace DF: persons TABLES: - land_use + +annotate_households: + SPEC: annotate_households_workplace + DF: households + TABLES: + - persons + +# - shadow pricing + + +# income_segment is in households, but we want to count persons +CHOOSER_TABLE_NAME: persons_merged + +# size_terms model_selector +MODEL_SELECTOR: workplace + +# we can't use use household income_segment as this will also be set for non-workers +CHOOSER_SEGMENT_COLUMN_NAME: income_segment + +# boolean column to filter choosers (True means keep) +CHOOSER_FILTER_COLUMN_NAME: is_worker + +# FIXME - these are assigned to persons in annotate_persons. we need a better way to manage this +SEGMENT_IDS: + work_low: 1 + work_med: 2 + work_high: 3 + work_veryhigh: 4 + +# model adds these tables (informational - not added if commented out) +SHADOW_PRICE_TABLE: workplace_shadow_prices +MODELED_SIZE_TABLE: workplace_modeled_size + +# not loaded if commented out +SAVED_SHADOW_PRICE_TABLE_NAME: workplace_shadow_prices.csv + + diff --git a/example/configs/workplace_location_sample.csv b/example/configs/workplace_location_sample.csv index 5c4abd4f5..3ceac0464 100644 --- a/example/configs/workplace_location_sample.csv +++ b/example/configs/workplace_location_sample.csv @@ -1,16 +1,12 @@ -Description,Expression,Alt -"Distance, piecewise linear from 0 to 1 miles",@skims['DIST'].clip(1),-0.8428 -"Distance, piecewise linear from 1 to 2 miles","@(skims['DIST']-1).clip(0,1)",-0.3104 -"Distance, piecewise linear from 2 to 5 miles","@(skims['DIST']-2).clip(0,3)",-0.3783 -"Distance, piecewise linear from 5 to 15 miles","@(skims['DIST']-5).clip(0,10)",-0.1285 -"Distance, piecewise linear for 15+ miles",@(skims['DIST']-15.0).clip(0),-0.0917 -"Distance 0 to 5 mi, high and very high income",@(df.income_segment>=3)*skims['DIST'].clip(upper=5),0.15 -"Distance 5+ mi, high and very high income",@(df.income_segment>=3)*(skims['DIST']-5).clip(0),0.02 -"Size variable full-time worker, low income","@(df.income_segment==1)*df['work_low'].apply(np.log1p)",1 -"Size variable full-time worker, medium income","@(df.income_segment==2)*df['work_med'].apply(np.log1p)",1 -"Size variable full-time worker, high income","@(df.income_segment==3)*df['work_high'].apply(np.log1p)",1 -"Size variable full-time worker, very high income","@(df.income_segment==4)*df['work_veryhigh'].apply(np.log1p)",1 -"No attractions full-time worker, low income","@(df.income_segment==1)&(df['work_low']==0)",-999 -"No attractions full-time worker, medium income","@(df.income_segment==2)&(df['work_med']==0)",-999 -"No attractions full-time worker, high income","@(df.income_segment==3)&(df['work_high']==0)",-999 -"No attractions full-time worker, very high income","@(df.income_segment==4)&(df['work_veryhigh']==0)",-999 +Description,Expression,work_low,work_med,work_high,work_veryhigh +,_DIST@skims['DIST'],1,1,1,1 +"Distance, piecewise linear from 0 to 1 miles","@_DIST.clip(0,1)",-0.8428,-0.8428,-0.8428,-0.8428 +"Distance, piecewise linear from 1 to 2 miles","@(_DIST-1).clip(0,1)",-0.3104,-0.3104,-0.3104,-0.3104 +"Distance, piecewise linear from 2 to 5 miles","@(_DIST-2).clip(0,3)",-0.3783,-0.3783,-0.3783,-0.3783 +"Distance, piecewise linear from 5 to 15 miles","@(_DIST-5).clip(0,10)",-0.1285,-0.1285,-0.1285,-0.1285 +"Distance, piecewise linear for 15+ miles",@(_DIST-15.0).clip(0),-0.0917,-0.0917,-0.0917,-0.0917 +"Distance 0 to 5 mi, high and very high income",@_DIST.clip(upper=5),0,0,0.15,0.15 +"Distance 5+ mi, high and very high income",@(_DIST-5).clip(0),0,0,0.02,0.02 +Size variable,@(df['size_term'] * df['shadow_price_size_term_adjustment']).apply(np.log1p),1,1,1,1 +utility adjustment,@df['shadow_price_utility_adjustment'],1,1,1,1 +No attractions,@df['size_term']==0,-999,-999,-999,-999 diff --git a/example/output/.gitignore b/example/output/.gitignore index 4a2323ec0..b987779f4 100644 --- a/example/output/.gitignore +++ b/example/output/.gitignore @@ -3,3 +3,4 @@ *.prof *.h5 *.txt +*.yaml diff --git a/example/simulation.py b/example/simulation.py index da3a17d58..275827b11 100644 --- a/example/simulation.py +++ b/example/simulation.py @@ -1,40 +1,52 @@ -import orca +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import print_function + +# import sys +# if not sys.warnoptions: # noqa: E402 +# import warnings +# warnings.filterwarnings('error', category=Warning) +# warnings.filterwarnings('ignore', category=PendingDeprecationWarning, module='future') +# warnings.filterwarnings('ignore', category=FutureWarning, module='pandas') + +import logging + +# activitysim.abm imported for its side-effects (dependency injection) from activitysim import abm -from activitysim.core import tracing -import pandas as pd -import numpy as np -import os -from activitysim.core.tracing import print_elapsed_time -from activitysim.core.config import handle_standard_args +from activitysim.core import tracing +from activitysim.core import config from activitysim.core.config import setting - from activitysim.core import pipeline -handle_standard_args() +logger = logging.getLogger('activitysim') + -# comment out the line below to default base seed to 0 random seed -# so that run results are reproducible -# pipeline.set_rn_generator_base_seed(seed=None) +def run(): + config.handle_standard_args() -tracing.config_logger() + # specify None for a pseudo random base seed + # inject.add_injectable('rng_base_seed', 0) -t0 = print_elapsed_time() + tracing.config_logger() + config.filter_warnings() -MODELS = setting('models') + tracing.delete_csv_files() + # If you provide a resume_after argument to pipeline.run + # the pipeline manager will attempt to load checkpointed tables from the checkpoint store + # and resume pipeline processing on the next submodel step after the specified checkpoint + resume_after = setting('resume_after', None) -# If you provide a resume_after argument to pipeline.run -# the pipeline manager will attempt to load checkpointed tables from the checkpoint store -# and resume pipeline processing on the next submodel step after the specified checkpoint -resume_after = setting('resume_after', None) + if resume_after: + print("resume_after", resume_after) -if resume_after: - print "resume_after", resume_after + pipeline.run(models=setting('models'), resume_after=resume_after) -pipeline.run(models=MODELS, resume_after=resume_after) + # tables will no longer be available after pipeline is closed + pipeline.close_pipeline() -# tables will no longer be available after pipeline is closed -pipeline.close_pipeline() -t0 = print_elapsed_time("all models", t0) +if __name__ == '__main__': + run() diff --git a/example_azure/.gitignore b/example_azure/.gitignore new file mode 100644 index 000000000..c80916134 --- /dev/null +++ b/example_azure/.gitignore @@ -0,0 +1 @@ +output_*/ diff --git a/example_azure/README.MD b/example_azure/README.MD new file mode 100644 index 000000000..c9033bcd9 --- /dev/null +++ b/example_azure/README.MD @@ -0,0 +1,7 @@ + +## Azure Cloud Testing Configurations + + - example_mp - settings for the benchmark runs + - ubuntu - configuration scripts and notes for running ubuntu linux tests + - windows - configuration scripts and notes for running windows tests + - benchmarks - machine configurations, runtimes, and prices for the various run configurations \ No newline at end of file diff --git a/example_azure/benchmarks/benchmarks_full_run.txt b/example_azure/benchmarks/benchmarks_full_run.txt new file mode 100644 index 000000000..675510e9d --- /dev/null +++ b/example_azure/benchmarks/benchmarks_full_run.txt @@ -0,0 +1,157 @@ +------------ azure Windows 432GB 64 processors + +# run1 +mem_tick: 30 +strict: False +households_sample_size: 0 +chunk_size: 20000000000 +num_processes: 40 +stagger: 15 + +INFO - activitysim.core.mem - high water mark used: 188.825035095 timestamp: 08/11/2018 18:10:42 label: +INFO - activitysim.core.mem - high water mark rss: 314.619289398 timestamp: 08/11/2018 18:10:42 label: +INFO - activitysim.core.tracing - Time to execute everything : 7731.622 seconds (128.9 minutes) + +# run2 +mem_tick: 30 +strict: False +households_sample_size: 0 +chunk_size: 0 +num_processes: 30 +stagger: 15 + +INFO - activitysim.core.mem - high water mark used: 312.758975983 timestamp: 08/11/2018 20:17:16 label: +INFO - activitysim.core.mem - high water mark rss: 404.58372879 timestamp: 08/11/2018 20:17:16 label: +INFO - activitysim.core.tracing - Time to execute everything : 7880.258 seconds (131.3 minutes) + +#### + +multiprocess: True +mem_tick: 30 +strict: False +households_sample_size: 0 +chunk_size: 90000000000 +num_processes: 60 +stagger: 5 + +INFO - activitysim.core.mem - high water mark used: 319.38 timestamp: 11/12/2018 18:52:26 label: +INFO - activitysim.core.mem - high water mark rss: 506.01 timestamp: 11/12/2018 18:52:26 label: +INFO - activitysim.core.tracing - Time to execute everything : 5344.844 seconds (89.1 minutes) + + +------------ azure Windows 2TB 128 processors + +# 128 cpu 2TB ram $13.34/hour +AZ_VM_SIZE=Standard_M128s + +# Standard_M128s +households_sample_size: 0 +chunk_size: 0 +num_processes: 120 +stagger: 0 + + + +------------ azure linux 432GB 64 processors + +# 64 processor, 432 GiB RAM, 864 GiB SSD Temp, $4.011/hour +Standard_E64_v3 + +export OMP_NUM_THREADS=1 + +multiprocess: True +mem_tick: 0 +strict: False + +households_sample_size: 0 +chunk_size: 60000000000 +num_processes: 60 +stagger: 10 + + +INFO - activitysim.core.mem - high water mark used: 240.55 timestamp: 20/11/2018 15:21:53 label: mp_households_59.trip_purpose.completed +INFO - activitysim.core.mem - high water mark rss: 480.60 timestamp: 20/11/2018 15:21:53 label: mp_households_59.trip_purpose.completed +INFO - activitysim.core.tracing - Time to execute everything : 3609.947 seconds (60.2 minutes) + + +#### + + +mem_tick: 0 +households_sample_size: 0 +chunk_size: 64000000000 +num_processes: 64 +stagger: 5 + +export MKL_NUM_THREADS=1 +export NUMEXPR_NUM_THREADS=1 +export OMP_NUM_THREADS=1 +python simulation.py -d /datadrive/work/data/full + +INFO - activitysim.core.mem - high water mark used: 223.78 timestamp: 20/11/2018 16:34:41 label: mp_households_57.joint_tour_scheduling.completed +INFO - activitysim.core.mem - high water mark rss: 478.95 timestamp: 20/11/2018 16:34:41 label: mp_households_56._joint_tour_destination_logsums.completed +INFO - activitysim.core.tracing - Time to execute everything : 3636.418 seconds (60.6 minutes) + + +mem_tick: 0 +households_sample_size: 0 +chunk_size: 90000000000 +num_processes: 60 +stagger: 5 + +#### + +mem_tick: 0 +households_sample_size: 0 +chunk_size: 90000000000 +num_processes: 60 +stagger: 5 + +INFO - activitysim.core.mem - high water mark used: 233.90 timestamp: 20/11/2018 17:43:50 label: mp_households_2.non_mandatory_tour_scheduling.completed +INFO - activitysim.core.mem - high water mark rss: 473.74 timestamp: 20/11/2018 17:43:50 label: mp_households_2.non_mandatory_tour_scheduling.completed +INFO - activitysim.core.tracing - Time to execute everything : 3596.278 seconds (59.9 minutes) + +*** Full Activitysim run on Azure in one hour costs $5.00 *** +Azure Standard_E64_v3 +# 64 processor, 432 GiB RAM, 864 GiB SSD Temp, $4.011/hour +households_sample_size: 0 +chunk_size: 90000000000 +num_processes: 60 +Time to execute everything : 3596.278 seconds (59.9 minutes) +Max RAM 233.90GB + + +# with shadow pricing 10 iterations + +households_sample_size: 0 +chunk_size: 80000000000 +num_processes: 60 +stagger: 0 + +INFO - activitysim.core.mem - high water mark used: 342.87 timestamp: 18/12/2018 00:56:39 label: mp_households_50.non_mandatory_tour_scheduling.completed +INFO - activitysim.core.mem - high water mark rss: 574.65 timestamp: 18/12/2018 00:56:39 label: mp_households_50.non_mandatory_tour_scheduling.completed +INFO - activitysim.core.tracing - Time to execute everything : 8189.908 seconds (136.5 minutes) + + +------------ azure Windows 2TB 128 processors + +# 128 cpu 2TB ram $13.34/hour +AZ_VM_SIZE=Standard_M128s + +12/12/2018 03:32:11 - INFO - activitysim - process mp_households_62 failed with exitcode 1 +12/12/2018 03:32:13 - INFO - activitysim - process mp_households_70 failed with exitcode 1 +12/12/2018 03:32:40 - INFO - activitysim - process mp_households_53 failed with exitcode 1 +12/12/2018 03:32:54 - INFO - activitysim - process mp_households_57 failed with exitcode 1 +12/12/2018 03:33:09 - INFO - activitysim - process mp_households_45 failed with exitcode 1 +12/12/2018 03:33:13 - INFO - activitysim - process mp_households_51 failed with exitcode 1 +12/12/2018 03:33:32 - INFO - activitysim - process mp_households_31 failed with exitcode 1 +12/12/2018 04:13:57 - ERROR - activitysim - Process mp_households_31 failed with exitcode 1 +12/12/2018 04:13:57 - ERROR - activitysim - Process mp_households_45 failed with exitcode 1 +12/12/2018 04:13:57 - ERROR - activitysim - Process mp_households_51 failed with exitcode 1 +12/12/2018 04:13:57 - ERROR - activitysim - Process mp_households_53 failed with exitcode 1 +12/12/2018 04:13:57 - ERROR - activitysim - Process mp_households_57 failed with exitcode 1 +12/12/2018 04:13:57 - ERROR - activitysim - Process mp_households_62 failed with exitcode 1 +12/12/2018 04:13:57 - ERROR - activitysim - Process mp_households_70 failed with exitcode 1 + + +12/12/2018 04:13:57 - INFO - activitysim.core.tracing - Time to execute run_sub_simulations step mp_households : 2783.16 seconds (46.4 minutes) diff --git a/example_azure/benchmarks/benchmarks_full_shadow.txt b/example_azure/benchmarks/benchmarks_full_shadow.txt new file mode 100644 index 000000000..58f47cb87 --- /dev/null +++ b/example_azure/benchmarks/benchmarks_full_shadow.txt @@ -0,0 +1,52 @@ +------------ azure linux 432GB 64 processors + +households_sample_size: 0 +chunk_size: 80000000000 +num_processes: 60 +stagger: 0 + + +# 64 processor, 432 GiB RAM, 864 GiB SSD Temp, $4.011/hour +Standard_E64_v3 + +# just run models through workplace_location + +school_location : 937.825 seconds (15.6 minutes) +workplace_location : 2038.713 seconds (34.0 minutes) + + +MAX_ITERATIONS: 10 +SHADOW_PRICE_METHOD: daysim + +INFO - activitysim.core.mem - high water mark used: 96.55 timestamp: 21/12/2018 20:48:39 label: mp_households_44.school_location.completed +INFO - activitysim.core.mem - high water mark rss: 338.87 timestamp: 21/12/2018 20:48:39 label: mp_households_44.school_location.completed +INFO - activitysim.core.tracing - Time to execute everything : 3210.843 seconds (53.5 minutes) + +TAR_TAG=azure-64-ubuntu-shadow_daysim +scp $AZ_USERNAME@$VM_IP:/datadrive/work/activitysim/example_mp/sp_daysim_output.tar.gz example_azure/output_ubuntu/$TAR_TAG-output.tar.gz + + +MAX_ITERATIONS: 10 +SHADOW_PRICE_METHOD: ctramp + + +INFO - activitysim.core.tracing - Time to execute run_sub_simulations step mp_summarize : 9.111 seconds (0.2 minutes) +INFO - activitysim.core.mem - high water mark used: 96.08 timestamp: 21/12/2018 21:49:13 label: mp_households_13.school_location.completed +INFO - activitysim.core.mem - high water mark rss: 337.22 timestamp: 21/12/2018 21:49:13 label: mp_households_13.school_location.completed +INFO - activitysim.core.tracing - Time to execute everything : 3212.896 seconds (53.5 minutes) + + + +school_location : 937.825 seconds (15.6 minutes) +workplace_location : 2038.713 seconds (34.0 minutes) + + +########## + + +# - copy shadow prices to data dir +scp ~/work/activitysim/example_azure/output_ubuntu/azure-64-ubuntu-shadow_daysim-output/trace/shadow_price_school_shadow_prices_9.csv $AZ_USERNAME@$VM_IP:/datadrive/work/data/full/school_shadow_prices.csv +scp ~/work/activitysim/example_azure/output_ubuntu/azure-64-ubuntu-shadow_daysim-output/trace/shadow_price_workplace_shadow_prices_9.csv $AZ_USERNAME@$VM_IP:/datadrive/work/data/full/workplace_shadow_prices.csv + + +scp ~/work/activitysim/example_azure/example_mp/settings.yaml $AZ_USERNAME@$VM_IP:/datadrive/work/activitysim/example_mp/configs/settings.yaml diff --git a/example_azure/benchmarks/benchmarks_stride_run.txt b/example_azure/benchmarks/benchmarks_stride_run.txt new file mode 100644 index 000000000..dd257a47b --- /dev/null +++ b/example_azure/benchmarks/benchmarks_stride_run.txt @@ -0,0 +1,17 @@ + +# 50% stride + +python simulation.py -s 2,0 -d /datadrive/work/data/full + +multiprocess: True +mem_tick: 0 +strict: False + +households_sample_size: 0 +chunk_size: 90000000000 +num_processes: 60 +stagger: 5 + +INFO - activitysim.core.mem - high water mark used: 118.81 timestamp: 20/11/2018 21:02:18 label: mp_households_59.trip_purpose.completed +INFO - activitysim.core.mem - high water mark rss: 359.20 timestamp: 20/11/2018 21:02:18 label: mp_households_59.trip_purpose.completed +INFO - activitysim.core.tracing - Time to execute everything : 2202.026 seconds (36.7 minutes) diff --git a/example_azure/example_mp/logging.yaml b/example_azure/example_mp/logging.yaml new file mode 100644 index 000000000..0e8ef6eef --- /dev/null +++ b/example_azure/example_mp/logging.yaml @@ -0,0 +1,57 @@ +# Config for logging +# ------------------ +# See http://docs.python.org/2.7/library/logging.config.html#configuration-dictionary-schema + +logging: + version: 1 + disable_existing_loggers: true + + + # Configuring the default (root) logger is highly recommended + root: + level: DEBUG + handlers: [console, logfile] + + loggers: + + activitysim: + level: DEBUG + handlers: [console, logfile] + propagate: false + + orca: + level: WARNING + handlers: [console, logfile] + propagate: false + + handlers: + + logfile: + class: logging.FileHandler + filename: !!python/object/apply:activitysim.core.config.log_file_path ['activitysim.log'] + mode: w + formatter: fileFormatter + level: NOTSET + + console: + class: logging.StreamHandler + stream: ext://sys.stdout + formatter: simpleFormatter + #level: WARNING + level: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [WARNING, NOTSET] + + formatters: + + simpleFormatter: + class: logging.Formatter + #format: '%(processName)-10s %(levelname)s - %(name)s - %(message)s' + format: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [ + '%(processName)-10s %(levelname)s - %(name)s - %(message)s', + '%(levelname)s - %(name)s - %(message)s'] + datefmt: '%d/%m/%Y %H:%M:%S' + + fileFormatter: + class: logging.Formatter + format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' + diff --git a/example_azure/example_mp/settings.yaml b/example_azure/example_mp/settings.yaml new file mode 100644 index 000000000..41ca9ecb6 --- /dev/null +++ b/example_azure/example_mp/settings.yaml @@ -0,0 +1,128 @@ + +inherit_settings: True + +# raise error if any sub-process fails without waiting for others to complete +fail_fast: True + +# - ------------------------- production config +multiprocess: True +strict: False +mem_tick: 0 +use_shadow_pricing: True + + +# - full sample - 2875192 households on 64 processor 432 GiB RAM +#households_sample_size: 0 +#chunk_size: 80000000000 +#num_processes: 60 +#stagger: 0 + +# - full sample - 2875192 households on Standard_M128s +#households_sample_size: 0 +#chunk_size: 0 +#num_processes: 124 +#stagger: 0 + +# - 20% sample - 2875192 households on 64 processor 432 GiB RAM +#households_sample_size: 546544 +#chunk_size: 10000000000 +#num_processes: 15 +#stagger: 0 + + +## - ------------------------- dev config +#multiprocess: True +#strict: False +#mem_tick: 30 +#use_shadow_pricing: True +# +## - small sample +#households_sample_size: 5000 +#chunk_size: 500000000 +#num_processes: 2 +#stagger: 5 +# +# - stride sample +#households_sample_size: 0 +#chunk_size: 1000000000 +#num_processes: 1 + +# - tracing +trace_hh_id: +trace_od: +#trace_hh_id: 1482966 +#trace_od: [5, 11] + +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: trip_purpose_and_destination + +models: + ### mp_initialize step + - initialize_landuse + - compute_accessibility + - initialize_households + ### mp_households step + - school_location + - workplace_location + - auto_ownership_simulate + - free_parking + - cdap_simulate + - mandatory_tour_frequency + - mandatory_tour_scheduling + - joint_tour_frequency + - joint_tour_composition + - joint_tour_participation + - _joint_tour_destination_sample + - _joint_tour_destination_logsums + - joint_tour_destination_simulate + - joint_tour_scheduling + - non_mandatory_tour_frequency + - non_mandatory_tour_destination + - non_mandatory_tour_scheduling + - tour_mode_choice_simulate + - atwork_subtour_frequency + - _atwork_subtour_destination_sample + - _atwork_subtour_destination_logsums + - atwork_subtour_destination_simulate + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination + - trip_purpose_and_destination + - trip_scheduling + - trip_mode_choice + ### mp_summarize step + - write_data_dictionary + - write_tables + +multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_households + begin: school_location + #num_processes: 9 + #stagger: 30 + #chunk_size: 1000000000 + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_data_dictionary + + +output_tables: + action: include + prefix: final_ + tables: +# - checkpoints +# - accessibility +# - land_use +# - households +# - persons +# - trips +# - tours + - school_shadow_prices + - workplace_shadow_prices + diff --git a/example_azure/ubuntu/azure_env.txt b/example_azure/ubuntu/azure_env.txt new file mode 100644 index 000000000..68537e162 --- /dev/null +++ b/example_azure/ubuntu/azure_env.txt @@ -0,0 +1,19 @@ +AZ_VM_NUMBER=1 + +AZ_VM_NAME=ubuntu$AZ_VM_NUMBER +AZ_RESOURCE_GROUP=jeffdoyle +AZ_USERNAME=azureuser +AZ_LOCATION=eastus +AZ_VM_IMAGE=UbuntuLTS + +SHARE_NAME=myshare + + +########## + +STORAGEACCT=mystorageacct32320 + +STORAGEKEY=$(az storage account keys list \ + --resource-group $AZ_RESOURCE_GROUP \ + --account-name $STORAGEACCT \ + --query "[0].value" | tr -d '"') diff --git a/example_azure/ubuntu/step1_create_vm.txt b/example_azure/ubuntu/step1_create_vm.txt new file mode 100644 index 000000000..f282247b3 --- /dev/null +++ b/example_azure/ubuntu/step1_create_vm.txt @@ -0,0 +1,145 @@ + + +# 128 GiB SSD Temp - want enough temp to create 64GB swap +AZ_VM_SIZE=Standard_D16s_v3 + + +########################## create vm + +az vm create \ + --resource-group $AZ_RESOURCE_GROUP \ + --name $AZ_VM_NAME \ + --image $AZ_VM_IMAGE \ + --admin-username $AZ_USERNAME \ + --size $AZ_VM_SIZE + +########################## add a standard sdd managed disk + +#https://docs.microsoft.com/en-us/azure/virtual-machines/linux/add-disk + +MANAGED_DISK_NAME=datadisk$AZ_VM_NUMBER +DISK_SIZE_GB=200 +DISK_SKU=StandardSSD_LRS +# Premium_LRS, StandardSSD_LRS, Standard_LRS, UltraSSD_LRS + +az vm disk attach \ + -g $AZ_RESOURCE_GROUP \ + --vm-name $AZ_VM_NAME \ + --disk $MANAGED_DISK_NAME \ + --new \ + --size-gb $DISK_SIZE_GB \ + --sku $DISK_SKU + + +########################## start vm + +az vm start --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME +VM_IP=$(az vm list-ip-addresses -n $AZ_VM_NAME --query [0].virtualMachine.network.publicIpAddresses[0].ipAddress -o tsv) + +ssh $AZ_USERNAME@$VM_IP + + +########################## prepare managed disk + +#dmesg | grep SCSI + +(echo n; echo p; echo 1; echo ; echo ; echo w) | sudo fdisk /dev/sdc + + # sudo fdisk /dev/sdc + # Welcome to fdisk (util-linux 2.27.1). + # Changes will remain in memory only, until you decide to write them. + # Be careful before using the write command. + # + # Device does not contain a recognized partition table. + # Created a new DOS disklabel with disk identifier 0x06c86a75. + # + # Command (m for help): n + # Partition type + # p primary (0 primary, 0 extended, 4 free) + # e extended (container for logical partitions) + # Select (default p): p + # Partition number (1-4, default 1): 1 + # First sector (2048-209715199, default 2048): + # Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): + # + # Created a new partition 1 of type 'Linux' and of size 100 GiB. + # + # Command (m for help): p + # Disk /dev/sdc: 100 GiB, 107374182400 bytes, 209715200 sectors + # Units: sectors of 1 * 512 = 512 bytes + # Sector size (logical/physical): 512 bytes / 4096 bytes + # I/O size (minimum/optimal): 4096 bytes / 4096 bytes + # Disklabel type: dos + # Disk identifier: 0x06c86a75 + # + # Device Boot Start End Sectors Size Id Type + # /dev/sdc1 2048 209715199 209713152 100G 83 Linux + # + # Command (m for help): w + # The partition table has been altered. + # Calling ioctl() to re-read partition table. + # Syncing disks. + + +sudo mkfs -t ext4 /dev/sdc1 +sudo mkdir /datadrive +sudo mount /dev/sdc1 /datadrive + +sudo chmod g+w /datadrive +sudo chmod a+wt /datadrive + +# To ensure that the drive is remounted after a reboot, it must be added to the /etc/fstab file. +# The following assumes there are no other added drives that might be assigned to /dev/sdc1 +echo "/dev/sdc1 /datadrive ext4 defaults,nofail 1 2" | sudo tee -a /etc/fstab >/dev/null + +# make sure it worked +df -h + +########################## add swap file (optional) + +# https://support.microsoft.com/en-us/help/4010058/how-to-add-a-swap-file-in-linux-azure-virtual-machines + +#SWAP_SIZE_MB=64000 + +sudo sed -i 's/ResourceDisk.Format=n/ResourceDisk.Format=y/g' /etc/waagent.conf +sudo sed -i 's/ResourceDisk.EnableSwap=n/ResourceDisk.EnableSwap=y/g' /etc/waagent.conf +sudo sed -i 's/ResourceDisk.SwapSizeMB=0/ResourceDisk.SwapSizeMB=64000/g' /etc/waagent.conf + + +# sudo nano /etc/waagent.conf +# +# # ResourceDisk.Format=y +# # ResourceDisk.EnableSwap=y +# # ResourceDisk.SwapSizeMB=64000 + +sudo service walinuxagent restart + +# make sure it worked +free + +########################## mount smb shared drive (one time) + +sudo mkdir /mnt/fileshare +sudo mount -t cifs //$STORAGEACCT.file.core.windows.net/$SHARE_NAME /mnt/fileshare -o vers=3.0,username=$STORAGEACCT,password=$STORAGEKEY,dir_mode=0777,file_mode=0777,serverino + + +########################## init work dir + +mkdir /datadrive/work + +# copy from smb fileshare to datadrive +cp -r /mnt/fileshare/work/data /datadrive/work/data/ + +# show size +du -h --max-depth=1 /datadrive/work/data/ + + +########################## exit + +exit + + +########################## deallocate vm +az vm deallocate --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME + + diff --git a/example_azure/ubuntu/step2_config_asim.txt b/example_azure/ubuntu/step2_config_asim.txt new file mode 100644 index 000000000..b1be8928a --- /dev/null +++ b/example_azure/ubuntu/step2_config_asim.txt @@ -0,0 +1,49 @@ + +az vm start --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME +VM_IP=$(az vm list-ip-addresses -n $AZ_VM_NAME --query [0].virtualMachine.network.publicIpAddresses[0].ipAddress -o tsv) + +ssh $AZ_USERNAME@$VM_IP + +############### install conda + +CONDA_HOME=/datadrive/work + +cd $CONDA_HOME + +wget http://repo.anaconda.com/miniconda/Miniconda2-latest-Linux-x86_64.sh -O miniconda.sh +bash miniconda.sh -b -p $CONDA_HOME/miniconda +export PATH="/datadrive/work/miniconda/bin:$PATH" +hash -r + +conda config --set always_yes yes --set changeps1 yes +conda update conda +conda info -a + + +############### clone asim + +ASIM_HOME=/datadrive/work + +cd $ASIM_HOME +git clone https://github.com/ActivitySim/activitysim.git activitysim +cd activitysim +git checkout dev + +# create asim virtualenv + +conda remove --name asim --all + +conda create -n asim python=2.7 cytoolz numpy pandas pip pytables pyyaml toolz psutil +source activate asim +pip install openmatrix zbox future + +cd $ASIM_HOME/activitysim +pip install -e . +pip freeze + + +########################## deallocate vm +az vm deallocate --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME + + + diff --git a/example_azure/ubuntu/step3_run_asim.txt b/example_azure/ubuntu/step3_run_asim.txt new file mode 100644 index 000000000..6009558d8 --- /dev/null +++ b/example_azure/ubuntu/step3_run_asim.txt @@ -0,0 +1,104 @@ + +#AZ_VM_SIZE=Standard_D16s_v3 + + +# 64 processor, 432 GiB RAM, 864 GiB SSD Temp, $4.011/hour +#AZ_VM_SIZE=Standard_E64s_v3 + +# 128 cpu 2TB ram $13.34/hour +#AZ_VM_SIZE=Standard_M128s + +############### resize + +az vm deallocate --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME +az vm resize --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME --size $AZ_VM_SIZE + + +############### start + +az vm start --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME +VM_IP=$(az vm list-ip-addresses -n $AZ_VM_NAME --query [0].virtualMachine.network.publicIpAddresses[0].ipAddress -o tsv) + + +# copy settings to example_mp/configs +scp example_mp/configs/settings.yaml $AZ_USERNAME@$VM_IP:/datadrive/work/activitysim/example_mp/configs/settings.yaml +scp example_mp/configs/shadow_pricing.yaml $AZ_USERNAME@$VM_IP:/datadrive/work/activitysim/example_mp/configs/shadow_pricing.yaml +#scp example_mp/configs/logging.yaml $AZ_USERNAME@$VM_IP:/datadrive/work/activitysim/example_mp/configs/logging.yaml +scp example_mp/configs/school_location.yaml $AZ_USERNAME@$VM_IP:/datadrive/work/activitysim/example_mp/configs/school_location.yaml +scp example_mp/configs/workplace_location.yaml $AZ_USERNAME@$VM_IP:/datadrive/work/activitysim/example_mp/configs/workplace_location.yaml + + +############### run + +ssh $AZ_USERNAME@$VM_IP + +export PATH="/datadrive/work/miniconda/bin:$PATH" +hash -r + +source activate asim + +# - git +#cd /datadrive/work/activitysim +#git stash +#git pull +#git stash pop +#git stash drop + + +# - copy shadow prices to data dir +#cp output/final_school_shadow_prices.csv /datadrive/work/data/full/school_shadow_prices.csv +#cp output/final_workplace_shadow_prices.csv /datadrive/work/data/full/workplace_shadow_prices.csv + +# - delete shadow prices from data dir +#rm /datadrive/work/data/full/school_shadow_prices.csv +#rm /datadrive/work/data/full/workplace_shadow_prices.csv + +cd /datadrive/work/activitysim/example_mp + +#nano configs/settings.yaml + +export OPENBLAS_NUM_THREADS=1 +export MKL_NUM_THREADS=1 +export NUMEXPR_NUM_THREADS=1 +export OMP_NUM_THREADS=1 + +python simulation.py -d /datadrive/work/data/full + +tail -f output/log/mp_households_0-activitysim.log + +tar zcvf output.tar.gz output/log/ output/trace/ + +exit + +TAR_TAG=azure-64-ubuntu-shadow_daysim_warm +scp $AZ_USERNAME@$VM_IP:/datadrive/work/activitysim/example_mp/output.tar.gz example_azure/output_ubuntu/$TAR_TAG-output.tar.gz + +############### + +az vm stop --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME +az vm deallocate --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME + + +############### mount smb + +# on dev + +STORAGEKEY=$(az storage account keys list \ + --resource-group $AZ_RESOURCE_GROUP \ + --account-name $STORAGEACCT \ + --query "[0].value" | tr -d '"') + +echo "STORAGEKEY=$STORAGEKEY" + +# on ubuntu + +STORAGEKEY= +STORAGEACCT=mystorageacct32320 +SHARE_NAME=myshare +sudo mkdir /mnt/fileshare +sudo mount -t cifs //$STORAGEACCT.file.core.windows.net/$SHARE_NAME /mnt/fileshare -o vers=3.0,username=$STORAGEACCT,password=$STORAGEKEY,dir_mode=0777,file_mode=0777,serverino + +FILE_NAME=windows1_128_run_1.zip +DEST_DIR=output_windows +scp $AZ_USERNAME@$VM_IP:/mnt/fileshare/work/$FILE_NAME $DEST_DIR/$FILE_NAME + diff --git a/example_azure/ubuntu/util_create_smb_fileshare.txt b/example_azure/ubuntu/util_create_smb_fileshare.txt new file mode 100644 index 000000000..62147b8a2 --- /dev/null +++ b/example_azure/ubuntu/util_create_smb_fileshare.txt @@ -0,0 +1,38 @@ + +########################## SMB File Share + +STORAGE_QUOTA_GB=2048 +SHARE_NAME=myshare + +STORAGEACCT=$(az storage account create \ + --resource-group $AZ_RESOURCE_GROUP \ + --name "mystorageacct$RANDOM" \ + --location $AZ_LOCATION \ + --sku Standard_LRS \ + --query "name" | tr -d '"') + + + +STORAGEKEY=$(az storage account keys list \ + --resource-group $AZ_RESOURCE_GROUP \ + --account-name $STORAGEACCT \ + --query "[0].value" | tr -d '"') + +az storage share create --name $SHARE_NAME \ + --quota $STORAGE_QUOTA_GB \ + --account-name $STORAGEACCT \ + --account-key $STORAGEKEY + + +echo $STORAGEACCT +echo $STORAGEKEY + + +# mount on local windows machine + +# assign $STORAGEACCT and $STORAGEKEY to Windows variables + +Test-NetConnection -ComputerName $STORAGEACCT.file.core.windows.net -Port 445 + +net use Z: \\$STORAGEACCT.file.core.windows.net\myshare /u:AZURE\$STORAGEACCT $STORAGEKEY + diff --git a/example_azure/ubuntu/util_resize_managed_storage.txt b/example_azure/ubuntu/util_resize_managed_storage.txt new file mode 100644 index 000000000..30dee96ca --- /dev/null +++ b/example_azure/ubuntu/util_resize_managed_storage.txt @@ -0,0 +1,53 @@ +########################## resize managed storage + +#https://docs.microsoft.com/en-us/azure/virtual-machines/linux/expand-disks + +DISK_NAME=datadisk$AZ_VM_NUMBER + + +az vm deallocate --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME + +az disk list \ + --resource-group $AZ_RESOURCE_GROUP \ + --query '[*].{Name:name,Gb:diskSizeGb,Tier:accountType}' \ + --output table + +az disk update \ + --resource-group $AZ_RESOURCE_GROUP \ + --name $DISK_NAME \ + --size-gb 200 + +az vm start --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME + +VM_IP=$(az vm list-ip-addresses -n $AZ_VM_NAME --query [0].virtualMachine.network.publicIpAddresses[0].ipAddress -o tsv) + +ssh $AZ_USERNAME@$VM_IP + +sudo umount /dev/sdc1 + +sudo parted /dev/sdc + print + # Model: Msft Virtual Disk (scsi) + # Disk /dev/sdc: 215GB + # Sector size (logical/physical): 512B/4096B + # Partition Table: msdos + # Disk Flags: + # + # Number Start End Size Type File system Flags + # 1 1049kB 107GB 107GB primary ext4 + resizepart + # Partition number? 1 + # End? [107GB]? 215GB + # (parted) quit + # Information: You may need to update /etc/fstab. + quit + +sudo e2fsck -f /dev/sdc1 + +sudo resize2fs /dev/sdc1 + +sudo mount /dev/sdc1 /datadrive + + +# make sure it worked +df -h diff --git a/example_azure/ubuntu/vm_sizes.txt b/example_azure/ubuntu/vm_sizes.txt new file mode 100644 index 000000000..1acecb685 --- /dev/null +++ b/example_azure/ubuntu/vm_sizes.txt @@ -0,0 +1,24 @@ +# # 2 processor, 8 GiB RAM, 16 GiB SSD Temp, $0.096/hour +# Standard_D2s_v3 +# +# # 4 processor, 16 GiB RAM, 32 GiB SSD Temp, $0.192/hour +# Standard_D4s_v3 + +# 16 processor, 64 GiB RAM, 128 GiB SSD Temp, $0.768/hour +Standard_D16s_v3 + +# 32 processor, 128 GiB RAM, 256 GiB SSD Temp, $1.536/hour +Standard_D32s_v3 + +# 64 processor, 256 GiB RAM, 512 GiB SSD Temp, $3.072/hour +Standard_D64s_v3 + +# 64 processor, 432 GiB RAM, 864 GiB SSD Temp, $4.011/hour +Standard_E64s_v3 + +# 128 cpu 2TB ram $13.34/hour +Standard_M128s + + + +az vm list-sizes --location eastus --output table \ No newline at end of file diff --git a/example_azure/windows/azure_env.txt b/example_azure/windows/azure_env.txt new file mode 100644 index 000000000..415f7ef0e --- /dev/null +++ b/example_azure/windows/azure_env.txt @@ -0,0 +1,9 @@ +AZ_VM_NUMBER=1 + +AZ_VM_NAME=windows$AZ_VM_NUMBER +AZ_RESOURCE_GROUP=jeffdoyle +AZ_USERNAME=azureuser +AZ_LOCATION=eastus +AZ_VM_IMAGE=Win2016Datacenter + +SHARE_NAME=myshare diff --git a/example_azure/windows/step1_create_vm.txt b/example_azure/windows/step1_create_vm.txt new file mode 100644 index 000000000..d051164c5 --- /dev/null +++ b/example_azure/windows/step1_create_vm.txt @@ -0,0 +1,117 @@ +# 128 GiB SSD Temp - want enough temp to create 64GB swap +AZ_VM_SIZE=Standard_D16s_v3 + + +########################## create vm + +az vm create \ + --resource-group $AZ_RESOURCE_GROUP \ + --name $AZ_VM_NAME \ + --image $AZ_VM_IMAGE \ + --admin-username $AZ_USERNAME \ + --size $AZ_VM_SIZE + + +########################## add a standard sdd managed disk + +#https://docs.microsoft.com/en-us/azure/virtual-machines/windows/attach-managed-disk-portal + +MANAGED_DISK_NAME=datadisk_w$AZ_VM_NUMBER +DISK_SIZE_GB=200 +DISK_SKU=StandardSSD_LRS +# Premium_LRS, StandardSSD_LRS, Standard_LRS, UltraSSD_LRS + +az vm disk attach \ + -g $AZ_RESOURCE_GROUP \ + --vm-name $AZ_VM_NAME \ + --disk $MANAGED_DISK_NAME \ + --new \ + --size-gb $DISK_SIZE_GB \ + --sku $DISK_SKU + + + +########################## connect to vm + +choose connect link in azure portal to open remote desktop + +az vm start --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME + +#VM_IP=$(az vm list-ip-addresses -n $AZ_VM_NAME --query [0].virtualMachine.network.publicIpAddresses[0].ipAddress -o tsv) + + + +########################## initialize managed disk + +Initialize a new data disk as E: drive +* Connect to the VM. +* Select the Windows Start menu inside the running VM and enter diskmgmt.msc in the search box. The Disk Management console opens. +* Disk Management recognizes that you have a new, uninitialized disk and the Initialize Disk window appears. +* Verify the new disk is selected and then select OK to initialize it. +* The new disk appears as unallocated. Right-click anywhere on the disk and select New simple volume. The New Simple Volume Wizard window opens. +* Proceed through the wizard, keeping all of the defaults, and when you're done select Finish. +* Close Disk Management. +* A pop-up window appears notifying you that you need to format the new disk before you can use it. Select Format disk. +* In the Format new disk window, check the settings, and then select Start. +* A warning appears notifying you that formatting the disks erases all of the data. Select OK. +* When the formatting is complete, select OK. + + +########################## mount smb disk + +smb disk: +https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-use-files-windows + +# Install Azure PowerShell with PowerShellGet +# https://docs.microsoft.com/en-us/powershell/azure/install-azurerm-ps?view=azurermps-6.13.0 +Install-Module -Name AzureRM -AllowClobber + + +$resourceGroupName = "" +$storageAccountName = "" + +$resourceGroupName = "jeffdoyle" +$storageAccountName = "mystorageacct32320" + +# Ensure port 445 is open +Test-NetConnection -ComputerName $storageAccountName.file.core.windows.net -Port 445 + +# log in to azure +Login-AzureRmAccount + +# These commands require you to be logged into your Azure account, run Login-AzureRmAccount if you haven't +# already logged in. +$storageAccount = Get-AzureRmStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName +$storageAccountKeys = Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName + +# The cmdkey utility is a command-line (rather than PowerShell) tool. We use Invoke-Expression to allow us to +# consume the appropriate values from the storage account variables. The value given to the add parameter of the +# cmdkey utility is the host address for the storage account, .file.core.windows.net for Azure +# Public Regions. $storageAccount.Context.FileEndpoint is used because non-Public Azure regions, such as sovereign +# clouds or Azure Stack deployments, will have different hosts for Azure file shares (and other storage resources). +Invoke-Expression -Command "cmdkey /add:$([System.Uri]::new($storageAccount.Context.FileEndPoint).Host)/user:AZURE\$($storageAccount.StorageAccountName) /pass:$($storageAccountKeys[0].Value)" + +# trust but verify +cmdkey /list + + +# Mount the Azure file share with PowerShell (persist) + +$fileShareName = "myshare" +$driveLetter = "F" + +$fileShare = Get-AzureStorageShare -Context $storageAccount.Context | Where-Object { + $_.Name -eq $fileShareName -and $_.IsSnapshot -eq $false +} + +if ($fileShare -eq $null) { + throw [System.Exception]::new("Azure file share not found") +} + +# The value given to the root parameter of the New-PSDrive cmdlet is the host address for the storage account, +# .file.core.windows.net for Azure Public Regions. $fileShare.StorageUri.PrimaryUri.Host is +# used because non-Public Azure regions, such as sovereign clouds or Azure Stack deployments, will have different +# hosts for Azure file shares (and other storage resources). +$password = ConvertTo-SecureString -String $storageAccountKeys[0].Value -AsPlainText -Force +$credential = New-Object System.Management.Automation.PSCredential -ArgumentList "AZURE\$($storageAccount.StorageAccountName)", $password +New-PSDrive -Name $driveLetter -PSProvider FileSystem -Root "\\$($fileShare.StorageUri.PrimaryUri.Host)\$($fileShare.Name)" -Credential $credential -Persist diff --git a/example_azure/windows/step2_config_asim.txt b/example_azure/windows/step2_config_asim.txt new file mode 100644 index 000000000..6ecd5e985 --- /dev/null +++ b/example_azure/windows/step2_config_asim.txt @@ -0,0 +1,66 @@ + +###################### install chocolatey and git from powershell administrater + +# install chocolatey +Get-ExecutionPolicy +Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) + +# install git and unix tools using chocolatey +choco install git -params '"/GitAndUnixToolsOnPath"' + +# install 7zip +choco install 7zip.install + +refreshenv + +exit + + +###################### install miniconda locally in E:\miniconda2 + +E:\ + +wget https://repo.continuum.io/miniconda/Miniconda2-latest-Windows-x86_64.exe -OutFile install_miniconda.exe +.\install_miniconda.exe /InstallationType=JustMe /RegisterPython=0 /S /D=E:\miniconda2 + +# activate conda base +E:\miniconda2\Scripts\activate.bat E:\miniconda2 + + +################################################ switch to anaconda prompt + + +########################## init work dir + + +# copy from smb fileshare to datadrive +xcopy /E Z:\work\data E:\data\ + + +###################### clone activitysim repo + +git clone https://github.com/ActivitySim/activitysim.git activitysim + +cd activitysim + +git checkout dev + +###################### create asim conda env + +$env:Path += ";E:\miniconda2\Scripts" + + +# activate conda base +activate.bat E:\miniconda2 + +#conda remove --name asim --all + +conda create -n asim python=2.7 cytoolz numpy pandas pip pytables pyyaml toolz psutil +activate.bat asim +pip install openmatrix zbox future + +git status +pip install -e . + +cd example_mp +python simulation.py -d C:\Users\azureuser\work\sf_county_data diff --git a/example_azure/windows/step3_run.txt b/example_azure/windows/step3_run.txt new file mode 100644 index 000000000..b3f34a5fb --- /dev/null +++ b/example_azure/windows/step3_run.txt @@ -0,0 +1,39 @@ + + + +# 64 processor, 432 GiB RAM, 864 GiB SSD Temp, $4.011/hour +#AZ_VM_SIZE=Standard_E64s_v3 + +# 128 cpu 2TB ram $13.34/hour +AZ_VM_SIZE=Standard_M128s + +############### resize + +az vm deallocate --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME +az vm resize --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME --size $AZ_VM_SIZE + +az vm start --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME + + +az vm stop --resource-group $AZ_RESOURCE_GROUP --name $AZ_VM_NAME + +################################################ anaconda prompt + +cd example_mp + +git status + +activate asim + +set OPENBLAS_NUM_THREADS=1 +set MKL_NUM_THREADS=1 +set NUMEXPR_NUM_THREADS=1 +set OMP_NUM_THREADS=1 + + +python simulation.py -d E:\data\full -m + +python simulation.py -d E:\data\sf_county -m + + +# diff --git a/example_mp/.gitignore b/example_mp/.gitignore new file mode 100644 index 000000000..c80916134 --- /dev/null +++ b/example_mp/.gitignore @@ -0,0 +1 @@ +output_*/ diff --git a/example_mp/README.MD b/example_mp/README.MD new file mode 100644 index 000000000..10fae5f6a --- /dev/null +++ b/example_mp/README.MD @@ -0,0 +1,4 @@ + +### Multiprocessing example + +The primary ActivitySim example model multiprocessed. See https://activitysim.github.io/activitysim for more information. \ No newline at end of file diff --git a/example_mp/configs/logging.yaml b/example_mp/configs/logging.yaml new file mode 100644 index 000000000..0e8ef6eef --- /dev/null +++ b/example_mp/configs/logging.yaml @@ -0,0 +1,57 @@ +# Config for logging +# ------------------ +# See http://docs.python.org/2.7/library/logging.config.html#configuration-dictionary-schema + +logging: + version: 1 + disable_existing_loggers: true + + + # Configuring the default (root) logger is highly recommended + root: + level: DEBUG + handlers: [console, logfile] + + loggers: + + activitysim: + level: DEBUG + handlers: [console, logfile] + propagate: false + + orca: + level: WARNING + handlers: [console, logfile] + propagate: false + + handlers: + + logfile: + class: logging.FileHandler + filename: !!python/object/apply:activitysim.core.config.log_file_path ['activitysim.log'] + mode: w + formatter: fileFormatter + level: NOTSET + + console: + class: logging.StreamHandler + stream: ext://sys.stdout + formatter: simpleFormatter + #level: WARNING + level: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [WARNING, NOTSET] + + formatters: + + simpleFormatter: + class: logging.Formatter + #format: '%(processName)-10s %(levelname)s - %(name)s - %(message)s' + format: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [ + '%(processName)-10s %(levelname)s - %(name)s - %(message)s', + '%(levelname)s - %(name)s - %(message)s'] + datefmt: '%d/%m/%Y %H:%M:%S' + + fileFormatter: + class: logging.Formatter + format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' + diff --git a/example_mp/configs/settings.yaml b/example_mp/configs/settings.yaml new file mode 100644 index 000000000..6439f6924 --- /dev/null +++ b/example_mp/configs/settings.yaml @@ -0,0 +1,122 @@ + +inherit_settings: True + +# raise error if any sub-process fails without waiting for others to complete +fail_fast: True + +# - ------------------------- production config +#multiprocess: True +#strict: False +#mem_tick: 0 +#use_shadow_pricing: True + +# - full sample - 2875192 households on 64 processor 432 GiB RAM +#households_sample_size: 0 +#chunk_size: 80000000000 +#num_processes: 60 +#stagger: 0 + +# - full sample - 2875192 households on Standard_M128s +#households_sample_size: 0 +#chunk_size: 0 +#num_processes: 124 +#stagger: 0 + + +# - ------------------------- dev config +multiprocess: True +strict: False +mem_tick: 30 +use_shadow_pricing: False + + +## - small sample +#households_sample_size: 5000 +#chunk_size: 500000000 +#num_processes: 2 +#stagger: 5 + + +## - example sample +households_sample_size: 100 +chunk_size: 0 +num_processes: 2 +stagger: 0 + + +# - tracing +trace_hh_id: +trace_od: +#trace_hh_id: 1482966 +#trace_od: [5, 11] + +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: trip_purpose_and_destination + +models: + ### mp_initialize step + - initialize_landuse + - compute_accessibility + - initialize_households + ### mp_households step + - school_location + - workplace_location + - auto_ownership_simulate + - free_parking + - cdap_simulate + - mandatory_tour_frequency + - mandatory_tour_scheduling + - joint_tour_frequency + - joint_tour_composition + - joint_tour_participation + - joint_tour_destination + - joint_tour_scheduling + - non_mandatory_tour_frequency + - non_mandatory_tour_destination + - non_mandatory_tour_scheduling + - tour_mode_choice_simulate + - atwork_subtour_frequency + - atwork_subtour_destination + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination + - trip_purpose_and_destination + - trip_scheduling + - trip_mode_choice + ### mp_summarize step + - write_data_dictionary + - write_tables + +multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_households + begin: school_location + #num_processes: 9 + #stagger: 30 + #chunk_size: 1000000000 + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_data_dictionary + + +output_tables: + action: include + prefix: final_ + tables: + - checkpoints + - accessibility + - land_use + - households + - persons + - tours + - trips + - school_shadow_prices + - workplace_shadow_prices + + diff --git a/example_mp/configs/shadow_pricing.yaml b/example_mp/configs/shadow_pricing.yaml new file mode 100644 index 000000000..f38d93575 --- /dev/null +++ b/example_mp/configs/shadow_pricing.yaml @@ -0,0 +1,36 @@ +inherit_settings: True + +shadow_pricing_models: + school: school_location + workplace: workplace_location + +# global switch to enable/disable loading of saved shadow prices +# (ignored if global use_shadow_pricing switch is False) +LOAD_SAVED_SHADOW_PRICES: True + +# number of shadow price iterations for cold start +MAX_ITERATIONS: 10 + +# number of shadow price iterations for warm start (after loading saved shadow_prices) +MAX_ITERATIONS_SAVED: 1 + +# ignore criteria for zones smaller than size_threshold +SIZE_THRESHOLD: 10 + +# zone passes if modeled is within percent_tolerance of predicted_size +PERCENT_TOLERANCE: 5 + +# max percentage of zones allowed to fail +FAIL_THRESHOLD: 10 + +# CTRAMP or daysim +SHADOW_PRICE_METHOD: ctramp +#SHADOW_PRICE_METHOD: daysim + +# ctramp-style shadow_pricing_method parameters +DAMPING_FACTOR: 1 + +# daysim-style shadow_pricing_method parameters +# FIXME should these be the same as PERCENT_TOLERANCE and FAIL_THRESHOLD above? +DAYSIM_ABSOLUTE_TOLERANCE: 50 +DAYSIM_PERCENT_TOLERANCE: 10 diff --git a/example_mp/configs/trip_purpose_and_destination.yaml b/example_mp/configs/trip_purpose_and_destination.yaml new file mode 100644 index 000000000..283f924cb --- /dev/null +++ b/example_mp/configs/trip_purpose_and_destination.yaml @@ -0,0 +1,8 @@ + +inherit_settings: True + +MAX_ITERATIONS: 5 + +# drop failed trips and cleanup failed trip leg_mates for consistency +# (i.e. adjust trip_count, trip_num, first for missing failed trips) +CLEANUP: True diff --git a/example_mp/configs/trip_scheduling.yaml b/example_mp/configs/trip_scheduling.yaml new file mode 100644 index 000000000..91959a745 --- /dev/null +++ b/example_mp/configs/trip_scheduling.yaml @@ -0,0 +1,8 @@ + +inherit_settings: True + +MAX_ITERATIONS: 100 + +#FAILFIX: drop_and_cleanup +FAILFIX: choose_most_initial + diff --git a/example_mp/output/.gitignore b/example_mp/output/.gitignore new file mode 100644 index 000000000..c925c5c3d --- /dev/null +++ b/example_mp/output/.gitignore @@ -0,0 +1,7 @@ +*.csv +*.log +*.prof +*.h5 +*.txt +*.yaml + diff --git a/example_mp/output/log/.gitignore b/example_mp/output/log/.gitignore new file mode 100644 index 000000000..031b1db6c --- /dev/null +++ b/example_mp/output/log/.gitignore @@ -0,0 +1,2 @@ +*.csv +*.log diff --git a/example_mp/output/trace/.gitignore b/example_mp/output/trace/.gitignore new file mode 100644 index 000000000..afed0735d --- /dev/null +++ b/example_mp/output/trace/.gitignore @@ -0,0 +1 @@ +*.csv diff --git a/example_mp/simulation.py b/example_mp/simulation.py new file mode 100644 index 000000000..1819604e1 --- /dev/null +++ b/example_mp/simulation.py @@ -0,0 +1,100 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +import sys +import logging + +from activitysim.core import mem +from activitysim.core import inject +from activitysim.core import tracing +from activitysim.core import config +from activitysim.core import pipeline +from activitysim.core import mp_tasks +from activitysim.core import chunk + +# from activitysim import abm + + +logger = logging.getLogger('activitysim') + + +def cleanup_output_files(): + + active_log_files = \ + [h.baseFilename for h in logger.root.handlers if isinstance(h, logging.FileHandler)] + tracing.delete_output_files('log', ignore=active_log_files) + + tracing.delete_output_files('h5') + tracing.delete_output_files('csv') + tracing.delete_output_files('txt') + tracing.delete_output_files('yaml') + tracing.delete_output_files('prof') + + +def run(run_list, injectables=None): + + if run_list['multiprocess']: + logger.info("run multiprocess simulation") + mp_tasks.run_multiprocess(run_list, injectables) + else: + logger.info("run single process simulation") + pipeline.run(models=run_list['models'], resume_after=run_list['resume_after']) + pipeline.close_pipeline() + chunk.log_write_hwm() + + +def log_settings(injectables): + + settings = [ + 'households_sample_size', + 'chunk_size', + 'multiprocess', + 'num_processes', + 'resume_after', + ] + + for k in settings: + logger.info("setting %s: %s" % (k, config.setting(k))) + + for k in injectables: + logger.info("injectable %s: %s" % (k, inject.get_injectable(k))) + + +if __name__ == '__main__': + + inject.add_injectable('data_dir', '../example/data') + inject.add_injectable('configs_dir', ['configs', '../example/configs']) + + injectables = config.handle_standard_args() + + config.filter_warnings() + tracing.config_logger() + + log_settings(injectables) + + t0 = tracing.print_elapsed_time() + + # cleanup if not resuming + if not config.setting('resume_after', False): + cleanup_output_files() + + run_list = mp_tasks.get_run_list() + + if run_list['multiprocess']: + # do this after config.handle_standard_args, as command line args may override injectables + injectables = list(set(injectables) | set(['data_dir', 'configs_dir', 'output_dir'])) + injectables = {k: inject.get_injectable(k) for k in injectables} + else: + injectables = None + + run(run_list, injectables) + + # pipeline will be close if multiprocessing + # if you want access to tables, BE SURE TO OPEN WITH '_' or all tables will be reinitialized + # pipeline.open_pipeline('_') + + t0 = tracing.print_elapsed_time("everything", t0) diff --git a/example_mp/stride.txt b/example_mp/stride.txt new file mode 100644 index 000000000..e69de29bb diff --git a/example_multi/README.MD b/example_multiple_zone/README.MD similarity index 100% rename from example_multi/README.MD rename to example_multiple_zone/README.MD diff --git a/example_multi/configs/best_transit_path.csv b/example_multiple_zone/configs/best_transit_path.csv similarity index 100% rename from example_multi/configs/best_transit_path.csv rename to example_multiple_zone/configs/best_transit_path.csv diff --git a/example_multi/configs/best_transit_path.yaml b/example_multiple_zone/configs/best_transit_path.yaml similarity index 100% rename from example_multi/configs/best_transit_path.yaml rename to example_multiple_zone/configs/best_transit_path.yaml diff --git a/example_multi/configs/logging.yaml b/example_multiple_zone/configs/logging.yaml similarity index 92% rename from example_multi/configs/logging.yaml rename to example_multiple_zone/configs/logging.yaml index 9d340dfdf..f2a0e6cb7 100644 --- a/example_multi/configs/logging.yaml +++ b/example_multiple_zone/configs/logging.yaml @@ -28,7 +28,7 @@ logging: logfile: class: logging.FileHandler - filename: !!python/object/apply:activitysim.core.tracing.log_file_path ['asim.log'] + filename: !!python/object/apply:activitysim.core.config.log_file_path ['activitysim.log'] mode: w formatter: fileFormatter level: !!python/name:logging.NOTSET diff --git a/example_multi/configs/settings.yaml b/example_multiple_zone/configs/settings.yaml similarity index 100% rename from example_multi/configs/settings.yaml rename to example_multiple_zone/configs/settings.yaml diff --git a/example_multi/data/skims.omx b/example_multiple_zone/data/skims.omx similarity index 100% rename from example_multi/data/skims.omx rename to example_multiple_zone/data/skims.omx diff --git a/example_multi/dump_data.py b/example_multiple_zone/dump_data.py similarity index 100% rename from example_multi/dump_data.py rename to example_multiple_zone/dump_data.py diff --git a/example_multi/extensions/__init__.py b/example_multiple_zone/extensions/__init__.py similarity index 100% rename from example_multi/extensions/__init__.py rename to example_multiple_zone/extensions/__init__.py diff --git a/example_multi/extensions/los.py b/example_multiple_zone/extensions/los.py similarity index 100% rename from example_multi/extensions/los.py rename to example_multiple_zone/extensions/los.py diff --git a/example_multi/extensions/models.py b/example_multiple_zone/extensions/models.py similarity index 82% rename from example_multi/extensions/models.py rename to example_multiple_zone/extensions/models.py index 3efaecbb5..10b91a2ea 100644 --- a/example_multi/extensions/models.py +++ b/example_multiple_zone/extensions/models.py @@ -1,14 +1,11 @@ # ActivitySim # See full license in LICENSE.txt. -import os import logging import numpy as np import pandas as pd -from activitysim.core import simulate as asim - from activitysim.core import assign from activitysim.core import inject from activitysim.core import tracing @@ -19,9 +16,8 @@ @inject.injectable() -def best_transit_path_spec(configs_dir): - f = os.path.join(configs_dir, 'best_transit_path.csv') - return assign.read_assignment_spec(f) +def best_transit_path_spec(): + return assign.read_assignment_spec(config.config_file_path('best_transit_path.csv')) VECTOR_TEST_SIZE = 100000 @@ -35,7 +31,7 @@ def best_transit_path(set_random_seed, model_settings = config.read_model_settings('best_transit_path.yaml') - logger.info("best_transit_path VECTOR_TEST_SIZE %s" % VECTOR_TEST_SIZE) + logger.info("best_transit_path VECTOR_TEST_SIZE %s", VECTOR_TEST_SIZE) omaz = network_los.maz_df.sample(VECTOR_TEST_SIZE, replace=True).index dmaz = network_los.maz_df.sample(VECTOR_TEST_SIZE, replace=True).index @@ -61,9 +57,9 @@ def best_transit_path(set_random_seed, how='left' ) - logger.info("len od_df %s" % len(od_df.index)) - logger.info("len atap_btap_df %s" % len(atap_btap_df.index)) - logger.info("avg explosion %s" % (len(atap_btap_df.index) / (1.0 * len(od_df.index)))) + logger.info("len od_df %s", len(od_df.index)) + logger.info("len atap_btap_df %s", len(atap_btap_df.index)) + logger.info("avg explosion %s", (len(atap_btap_df.index) / (1.0 * len(od_df.index)))) if trace_od: trace_orig, trace_dest = trace_od @@ -91,7 +87,7 @@ def best_transit_path(set_random_seed, n = len(atap_btap_df.index) atap_btap_df = atap_btap_df.dropna(subset=['utility']) - logger.info("Dropped %s of %s rows with null utility" % (n - len(atap_btap_df.index), n)) + logger.info("Dropped %s of %s rows with null utility", n - len(atap_btap_df.index), n) # choose max utility atap_btap_df = atap_btap_df.sort_values(by='utility').groupby('idx').tail(1) @@ -99,7 +95,7 @@ def best_transit_path(set_random_seed, if trace_od: if not trace_oabd_rows.any(): - logger.warn("trace_od not found origin = %s, dest = %s" % (trace_orig, trace_dest)) + logger.warning("trace_od not found origin = %s, dest = %s", trace_orig, trace_dest) else: tracing.trace_df(atap_btap_df, diff --git a/example_multi/extensions/skims.py b/example_multiple_zone/extensions/skims.py similarity index 88% rename from example_multi/extensions/skims.py rename to example_multiple_zone/extensions/skims.py index 307280fad..d040b165a 100644 --- a/example_multi/extensions/skims.py +++ b/example_multiple_zone/extensions/skims.py @@ -8,7 +8,7 @@ import openmatrix as omx from activitysim.core import skim as askim -from activitysim.core import tracing +from activitysim.core import config from activitysim.core import inject @@ -19,6 +19,11 @@ """ +@inject.injectable(cache=True) +def cache_skim_key_values(settings): + return settings['skim_time_periods']['labels'] + + def add_to_skim_dict(skim_dict, omx_file, cache_skim_key_values, offset_int=None): if offset_int is None: @@ -54,7 +59,7 @@ def taz_skim_dict(data_dir, settings): logger.info("loading taz_skim_dict") - skims_file = os.path.join(data_dir, settings["taz_skims_file"]) + skims_file = config.data_file_path(settings["taz_skims_file"]) cache_skim_key_values = settings['skim_time_periods']['labels'] skim_dict = askim.SkimDict() @@ -74,7 +79,7 @@ def tap_skim_dict(data_dir, settings): skim_dict = askim.SkimDict() for skims_file in settings["tap_skims_files"]: - skims_file_path = os.path.join(data_dir, skims_file) + skims_file_path = config.data_file_path(skims_file) with omx.open_file(skims_file_path) as omx_file: add_to_skim_dict(skim_dict, omx_file, cache_skim_key_values) diff --git a/example_multi/import_data.py b/example_multiple_zone/import_data.py similarity index 100% rename from example_multi/import_data.py rename to example_multiple_zone/import_data.py diff --git a/example_multi/output/.gitignore b/example_multiple_zone/output/.gitignore similarity index 100% rename from example_multi/output/.gitignore rename to example_multiple_zone/output/.gitignore diff --git a/example_multi/simulation.py b/example_multiple_zone/simulation.py similarity index 99% rename from example_multi/simulation.py rename to example_multiple_zone/simulation.py index 37a326780..c8cd4d8e5 100644 --- a/example_multi/simulation.py +++ b/example_multiple_zone/simulation.py @@ -7,7 +7,6 @@ from activitysim.core import pipeline from activitysim.core import simulate as asim -from activitysim.core.util import memory_info import pandas as pd import numpy as np @@ -41,7 +40,7 @@ def data_dir(): @inject.injectable(override=True) def preload_injectables(): # don't want to load standard skims - pass + return False def print_elapsed_time(msg=None, t0=None): diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 000000000..0ad0d4249 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +filterwarnings = + ignore::tables.NaturalNameWarning diff --git a/scripts/README.MD b/scripts/README.MD index 5d27b18bf..0f1413808 100644 --- a/scripts/README.MD +++ b/scripts/README.MD @@ -1,9 +1,15 @@ ## Scripts -Potentially out-of-date scripts used for various data processing activities: - - stack_mode_choice.py - reformat the very complicated MTC TM1 mode choice UEC Excel files into a more straightforward csv file. Unfortunately, there were some manual steps - for tour mode choice you have to run it twice since there are two slightly different variable sets that seem to occur. Hopefully we never will have to do this again so I'm not documenting this throughly. Not sure I could if I wanted to. - - stack_mode_choice2.py - has a couple of custom edits for trip_mode_choice rather than tour_mode choice. - - data_mover.ipynb - create HDF5 example data store from raw CSV files - - build_omx.py - create one big OMX file for all the MTC TM1 skims. Requires skim_manifest.csv. + +### Create Asim TM1 inputs from CT-RAMP TM1 model data + + - Open a DOS prompt in the mtc tm1 skims folder + - Run mtc_tm1_omx_export.s to convert Cube matrices to OMX (you need Cube 6.4.3 or 6.4.2 + OMXLib-x64.dll) + - Run build_omx.py to build one OMX file. Requires skim_manifest.csv. + - Run mtc_inputs.py to build mtc_asim.h5 (taz data and syn pop files) + +### Other scripts - create_sf_example.py - create SF county only MTC TM1 example inputs - land use, syn pop, and skims - for testing the entire system with full functionality but less memory requirements. - - SandagNetworkLOS.py - convert SANDAG network los files on MTC box account to ActivitySim NetworkLOS format \ No newline at end of file + - make_pipeline_output.py - create table of pipeline table fields by creator for the rst docs + - verify_results.py - compare results for each submodel against TM1 results, see verification page in the wiki + - create_abmviz_inputs.py - create abmviz input files (this script is not yet complete) \ No newline at end of file diff --git a/scripts/build_omx.py b/scripts/build_omx.py index 70dc78243..221393bf1 100644 --- a/scripts/build_omx.py +++ b/scripts/build_omx.py @@ -1,6 +1,7 @@ # ActivitySim # Copyright (C) 2016 RSG Inc # See full license in LICENSE.txt. +# run from the mtc tm1 skims folder import os @@ -29,11 +30,11 @@ def read_manifest(manifest_file_name): def omx_getMatrix(omx_file_name, omx_key): - with omx.openFile(omx_file_name, 'r') as omx_file: + with omx.open_file(omx_file_name, 'r') as omx_file: - if omx_key not in omx_file.listMatrices(): + if omx_key not in omx_file.list_matrices(): print "Source matrix with key '%s' not found in file '%s" % (omx_key, omx_file,) - print omx_file.listMatrices() + print omx_file.list_matrices() raise RuntimeError("Source matrix with key '%s' not found in file '%s" % (omx_key, omx_file,)) @@ -43,13 +44,13 @@ def omx_getMatrix(omx_file_name, omx_key): manifest_dir = '.' -source_data_dir = './source_skims' -dest_data_dir = './data' +source_data_dir = '.' +dest_data_dir = '.' manifest_file_name = os.path.join(manifest_dir, 'skim_manifest.csv') dest_file_name = os.path.join(dest_data_dir, 'skims.omx') -with omx.openFile(dest_file_name, 'a') as dest_omx: +with omx.open_file(dest_file_name, 'a') as dest_omx: manifest = read_manifest(manifest_file_name) @@ -63,18 +64,18 @@ def omx_getMatrix(omx_file_name, omx_key): dest_key = row.skim_key1 print "Reading '%s' from '%s' in %s" % (dest_key, row.source_key, source_file_name) - with omx.openFile(source_file_name, 'r') as source_omx: + with omx.open_file(source_file_name, 'r') as source_omx: - if row.source_key not in source_omx.listMatrices(): + if row.source_key not in source_omx.list_matrices(): print "Source matrix with key '%s' not found in file '%s" \ % (row.source_key, source_file_name,) - print source_omx.listMatrices() + print source_omx.list_matrices() raise RuntimeError("Source matrix with key '%s' not found in file '%s" % (row.source_key, dest_omx,)) data = source_omx[row.source_key] - if dest_key in dest_omx.listMatrices(): + if dest_key in dest_omx.list_matrices(): print "deleting existing dest key '%s'" % (dest_key,) dest_omx.removeNode(dest_omx.root.data, dest_key) diff --git a/scripts/create_abmviz_inputs.py b/scripts/create_abmviz_inputs.py new file mode 100644 index 000000000..1fb4c06e3 --- /dev/null +++ b/scripts/create_abmviz_inputs.py @@ -0,0 +1,75 @@ + +# create abmviz input files (partially complete) +# Ben Stabler, ben.stabler@rsginc.com, 07/31/18 + +import pandas as pd + +pipeline_filename = 'output/pipeline.h5' +trips_filename = 'output/ABMVIZ_trips.csv' +animatedmap_filename = 'output/ABMVIZ_3DAnimatedMapData.csv' +barchartandmap_filename = 'output/ABMVIZ_BarChartAndMapData.csv' +barchart_filename = 'output/ABMVIZ_BarChartData.csv' +radarchart_filename = 'output/ABMVIZ_RadarChartsData.csv' +timeuse_filename = 'output/ABMVIZ_TimeUseData.csv' +treemap_filename = 'output/ABMVIZ_TreeMapData.csv' + +# get pipeline trips table and add other required fields +pipeline = pd.io.pytables.HDFStore(pipeline_filename) +trips = pipeline['/trips/trip_mode_choice'] +households = pipeline['/households/joint_tour_frequency'] +households = households.set_index("hhno", drop=False) +tours = pipeline['/tours/tour_mode_choice_simulate'] +trips['home_taz'] = households.loc[trips['household_id']]['TAZ'].tolist() +trips['tour_start'] = tours.loc[trips['tour_id']]['start'].tolist() +trips['tour_end'] = tours.loc[trips['tour_id']]['end'].tolist() + +trips['in_or_out'] = 0 +# trips['in_or_out'][trips['outbound'] == True] = 10 + +trips['inbound'] = ~trips['outbound'] +trips = trips.sort_values(['tour_id', 'inbound', 'trip_num']) + +trips['origin_purpose'] = 'Home' +trips['destination_purpose'] = trips['purpose'] +trips['origin_purpose_start'] = 1 +trips['destination_purpose_start'] = trips['depart'] +trips['origin_purpose_end'] = 1 +trips['destination_purpose_end'] = 1 + +trips.to_csv(trips_filename) + +# create 3D animated map file + +# create remainder of the day at home table +remainder = trips.groupby(['person_id']).max()[['home_taz', 'depart']] +remainder = pd.crosstab(remainder["home_taz"], remainder["depart"]) + +# loop by period and add trips to DayPop table + + +# /* Person location by PERIOD of the day based on trips */ +# INSERT INTO DAYPOP_TEMP (TAZ, PER, PERSONS) SELECT ORIG_TAZ, @hrStr AS PER, COUNT(*) AS PERSONS +# FROM TRIPS +# WHERE ORIG_PURPOSE_START_PERIOD < (@hr+1) AND DEPART_PERIOD > (@hr-1) +# GROUP BY ORIG_TAZ + +# DECLARE @minPERIOD AS INT +# DECLARE @maxPERIOD AS INT +# DECLARE @hr AS INT +# DECLARE @hrStr AS VARCHAR(6) + +# SET @minPERIOD = 1 +# SET @maxPERIOD = 48 + +# CREATE TABLE DAYPOP (TAZ INT, PER VARCHAR(6), PERSONS INT, PERSONSNOTATHOME INT) +# CREATE TABLE DAYPOP_TEMP (TAZ INT, PER VARCHAR(6), PERSONS INT, PERSONSNOTATHOME INT) + +# create bar chart and map file + +# create bar chart file + +# create radar chart file + +# create timeuse file + +# create treemap file diff --git a/scripts/create_sf_example.py b/scripts/create_sf_example.py index e05bb4e23..c052317fb 100644 --- a/scripts/create_sf_example.py +++ b/scripts/create_sf_example.py @@ -1,58 +1,69 @@ # ActivitySim # See full license in LICENSE.txt. +import os + import numpy as np import pandas as pd import openmatrix as omx +import sys + +# currently hdf5 written with python3 works with both p2.7 and p3, +# but reading hdf5 built with p2.7 (tables==3.4.4) p3 throws a ValueError reading land_use_taz: +# ValueError: Buffer dtype mismatch, expected 'Python object' but got 'double' +if sys.version_info[0] < 3: + raise Exception("Must be using Python 3") + + # input files, SF county is zones 1 to 190, output files -data_file = 'mtc_asim.h5' -skims_file = 'skims.omx' +source_store = "/Users/jeff.doyle/work/activitysim-data/mtc_tm1/data/mtc_asim.h5" +source_skims = '/Users/jeff.doyle/work/activitysim-data/mtc_tm1/data/skims.omx' +dest_data_dir = "/Users/jeff.doyle/work/activitysim-data" -def create_subset(data_file_out, skims_file_out, maxZone, households_sample_size=0): - # process all data tables - print 'skims/accessibility' - df = pd.read_hdf(data_file, 'skims/accessibility') - df = df[df.index <= maxZone] - df.to_hdf(data_file_out, 'skims/accessibility') +def create_subset(dest_store, dest_skims, maxZone, households_sample_size=0): + + dest_store_path = os.path.join(dest_data_dir, dest_store) + dest_skims_path = os.path.join(dest_data_dir, dest_skims) - print 'land_use/taz_data' - df = pd.read_hdf(data_file, 'land_use/taz_data') + print('land_use_taz') + df = pd.read_hdf(source_store, 'land_use_taz') df = df[df.index <= maxZone] - df.to_hdf(data_file_out, 'land_use/taz_data') + df.to_hdf(dest_store_path, 'land_use_taz') + del df - print 'households' - df = pd.read_hdf(data_file, 'households') - df = df[df.TAZ <= maxZone] + print('households') + hh_df = pd.read_hdf(source_store, 'households') + hh_df = hh_df[hh_df.TAZ <= maxZone] if households_sample_size: - df = df.take(np.random.choice(len(df), size=households_sample_size, replace=False)) - df.to_hdf(data_file_out, 'households') + hh_df = hh_df.take(np.random.choice(len(hh_df), size=households_sample_size, replace=False)) + hh_df.to_hdf(dest_store_path, 'households') - print 'persons' - per = pd.read_hdf(data_file, 'persons') - per = per[per.household_id.isin(df.index)] - per.to_hdf(data_file_out, 'persons') + print('persons') + per_df = pd.read_hdf(source_store, 'persons') + per_df = per_df[per_df.household_id.isin(hh_df.index)] + per_df.to_hdf(dest_store_path, 'persons') # process all skims - skims = omx.openFile(skims_file) - skims_out = omx.openFile(skims_file_out, 'a') + skims = omx.open_file(source_skims) + skims_out = omx.open_file(dest_skims_path, 'w') - skimsToProcess = skims.listMatrices() + skimsToProcess = skims.list_matrices() for skimName in skimsToProcess: - print skimName + print(skimName) skims_out[skimName] = skims[skimName][0:maxZone, 0:maxZone] skims_out[skimName].attrs.TITLE = '' # remove funny character for OMX viewer -create_subset(data_file_out='mtc_asim_sf.h5', - skims_file_out='skims_sf.omx', +create_subset(dest_store='mtc_tm1_sf/data/mtc_asim.h5', + dest_skims='mtc_tm1_sf/data/skims.omx', maxZone=190 ) -create_subset(data_file_out='mtc_asim_sf_test.h5', - skims_file_out='skims_sf_test.omx', +create_subset(dest_store='mtc_tm1_test/data/mtc_asim.h5', + dest_skims='mtc_tm1_test/data/skims.omx', maxZone=25, households_sample_size=5000 ) diff --git a/scripts/data_mover.ipynb b/scripts/data_mover.ipynb deleted file mode 100644 index 266122276..000000000 --- a/scripts/data_mover.ipynb +++ /dev/null @@ -1,135 +0,0 @@ -{ - "worksheets": [ - { - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "input": [ - "import pandas as pd\n", - "import os\n", - "from activitysim import activitysim as asim\n", - "# this is where I unzipped the MTC data\n", - "SRCDIR = \"/Users/ffoti/data/activitysim\"\n", - "# and where it's going to\n", - "TGTFILE = \"../example/data/mtc_asim.h5\"" - ], - "language": "python", - "prompt_number": 1 - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "input": [ - "store = pd.HDFStore(TGTFILE, \"w\")" - ], - "language": "python", - "prompt_number": 2 - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "input": [ - "col_map = {\n", - " \"HHID\": \"household_id\",\n", - " \"AGE\": \"age\",\n", - " \"SEX\": \"sex\",\n", - " \"hworkers\": \"workers\",\n", - " \"HINC\": \"income\",\n", - " \"AREATYPE\": \"area_type\"\n", - "}" - ], - "language": "python", - "prompt_number": 3 - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "input": [ - "df = pd.read_csv(os.path.join(SRCDIR, \"landuse\", \"tazData.csv\"), index_col=\"ZONE\")\n", - "df.columns = [col_map.get(s, s) for s in df.columns]\n", - "store[\"land_use/taz_data\"] = df" - ], - "language": "python", - "prompt_number": 4 - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "input": [ - "df = pd.read_csv(os.path.join(SRCDIR, \"skims\", \"accessibility.csv\"), index_col=\"taz\")\n", - "df.columns = [col_map.get(s, s) for s in df.columns]\n", - "store[\"skims/accessibility\"] = df" - ], - "language": "python", - "prompt_number": 5 - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "input": [ - "df = pd.read_csv(os.path.join(SRCDIR, \"popsyn\", \"hhFile.p2011s3a1.2010.csv\"), index_col=\"HHID\")\n", - "df.columns = [col_map.get(s, s) for s in df.columns]\n", - "store[\"households\"] = df" - ], - "language": "python", - "prompt_number": 6 - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "input": [ - "df = pd.read_csv(os.path.join(SRCDIR, \"popsyn\", \"personFile.p2011s3a1.2010.csv\"), index_col=\"PERID\")\n", - "df.columns = [col_map.get(s, s) for s in df.columns]\n", - "store[\"persons\"] = df" - ], - "language": "python", - "prompt_number": 7 - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "input": [ - "store.close()" - ], - "language": "python", - "prompt_number": 8 - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "input": [ - "" - ], - "language": "python", - "prompt_number": 8 - } - ] - } - ], - "cells": [], - "metadata": { - "name": "", - "signature": "sha256:07f23263339f1751ee4eb702d126692b9ed2785fe8640a8906eb0fb110d9e67a" - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/scripts/make_pipeline_output.py b/scripts/make_pipeline_output.py index b4ebd1590..c511b78cd 100644 --- a/scripts/make_pipeline_output.py +++ b/scripts/make_pipeline_output.py @@ -1,11 +1,12 @@ # create table of pipeline table fields by creator # Ben Stabler, ben.stabler@rsginc.com, 06/06/18 +# C:\projects\development\activitysim\example>python ../scripts/make_pipeline_output.py import pandas as pd -pipeline_filename = 'output\pipeline.h5' -out_fields_filename = 'output\pipeline_fields.csv' +pipeline_filename = 'output\\pipeline.h5' +out_fields_filename = 'output\\pipeline_fields.csv' # get pipeline tables pipeline = pd.io.pytables.HDFStore(pipeline_filename) diff --git a/scripts/mtc_inputs.py b/scripts/mtc_inputs.py new file mode 100644 index 000000000..822780fdd --- /dev/null +++ b/scripts/mtc_inputs.py @@ -0,0 +1,49 @@ + +# create mtc tm1 asim example data +# Ben Stabler, ben.stabler@rsginc.com, 01/24/19 +# run from the mtc tm1 skims folder + +import sys +import os +import pandas as pd + +# currently hdf5 written with python3 works with both p2.7 and p3, +# but reading hdf5 built with p2.7 (tables==3.4.4) p3 throws a ValueError reading land_use_taz: +# ValueError: Buffer dtype mismatch, expected 'Python object' but got 'double' +if sys.version_info[0] < 3: + raise Exception("Must be using Python 3") + +col_map = { + "HHID": "household_id", + "AGE": "age", + "SEX": "sex", + "hworkers": "workers", + "HINC": "income", + "AREATYPE": "area_type" +} + +source_data_dir = "~/work/activitysim-data/mtc_2005_06_002" +store_path = "/Users/jeff.doyle/work/activitysim-data/mtc_tm1/data/mtc_asim.h5" + +input_files = { + "land_use_taz": {'filename': "landuse/tazData.csv", 'index_col': 'ZONE'}, + "households": {'filename': "popsyn/hhFile.pba40_scen00_v12.2015.csv", 'index_col': 'HHID'}, + "persons": {'filename': "popsyn/personFile.pba40_scen00_v12.2015.csv", 'index_col': 'PERID'} + } + +print("writing store {}".format(store_path)) + +store = pd.HDFStore(store_path, "w") + +for table_name, info in input_files.items(): + + file_path = os.path.join(source_data_dir, info['filename']) + print("reading {}".format(file_path)) + df = pd.read_csv(file_path, dtype={info['index_col']: int}) + + print("df.dtypes", df.dtypes) + print(df[info['index_col']].head()) + print(df[info['index_col']].tail()) + df.set_index(info['index_col'], inplace=True, verify_integrity=True, drop=True) + df.columns = [col_map.get(s, s) for s in df.columns] + store[table_name] = df diff --git a/scripts/mtc_tm1_omx_export.s b/scripts/mtc_tm1_omx_export.s new file mode 100644 index 000000000..cc41e59ce --- /dev/null +++ b/scripts/mtc_tm1_omx_export.s @@ -0,0 +1,414 @@ + +; Export and import OMX matrices with Cube 6.4.3 +; Ben Stabler, ben.stabler@rsginc.com, 10/05/16 +; "C:\Program Files\Citilabs\CubeVoyager\VOYAGER.EXE" mtc_tm1_omx_export.s +; If using Cube 6.4.2, first copy OMXLib-x64.dll to C:\Program Files\Citilabs\CubeVoyager and rename as OMXLIB.DLL + +CONVERTMAT FROM='COM_HWYSKIMAM.tpp' TO='COM_HWYSKIMAM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='COM_HWYSKIMEA.tpp' TO='COM_HWYSKIMEA.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='COM_HWYSKIMEV.tpp' TO='COM_HWYSKIMEV.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='COM_HWYSKIMMD.tpp' TO='COM_HWYSKIMMD.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='COM_HWYSKIMPM.tpp' TO='COM_HWYSKIMPM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='DA_AM.tpp' TO='DA_AM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='DA_EA.tpp' TO='DA_EA.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='DA_EV.tpp' TO='DA_EV.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='DA_MD.tpp' TO='DA_MD.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='DA_PM.tpp' TO='DA_PM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='HWYSKMAM.tpp' TO='HWYSKMAM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='HWYSKMEA.tpp' TO='HWYSKMEA.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='HWYSKMEV.tpp' TO='HWYSKMEV.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='HWYSKMMD.tpp' TO='HWYSKMMD.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='HWYSKMPM.tpp' TO='HWYSKMPM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='LRG_AM.tpp' TO='LRG_AM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='LRG_EA.tpp' TO='LRG_EA.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='LRG_EV.tpp' TO='LRG_EV.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='LRG_MD.tpp' TO='LRG_MD.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='LRG_PM.tpp' TO='LRG_PM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='MED_AM.tpp' TO='MED_AM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='MED_EA.tpp' TO='MED_EA.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='MED_EV.tpp' TO='MED_EV.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='MED_MD.tpp' TO='MED_MD.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='MED_PM.tpp' TO='MED_PM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='nonmotskm.tpp' TO='nonmotskm.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S2_AM.tpp' TO='S2_AM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S2_EA.tpp' TO='S2_EA.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S2_EV.tpp' TO='S2_EV.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S2_MD.tpp' TO='S2_MD.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S2_PM.tpp' TO='S2_PM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S3_AM.tpp' TO='S3_AM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S3_EA.tpp' TO='S3_EA.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S3_EV.tpp' TO='S3_EV.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S3_MD.tpp' TO='S3_MD.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='S3_PM.tpp' TO='S3_PM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='SML_AM.tpp' TO='SML_AM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='SML_EA.tpp' TO='SML_EA.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='SML_EV.tpp' TO='SML_EV.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='SML_MD.tpp' TO='SML_MD.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='SML_PM.tpp' TO='SML_PM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_com_wlk.tpp' TO='trnskmam_drv_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_com_wlk_board_delay.tpp' TO='trnskmam_drv_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_com_wlk_ivtt_delay.tpp' TO='trnskmam_drv_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_com_wlk_temp.tpp' TO='trnskmam_drv_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_exp_wlk.tpp' TO='trnskmam_drv_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_exp_wlk_board_delay.tpp' TO='trnskmam_drv_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_exp_wlk_ivtt_delay.tpp' TO='trnskmam_drv_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_exp_wlk_temp.tpp' TO='trnskmam_drv_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_hvy_wlk.tpp' TO='trnskmam_drv_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_hvy_wlk_board_delay.tpp' TO='trnskmam_drv_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_hvy_wlk_ivtt_delay.tpp' TO='trnskmam_drv_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_hvy_wlk_temp.tpp' TO='trnskmam_drv_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_loc_wlk.tpp' TO='trnskmam_drv_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_loc_wlk_board_delay.tpp' TO='trnskmam_drv_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_loc_wlk_ivtt_delay.tpp' TO='trnskmam_drv_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_loc_wlk_temp.tpp' TO='trnskmam_drv_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_lrf_wlk.tpp' TO='trnskmam_drv_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_lrf_wlk_board_delay.tpp' TO='trnskmam_drv_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_lrf_wlk_ivtt_delay.tpp' TO='trnskmam_drv_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_lrf_wlk_temp.tpp' TO='trnskmam_drv_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_trn_wlk.tpp' TO='trnskmam_drv_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_trn_wlk_board_delay.tpp' TO='trnskmam_drv_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_trn_wlk_ivtt_delay.tpp' TO='trnskmam_drv_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_drv_trn_wlk_temp.tpp' TO='trnskmam_drv_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_com_drv.tpp' TO='trnskmam_wlk_com_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_com_drv_board_delay.tpp' TO='trnskmam_wlk_com_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_com_drv_ivtt_delay.tpp' TO='trnskmam_wlk_com_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_com_drv_temp.tpp' TO='trnskmam_wlk_com_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_com_wlk.tpp' TO='trnskmam_wlk_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_com_wlk_board_delay.tpp' TO='trnskmam_wlk_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_com_wlk_ivtt_delay.tpp' TO='trnskmam_wlk_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_com_wlk_temp.tpp' TO='trnskmam_wlk_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_exp_drv.tpp' TO='trnskmam_wlk_exp_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_exp_drv_board_delay.tpp' TO='trnskmam_wlk_exp_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_exp_drv_ivtt_delay.tpp' TO='trnskmam_wlk_exp_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_exp_drv_temp.tpp' TO='trnskmam_wlk_exp_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_exp_wlk.tpp' TO='trnskmam_wlk_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_exp_wlk_board_delay.tpp' TO='trnskmam_wlk_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_exp_wlk_ivtt_delay.tpp' TO='trnskmam_wlk_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_exp_wlk_temp.tpp' TO='trnskmam_wlk_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_hvy_drv.tpp' TO='trnskmam_wlk_hvy_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_hvy_drv_board_delay.tpp' TO='trnskmam_wlk_hvy_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_hvy_drv_ivtt_delay.tpp' TO='trnskmam_wlk_hvy_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_hvy_drv_temp.tpp' TO='trnskmam_wlk_hvy_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_hvy_wlk.tpp' TO='trnskmam_wlk_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_hvy_wlk_board_delay.tpp' TO='trnskmam_wlk_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_hvy_wlk_ivtt_delay.tpp' TO='trnskmam_wlk_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_hvy_wlk_temp.tpp' TO='trnskmam_wlk_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_loc_drv.tpp' TO='trnskmam_wlk_loc_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_loc_drv_board_delay.tpp' TO='trnskmam_wlk_loc_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_loc_drv_ivtt_delay.tpp' TO='trnskmam_wlk_loc_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_loc_drv_temp.tpp' TO='trnskmam_wlk_loc_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_loc_wlk.tpp' TO='trnskmam_wlk_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_loc_wlk_board_delay.tpp' TO='trnskmam_wlk_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_loc_wlk_ivtt_delay.tpp' TO='trnskmam_wlk_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_loc_wlk_temp.tpp' TO='trnskmam_wlk_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_lrf_drv.tpp' TO='trnskmam_wlk_lrf_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_lrf_drv_board_delay.tpp' TO='trnskmam_wlk_lrf_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_lrf_drv_ivtt_delay.tpp' TO='trnskmam_wlk_lrf_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_lrf_drv_temp.tpp' TO='trnskmam_wlk_lrf_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_lrf_wlk.tpp' TO='trnskmam_wlk_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_lrf_wlk_board_delay.tpp' TO='trnskmam_wlk_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_lrf_wlk_ivtt_delay.tpp' TO='trnskmam_wlk_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_lrf_wlk_temp.tpp' TO='trnskmam_wlk_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_trn_drv.tpp' TO='trnskmam_wlk_trn_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_trn_drv_board_delay.tpp' TO='trnskmam_wlk_trn_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_trn_drv_ivtt_delay.tpp' TO='trnskmam_wlk_trn_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_trn_drv_temp.tpp' TO='trnskmam_wlk_trn_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_trn_wlk.tpp' TO='trnskmam_wlk_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_trn_wlk_board_delay.tpp' TO='trnskmam_wlk_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_trn_wlk_ivtt_delay.tpp' TO='trnskmam_wlk_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmam_wlk_trn_wlk_temp.tpp' TO='trnskmam_wlk_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_com_wlk.tpp' TO='trnskmea_drv_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_com_wlk_board_delay.tpp' TO='trnskmea_drv_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_com_wlk_ivtt_delay.tpp' TO='trnskmea_drv_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_com_wlk_temp.tpp' TO='trnskmea_drv_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_exp_wlk.tpp' TO='trnskmea_drv_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_exp_wlk_board_delay.tpp' TO='trnskmea_drv_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_exp_wlk_ivtt_delay.tpp' TO='trnskmea_drv_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_exp_wlk_temp.tpp' TO='trnskmea_drv_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_hvy_wlk.tpp' TO='trnskmea_drv_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_hvy_wlk_board_delay.tpp' TO='trnskmea_drv_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_hvy_wlk_ivtt_delay.tpp' TO='trnskmea_drv_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_hvy_wlk_temp.tpp' TO='trnskmea_drv_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_loc_wlk.tpp' TO='trnskmea_drv_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_loc_wlk_board_delay.tpp' TO='trnskmea_drv_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_loc_wlk_ivtt_delay.tpp' TO='trnskmea_drv_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_loc_wlk_temp.tpp' TO='trnskmea_drv_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_lrf_wlk.tpp' TO='trnskmea_drv_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_lrf_wlk_board_delay.tpp' TO='trnskmea_drv_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_lrf_wlk_ivtt_delay.tpp' TO='trnskmea_drv_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_lrf_wlk_temp.tpp' TO='trnskmea_drv_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_trn_wlk.tpp' TO='trnskmea_drv_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_trn_wlk_board_delay.tpp' TO='trnskmea_drv_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_trn_wlk_ivtt_delay.tpp' TO='trnskmea_drv_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_drv_trn_wlk_temp.tpp' TO='trnskmea_drv_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_com_drv.tpp' TO='trnskmea_wlk_com_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_com_drv_board_delay.tpp' TO='trnskmea_wlk_com_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_com_drv_ivtt_delay.tpp' TO='trnskmea_wlk_com_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_com_drv_temp.tpp' TO='trnskmea_wlk_com_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_com_wlk.tpp' TO='trnskmea_wlk_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_com_wlk_board_delay.tpp' TO='trnskmea_wlk_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_com_wlk_ivtt_delay.tpp' TO='trnskmea_wlk_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_com_wlk_temp.tpp' TO='trnskmea_wlk_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_exp_drv.tpp' TO='trnskmea_wlk_exp_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_exp_drv_board_delay.tpp' TO='trnskmea_wlk_exp_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_exp_drv_ivtt_delay.tpp' TO='trnskmea_wlk_exp_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_exp_drv_temp.tpp' TO='trnskmea_wlk_exp_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_exp_wlk.tpp' TO='trnskmea_wlk_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_exp_wlk_board_delay.tpp' TO='trnskmea_wlk_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_exp_wlk_ivtt_delay.tpp' TO='trnskmea_wlk_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_exp_wlk_temp.tpp' TO='trnskmea_wlk_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_hvy_drv.tpp' TO='trnskmea_wlk_hvy_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_hvy_drv_board_delay.tpp' TO='trnskmea_wlk_hvy_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_hvy_drv_ivtt_delay.tpp' TO='trnskmea_wlk_hvy_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_hvy_drv_temp.tpp' TO='trnskmea_wlk_hvy_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_hvy_wlk.tpp' TO='trnskmea_wlk_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_hvy_wlk_board_delay.tpp' TO='trnskmea_wlk_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_hvy_wlk_ivtt_delay.tpp' TO='trnskmea_wlk_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_hvy_wlk_temp.tpp' TO='trnskmea_wlk_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_loc_drv.tpp' TO='trnskmea_wlk_loc_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_loc_drv_board_delay.tpp' TO='trnskmea_wlk_loc_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_loc_drv_ivtt_delay.tpp' TO='trnskmea_wlk_loc_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_loc_drv_temp.tpp' TO='trnskmea_wlk_loc_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_loc_wlk.tpp' TO='trnskmea_wlk_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_loc_wlk_board_delay.tpp' TO='trnskmea_wlk_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_loc_wlk_ivtt_delay.tpp' TO='trnskmea_wlk_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_loc_wlk_temp.tpp' TO='trnskmea_wlk_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_lrf_drv.tpp' TO='trnskmea_wlk_lrf_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_lrf_drv_board_delay.tpp' TO='trnskmea_wlk_lrf_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_lrf_drv_ivtt_delay.tpp' TO='trnskmea_wlk_lrf_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_lrf_drv_temp.tpp' TO='trnskmea_wlk_lrf_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_lrf_wlk.tpp' TO='trnskmea_wlk_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_lrf_wlk_board_delay.tpp' TO='trnskmea_wlk_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_lrf_wlk_ivtt_delay.tpp' TO='trnskmea_wlk_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_lrf_wlk_temp.tpp' TO='trnskmea_wlk_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_trn_drv.tpp' TO='trnskmea_wlk_trn_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_trn_drv_board_delay.tpp' TO='trnskmea_wlk_trn_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_trn_drv_ivtt_delay.tpp' TO='trnskmea_wlk_trn_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_trn_drv_temp.tpp' TO='trnskmea_wlk_trn_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_trn_wlk.tpp' TO='trnskmea_wlk_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_trn_wlk_board_delay.tpp' TO='trnskmea_wlk_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_trn_wlk_ivtt_delay.tpp' TO='trnskmea_wlk_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmea_wlk_trn_wlk_temp.tpp' TO='trnskmea_wlk_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_com_wlk.tpp' TO='trnskmev_drv_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_com_wlk_board_delay.tpp' TO='trnskmev_drv_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_com_wlk_ivtt_delay.tpp' TO='trnskmev_drv_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_com_wlk_temp.tpp' TO='trnskmev_drv_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_exp_wlk.tpp' TO='trnskmev_drv_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_exp_wlk_board_delay.tpp' TO='trnskmev_drv_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_exp_wlk_ivtt_delay.tpp' TO='trnskmev_drv_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_exp_wlk_temp.tpp' TO='trnskmev_drv_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_hvy_wlk.tpp' TO='trnskmev_drv_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_hvy_wlk_board_delay.tpp' TO='trnskmev_drv_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_hvy_wlk_ivtt_delay.tpp' TO='trnskmev_drv_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_hvy_wlk_temp.tpp' TO='trnskmev_drv_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_loc_wlk.tpp' TO='trnskmev_drv_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_loc_wlk_board_delay.tpp' TO='trnskmev_drv_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_loc_wlk_ivtt_delay.tpp' TO='trnskmev_drv_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_loc_wlk_temp.tpp' TO='trnskmev_drv_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_lrf_wlk.tpp' TO='trnskmev_drv_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_lrf_wlk_board_delay.tpp' TO='trnskmev_drv_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_lrf_wlk_ivtt_delay.tpp' TO='trnskmev_drv_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_lrf_wlk_temp.tpp' TO='trnskmev_drv_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_trn_wlk.tpp' TO='trnskmev_drv_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_trn_wlk_board_delay.tpp' TO='trnskmev_drv_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_trn_wlk_ivtt_delay.tpp' TO='trnskmev_drv_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_drv_trn_wlk_temp.tpp' TO='trnskmev_drv_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_com_drv.tpp' TO='trnskmev_wlk_com_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_com_drv_board_delay.tpp' TO='trnskmev_wlk_com_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_com_drv_ivtt_delay.tpp' TO='trnskmev_wlk_com_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_com_drv_temp.tpp' TO='trnskmev_wlk_com_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_com_wlk.tpp' TO='trnskmev_wlk_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_com_wlk_board_delay.tpp' TO='trnskmev_wlk_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_com_wlk_ivtt_delay.tpp' TO='trnskmev_wlk_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_com_wlk_temp.tpp' TO='trnskmev_wlk_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_exp_drv.tpp' TO='trnskmev_wlk_exp_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_exp_drv_board_delay.tpp' TO='trnskmev_wlk_exp_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_exp_drv_ivtt_delay.tpp' TO='trnskmev_wlk_exp_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_exp_drv_temp.tpp' TO='trnskmev_wlk_exp_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_exp_wlk.tpp' TO='trnskmev_wlk_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_exp_wlk_board_delay.tpp' TO='trnskmev_wlk_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_exp_wlk_ivtt_delay.tpp' TO='trnskmev_wlk_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_exp_wlk_temp.tpp' TO='trnskmev_wlk_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_hvy_drv.tpp' TO='trnskmev_wlk_hvy_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_hvy_drv_board_delay.tpp' TO='trnskmev_wlk_hvy_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_hvy_drv_ivtt_delay.tpp' TO='trnskmev_wlk_hvy_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_hvy_drv_temp.tpp' TO='trnskmev_wlk_hvy_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_hvy_wlk.tpp' TO='trnskmev_wlk_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_hvy_wlk_board_delay.tpp' TO='trnskmev_wlk_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_hvy_wlk_ivtt_delay.tpp' TO='trnskmev_wlk_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_hvy_wlk_temp.tpp' TO='trnskmev_wlk_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_loc_drv.tpp' TO='trnskmev_wlk_loc_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_loc_drv_board_delay.tpp' TO='trnskmev_wlk_loc_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_loc_drv_ivtt_delay.tpp' TO='trnskmev_wlk_loc_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_loc_drv_temp.tpp' TO='trnskmev_wlk_loc_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_loc_wlk.tpp' TO='trnskmev_wlk_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_loc_wlk_board_delay.tpp' TO='trnskmev_wlk_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_loc_wlk_ivtt_delay.tpp' TO='trnskmev_wlk_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_loc_wlk_temp.tpp' TO='trnskmev_wlk_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_lrf_drv.tpp' TO='trnskmev_wlk_lrf_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_lrf_drv_board_delay.tpp' TO='trnskmev_wlk_lrf_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_lrf_drv_ivtt_delay.tpp' TO='trnskmev_wlk_lrf_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_lrf_drv_temp.tpp' TO='trnskmev_wlk_lrf_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_lrf_wlk.tpp' TO='trnskmev_wlk_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_lrf_wlk_board_delay.tpp' TO='trnskmev_wlk_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_lrf_wlk_ivtt_delay.tpp' TO='trnskmev_wlk_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_lrf_wlk_temp.tpp' TO='trnskmev_wlk_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_trn_drv.tpp' TO='trnskmev_wlk_trn_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_trn_drv_board_delay.tpp' TO='trnskmev_wlk_trn_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_trn_drv_ivtt_delay.tpp' TO='trnskmev_wlk_trn_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_trn_drv_temp.tpp' TO='trnskmev_wlk_trn_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_trn_wlk.tpp' TO='trnskmev_wlk_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_trn_wlk_board_delay.tpp' TO='trnskmev_wlk_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_trn_wlk_ivtt_delay.tpp' TO='trnskmev_wlk_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmev_wlk_trn_wlk_temp.tpp' TO='trnskmev_wlk_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_com_wlk.tpp' TO='trnskmmd_drv_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_com_wlk_board_delay.tpp' TO='trnskmmd_drv_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_com_wlk_ivtt_delay.tpp' TO='trnskmmd_drv_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_com_wlk_temp.tpp' TO='trnskmmd_drv_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_exp_wlk.tpp' TO='trnskmmd_drv_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_exp_wlk_board_delay.tpp' TO='trnskmmd_drv_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_exp_wlk_ivtt_delay.tpp' TO='trnskmmd_drv_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_exp_wlk_temp.tpp' TO='trnskmmd_drv_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_hvy_wlk.tpp' TO='trnskmmd_drv_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_hvy_wlk_board_delay.tpp' TO='trnskmmd_drv_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_hvy_wlk_ivtt_delay.tpp' TO='trnskmmd_drv_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_hvy_wlk_temp.tpp' TO='trnskmmd_drv_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_loc_wlk.tpp' TO='trnskmmd_drv_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_loc_wlk_board_delay.tpp' TO='trnskmmd_drv_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_loc_wlk_ivtt_delay.tpp' TO='trnskmmd_drv_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_loc_wlk_temp.tpp' TO='trnskmmd_drv_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_lrf_wlk.tpp' TO='trnskmmd_drv_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_lrf_wlk_board_delay.tpp' TO='trnskmmd_drv_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_lrf_wlk_ivtt_delay.tpp' TO='trnskmmd_drv_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_lrf_wlk_temp.tpp' TO='trnskmmd_drv_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_trn_wlk.tpp' TO='trnskmmd_drv_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_trn_wlk_board_delay.tpp' TO='trnskmmd_drv_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_trn_wlk_ivtt_delay.tpp' TO='trnskmmd_drv_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_drv_trn_wlk_temp.tpp' TO='trnskmmd_drv_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_com_drv.tpp' TO='trnskmmd_wlk_com_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_com_drv_board_delay.tpp' TO='trnskmmd_wlk_com_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_com_drv_ivtt_delay.tpp' TO='trnskmmd_wlk_com_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_com_drv_temp.tpp' TO='trnskmmd_wlk_com_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_com_wlk.tpp' TO='trnskmmd_wlk_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_com_wlk_board_delay.tpp' TO='trnskmmd_wlk_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_com_wlk_ivtt_delay.tpp' TO='trnskmmd_wlk_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_com_wlk_temp.tpp' TO='trnskmmd_wlk_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_exp_drv.tpp' TO='trnskmmd_wlk_exp_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_exp_drv_board_delay.tpp' TO='trnskmmd_wlk_exp_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_exp_drv_ivtt_delay.tpp' TO='trnskmmd_wlk_exp_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_exp_drv_temp.tpp' TO='trnskmmd_wlk_exp_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_exp_wlk.tpp' TO='trnskmmd_wlk_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_exp_wlk_board_delay.tpp' TO='trnskmmd_wlk_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_exp_wlk_ivtt_delay.tpp' TO='trnskmmd_wlk_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_exp_wlk_temp.tpp' TO='trnskmmd_wlk_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_hvy_drv.tpp' TO='trnskmmd_wlk_hvy_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_hvy_drv_board_delay.tpp' TO='trnskmmd_wlk_hvy_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_hvy_drv_ivtt_delay.tpp' TO='trnskmmd_wlk_hvy_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_hvy_drv_temp.tpp' TO='trnskmmd_wlk_hvy_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_hvy_wlk.tpp' TO='trnskmmd_wlk_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_hvy_wlk_board_delay.tpp' TO='trnskmmd_wlk_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_hvy_wlk_ivtt_delay.tpp' TO='trnskmmd_wlk_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_hvy_wlk_temp.tpp' TO='trnskmmd_wlk_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_loc_drv.tpp' TO='trnskmmd_wlk_loc_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_loc_drv_board_delay.tpp' TO='trnskmmd_wlk_loc_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_loc_drv_ivtt_delay.tpp' TO='trnskmmd_wlk_loc_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_loc_drv_temp.tpp' TO='trnskmmd_wlk_loc_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_loc_wlk.tpp' TO='trnskmmd_wlk_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_loc_wlk_board_delay.tpp' TO='trnskmmd_wlk_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_loc_wlk_ivtt_delay.tpp' TO='trnskmmd_wlk_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_loc_wlk_temp.tpp' TO='trnskmmd_wlk_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_lrf_drv.tpp' TO='trnskmmd_wlk_lrf_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_lrf_drv_board_delay.tpp' TO='trnskmmd_wlk_lrf_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_lrf_drv_ivtt_delay.tpp' TO='trnskmmd_wlk_lrf_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_lrf_drv_temp.tpp' TO='trnskmmd_wlk_lrf_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_lrf_wlk.tpp' TO='trnskmmd_wlk_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_lrf_wlk_board_delay.tpp' TO='trnskmmd_wlk_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_lrf_wlk_ivtt_delay.tpp' TO='trnskmmd_wlk_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_lrf_wlk_temp.tpp' TO='trnskmmd_wlk_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_trn_drv.tpp' TO='trnskmmd_wlk_trn_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_trn_drv_board_delay.tpp' TO='trnskmmd_wlk_trn_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_trn_drv_ivtt_delay.tpp' TO='trnskmmd_wlk_trn_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_trn_drv_temp.tpp' TO='trnskmmd_wlk_trn_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_trn_wlk.tpp' TO='trnskmmd_wlk_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_trn_wlk_board_delay.tpp' TO='trnskmmd_wlk_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_trn_wlk_ivtt_delay.tpp' TO='trnskmmd_wlk_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmmd_wlk_trn_wlk_temp.tpp' TO='trnskmmd_wlk_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_com_wlk.tpp' TO='trnskmpm_drv_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_com_wlk_board_delay.tpp' TO='trnskmpm_drv_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_com_wlk_ivtt_delay.tpp' TO='trnskmpm_drv_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_com_wlk_temp.tpp' TO='trnskmpm_drv_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_exp_wlk.tpp' TO='trnskmpm_drv_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_exp_wlk_board_delay.tpp' TO='trnskmpm_drv_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_exp_wlk_ivtt_delay.tpp' TO='trnskmpm_drv_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_exp_wlk_temp.tpp' TO='trnskmpm_drv_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_hvy_wlk.tpp' TO='trnskmpm_drv_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_hvy_wlk_board_delay.tpp' TO='trnskmpm_drv_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_hvy_wlk_ivtt_delay.tpp' TO='trnskmpm_drv_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_hvy_wlk_temp.tpp' TO='trnskmpm_drv_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_loc_wlk.tpp' TO='trnskmpm_drv_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_loc_wlk_board_delay.tpp' TO='trnskmpm_drv_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_loc_wlk_ivtt_delay.tpp' TO='trnskmpm_drv_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_loc_wlk_temp.tpp' TO='trnskmpm_drv_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_lrf_wlk.tpp' TO='trnskmpm_drv_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_lrf_wlk_board_delay.tpp' TO='trnskmpm_drv_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_lrf_wlk_ivtt_delay.tpp' TO='trnskmpm_drv_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_lrf_wlk_temp.tpp' TO='trnskmpm_drv_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_trn_wlk.tpp' TO='trnskmpm_drv_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_trn_wlk_board_delay.tpp' TO='trnskmpm_drv_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_trn_wlk_ivtt_delay.tpp' TO='trnskmpm_drv_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_drv_trn_wlk_temp.tpp' TO='trnskmpm_drv_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_com_drv.tpp' TO='trnskmpm_wlk_com_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_com_drv_board_delay.tpp' TO='trnskmpm_wlk_com_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_com_drv_ivtt_delay.tpp' TO='trnskmpm_wlk_com_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_com_drv_temp.tpp' TO='trnskmpm_wlk_com_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_com_wlk.tpp' TO='trnskmpm_wlk_com_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_com_wlk_board_delay.tpp' TO='trnskmpm_wlk_com_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_com_wlk_ivtt_delay.tpp' TO='trnskmpm_wlk_com_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_com_wlk_temp.tpp' TO='trnskmpm_wlk_com_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_exp_drv.tpp' TO='trnskmpm_wlk_exp_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_exp_drv_board_delay.tpp' TO='trnskmpm_wlk_exp_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_exp_drv_ivtt_delay.tpp' TO='trnskmpm_wlk_exp_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_exp_drv_temp.tpp' TO='trnskmpm_wlk_exp_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_exp_wlk.tpp' TO='trnskmpm_wlk_exp_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_exp_wlk_board_delay.tpp' TO='trnskmpm_wlk_exp_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_exp_wlk_ivtt_delay.tpp' TO='trnskmpm_wlk_exp_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_exp_wlk_temp.tpp' TO='trnskmpm_wlk_exp_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_hvy_drv.tpp' TO='trnskmpm_wlk_hvy_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_hvy_drv_board_delay.tpp' TO='trnskmpm_wlk_hvy_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_hvy_drv_ivtt_delay.tpp' TO='trnskmpm_wlk_hvy_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_hvy_drv_temp.tpp' TO='trnskmpm_wlk_hvy_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_hvy_wlk.tpp' TO='trnskmpm_wlk_hvy_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_hvy_wlk_board_delay.tpp' TO='trnskmpm_wlk_hvy_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_hvy_wlk_ivtt_delay.tpp' TO='trnskmpm_wlk_hvy_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_hvy_wlk_temp.tpp' TO='trnskmpm_wlk_hvy_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_loc_drv.tpp' TO='trnskmpm_wlk_loc_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_loc_drv_board_delay.tpp' TO='trnskmpm_wlk_loc_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_loc_drv_ivtt_delay.tpp' TO='trnskmpm_wlk_loc_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_loc_drv_temp.tpp' TO='trnskmpm_wlk_loc_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_loc_wlk.tpp' TO='trnskmpm_wlk_loc_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_loc_wlk_board_delay.tpp' TO='trnskmpm_wlk_loc_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_loc_wlk_ivtt_delay.tpp' TO='trnskmpm_wlk_loc_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_loc_wlk_temp.tpp' TO='trnskmpm_wlk_loc_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_lrf_drv.tpp' TO='trnskmpm_wlk_lrf_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_lrf_drv_board_delay.tpp' TO='trnskmpm_wlk_lrf_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_lrf_drv_ivtt_delay.tpp' TO='trnskmpm_wlk_lrf_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_lrf_drv_temp.tpp' TO='trnskmpm_wlk_lrf_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_lrf_wlk.tpp' TO='trnskmpm_wlk_lrf_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_lrf_wlk_board_delay.tpp' TO='trnskmpm_wlk_lrf_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_lrf_wlk_ivtt_delay.tpp' TO='trnskmpm_wlk_lrf_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_lrf_wlk_temp.tpp' TO='trnskmpm_wlk_lrf_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_trn_drv.tpp' TO='trnskmpm_wlk_trn_drv.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_trn_drv_board_delay.tpp' TO='trnskmpm_wlk_trn_drv_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_trn_drv_ivtt_delay.tpp' TO='trnskmpm_wlk_trn_drv_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_trn_drv_temp.tpp' TO='trnskmpm_wlk_trn_drv_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_trn_wlk.tpp' TO='trnskmpm_wlk_trn_wlk.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_trn_wlk_board_delay.tpp' TO='trnskmpm_wlk_trn_wlk_board_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_trn_wlk_ivtt_delay.tpp' TO='trnskmpm_wlk_trn_wlk_ivtt_delay.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='trnskmpm_wlk_trn_wlk_temp.tpp' TO='trnskmpm_wlk_trn_wlk_temp.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='VSM_AM.tpp' TO='VSM_AM.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='VSM_EA.tpp' TO='VSM_EA.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='VSM_EV.tpp' TO='VSM_EV.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='VSM_MD.tpp' TO='VSM_MD.tpp.omx' FORMAT=OMX COMPRESSION=7 +CONVERTMAT FROM='VSM_PM.tpp' TO='VSM_PM.tpp.omx' FORMAT=OMX COMPRESSION=7 + + diff --git a/scripts/skim_manifest.csv b/scripts/skim_manifest.csv index 67e04bedd..afbecf72f 100644 --- a/scripts/skim_manifest.csv +++ b/scripts/skim_manifest.csv @@ -1,827 +1,827 @@ Token,File,Matrix,TimePeriod -SOV_TIME,hwyskmAM.omx,TIMEDA,AM -SOV_DIST,hwyskmAM.omx,DISTDA,AM -SOV_BTOLL,hwyskmAM.omx,BTOLLDA,AM -HOV2_TIME,hwyskmAM.omx,TIMES2,AM -HOV2_DIST,hwyskmAM.omx,DISTS2,AM -HOV2_BTOLL,hwyskmAM.omx,BTOLLS2,AM -HOV3_TIME,hwyskmAM.omx,TIMES3,AM -HOV3_DIST,hwyskmAM.omx,DISTS3,AM -HOV3_BTOLL,hwyskmAM.omx,BTOLLS3,AM -SOVTOLL_TIME,hwyskmAM.omx,TOLLTIMEDA,AM -SOVTOLL_DIST,hwyskmAM.omx,TOLLDISTDA,AM -SOVTOLL_BTOLL,hwyskmAM.omx,TOLLBTOLLDA,AM -SOVTOLL_VTOLL,hwyskmAM.omx,TOLLVTOLLDA,AM -HOV2TOLL_TIME,hwyskmAM.omx,TOLLTIMES2,AM -HOV2TOLL_DIST,hwyskmAM.omx,TOLLDISTS2,AM -HOV2TOLL_BTOLL,hwyskmAM.omx,TOLLBTOLLS2,AM -HOV2TOLL_VTOLL,hwyskmAM.omx,TOLLVTOLLS2,AM -HOV3TOLL_TIME,hwyskmAM.omx,TOLLTIMES3,AM -HOV3TOLL_DIST,hwyskmAM.omx,TOLLDISTS3,AM -HOV3TOLL_BTOLL,hwyskmAM.omx,TOLLBTOLLS3,AM -HOV3TOLL_VTOLL,hwyskmAM.omx,TOLLVTOLLS3,AM -SOV_TIME,hwyskmEA.omx,TIMEDA,EA -SOV_DIST,hwyskmEA.omx,DISTDA,EA -SOV_BTOLL,hwyskmEA.omx,BTOLLDA,EA -HOV2_TIME,hwyskmEA.omx,TIMES2,EA -HOV2_DIST,hwyskmEA.omx,DISTS2,EA -HOV2_BTOLL,hwyskmEA.omx,BTOLLS2,EA -HOV3_TIME,hwyskmEA.omx,TIMES3,EA -HOV3_DIST,hwyskmEA.omx,DISTS3,EA -HOV3_BTOLL,hwyskmEA.omx,BTOLLS3,EA -SOVTOLL_TIME,hwyskmEA.omx,TOLLTIMEDA,EA -SOVTOLL_DIST,hwyskmEA.omx,TOLLDISTDA,EA -SOVTOLL_BTOLL,hwyskmEA.omx,TOLLBTOLLDA,EA -SOVTOLL_VTOLL,hwyskmEA.omx,TOLLVTOLLDA,EA -HOV2TOLL_TIME,hwyskmEA.omx,TOLLTIMES2,EA -HOV2TOLL_DIST,hwyskmEA.omx,TOLLDISTS2,EA -HOV2TOLL_BTOLL,hwyskmEA.omx,TOLLBTOLLS2,EA -HOV2TOLL_VTOLL,hwyskmEA.omx,TOLLVTOLLS2,EA -HOV3TOLL_TIME,hwyskmEA.omx,TOLLTIMES3,EA -HOV3TOLL_DIST,hwyskmEA.omx,TOLLDISTS3,EA -HOV3TOLL_BTOLL,hwyskmEA.omx,TOLLBTOLLS3,EA -HOV3TOLL_VTOLL,hwyskmEA.omx,TOLLVTOLLS3,EA -SOV_TIME,hwyskmEV.omx,TIMEDA,EV -SOV_DIST,hwyskmEV.omx,DISTDA,EV -SOV_BTOLL,hwyskmEV.omx,BTOLLDA,EV -HOV2_TIME,hwyskmEV.omx,TIMES2,EV -HOV2_DIST,hwyskmEV.omx,DISTS2,EV -HOV2_BTOLL,hwyskmEV.omx,BTOLLS2,EV -HOV3_TIME,hwyskmEV.omx,TIMES3,EV -HOV3_DIST,hwyskmEV.omx,DISTS3,EV -HOV3_BTOLL,hwyskmEV.omx,BTOLLS3,EV -SOVTOLL_TIME,hwyskmEV.omx,TOLLTIMEDA,EV -SOVTOLL_DIST,hwyskmEV.omx,TOLLDISTDA,EV -SOVTOLL_BTOLL,hwyskmEV.omx,TOLLBTOLLDA,EV -SOVTOLL_VTOLL,hwyskmEV.omx,TOLLVTOLLDA,EV -HOV2TOLL_TIME,hwyskmEV.omx,TOLLTIMES2,EV -HOV2TOLL_DIST,hwyskmEV.omx,TOLLDISTS2,EV -HOV2TOLL_BTOLL,hwyskmEV.omx,TOLLBTOLLS2,EV -HOV2TOLL_VTOLL,hwyskmEV.omx,TOLLVTOLLS2,EV -HOV3TOLL_TIME,hwyskmEV.omx,TOLLTIMES3,EV -HOV3TOLL_DIST,hwyskmEV.omx,TOLLDISTS3,EV -HOV3TOLL_BTOLL,hwyskmEV.omx,TOLLBTOLLS3,EV -HOV3TOLL_VTOLL,hwyskmEV.omx,TOLLVTOLLS3,EV -SOV_TIME,hwyskmMD.omx,TIMEDA,MD -SOV_DIST,hwyskmMD.omx,DISTDA,MD -SOV_BTOLL,hwyskmMD.omx,BTOLLDA,MD -HOV2_TIME,hwyskmMD.omx,TIMES2,MD -HOV2_DIST,hwyskmMD.omx,DISTS2,MD -HOV2_BTOLL,hwyskmMD.omx,BTOLLS2,MD -HOV3_TIME,hwyskmMD.omx,TIMES3,MD -HOV3_DIST,hwyskmMD.omx,DISTS3,MD -HOV3_BTOLL,hwyskmMD.omx,BTOLLS3,MD -SOVTOLL_TIME,hwyskmMD.omx,TOLLTIMEDA,MD -SOVTOLL_DIST,hwyskmMD.omx,TOLLDISTDA,MD -SOVTOLL_BTOLL,hwyskmMD.omx,TOLLBTOLLDA,MD -SOVTOLL_VTOLL,hwyskmMD.omx,TOLLVTOLLDA,MD -HOV2TOLL_TIME,hwyskmMD.omx,TOLLTIMES2,MD -HOV2TOLL_DIST,hwyskmMD.omx,TOLLDISTS2,MD -HOV2TOLL_BTOLL,hwyskmMD.omx,TOLLBTOLLS2,MD -HOV2TOLL_VTOLL,hwyskmMD.omx,TOLLVTOLLS2,MD -HOV3TOLL_TIME,hwyskmMD.omx,TOLLTIMES3,MD -HOV3TOLL_DIST,hwyskmMD.omx,TOLLDISTS3,MD -HOV3TOLL_BTOLL,hwyskmMD.omx,TOLLBTOLLS3,MD -HOV3TOLL_VTOLL,hwyskmMD.omx,TOLLVTOLLS3,MD -SOV_TIME,hwyskmPM.omx,TIMEDA,PM -SOV_DIST,hwyskmPM.omx,DISTDA,PM -SOV_BTOLL,hwyskmPM.omx,BTOLLDA,PM -HOV2_TIME,hwyskmPM.omx,TIMES2,PM -HOV2_DIST,hwyskmPM.omx,DISTS2,PM -HOV2_BTOLL,hwyskmPM.omx,BTOLLS2,PM -HOV3_TIME,hwyskmPM.omx,TIMES3,PM -HOV3_DIST,hwyskmPM.omx,DISTS3,PM -HOV3_BTOLL,hwyskmPM.omx,BTOLLS3,PM -SOVTOLL_TIME,hwyskmPM.omx,TOLLTIMEDA,PM -SOVTOLL_DIST,hwyskmPM.omx,TOLLDISTDA,PM -SOVTOLL_BTOLL,hwyskmPM.omx,TOLLBTOLLDA,PM -SOVTOLL_VTOLL,hwyskmPM.omx,TOLLVTOLLDA,PM -HOV2TOLL_TIME,hwyskmPM.omx,TOLLTIMES2,PM -HOV2TOLL_DIST,hwyskmPM.omx,TOLLDISTS2,PM -HOV2TOLL_BTOLL,hwyskmPM.omx,TOLLBTOLLS2,PM -HOV2TOLL_VTOLL,hwyskmPM.omx,TOLLVTOLLS2,PM -HOV3TOLL_TIME,hwyskmPM.omx,TOLLTIMES3,PM -HOV3TOLL_DIST,hwyskmPM.omx,TOLLDISTS3,PM -HOV3TOLL_BTOLL,hwyskmPM.omx,TOLLBTOLLS3,PM -HOV3TOLL_VTOLL,hwyskmPM.omx,TOLLVTOLLS3,PM -DIST,nonmotskm.omx,DIST, -DISTWALK,nonmotskm.omx,DISTWALK, -DISTBIKE,nonmotskm.omx,DISTBIKE, -DRV_COM_WLK_WAIT,trnskmAM_DRV_COM_WLK.omx,wait,AM -DRV_COM_WLK_TOTIVT,trnskmAM_DRV_COM_WLK.omx,ivt,AM -DRV_COM_WLK_KEYIVT,trnskmAM_DRV_COM_WLK.omx,ivtCOM,AM -DRV_COM_WLK_FAR,trnskmAM_DRV_COM_WLK.omx,fare,AM -DRV_COM_WLK_DTIM,trnskmAM_DRV_COM_WLK.omx,dtime,AM -DRV_COM_WLK_DDIST,trnskmAM_DRV_COM_WLK.omx,ddist,AM -DRV_COM_WLK_WAUX,trnskmAM_DRV_COM_WLK.omx,waux,AM -DRV_COM_WLK_IWAIT,trnskmAM_DRV_COM_WLK.omx,iwait,AM -DRV_COM_WLK_XWAIT,trnskmAM_DRV_COM_WLK.omx,xwait,AM -DRV_COM_WLK_BOARDS,trnskmAM_DRV_COM_WLK.omx,boards,AM -DRV_EXP_WLK_WAIT,trnskmAM_DRV_EXP_WLK.omx,wait,AM -DRV_EXP_WLK_TOTIVT,trnskmAM_DRV_EXP_WLK.omx,ivt,AM -DRV_EXP_WLK_KEYIVT,trnskmAM_DRV_EXP_WLK.omx,ivtEXP,AM -DRV_EXP_WLK_FAR,trnskmAM_DRV_EXP_WLK.omx,fare,AM -DRV_EXP_WLK_DTIM,trnskmAM_DRV_EXP_WLK.omx,dtime,AM -DRV_EXP_WLK_WAUX,trnskmAM_DRV_EXP_WLK.omx,waux,AM -DRV_EXP_WLK_IWAIT,trnskmAM_DRV_EXP_WLK.omx,iwait,AM -DRV_EXP_WLK_XWAIT,trnskmAM_DRV_EXP_WLK.omx,xwait,AM -DRV_EXP_WLK_BOARDS,trnskmAM_DRV_EXP_WLK.omx,boards,AM -DRV_EXP_WLK_DDIST,trnskmAM_DRV_EXP_WLK.omx,ddist,AM -DRV_HVY_WLK_WAIT,trnskmAM_DRV_HVY_WLK.omx,wait,AM -DRV_HVY_WLK_TOTIVT,trnskmAM_DRV_HVY_WLK.omx,ivt,AM -DRV_HVY_WLK_KEYIVT,trnskmAM_DRV_HVY_WLK.omx,ivtHVY,AM -DRV_HVY_WLK_FAR,trnskmAM_DRV_HVY_WLK.omx,fare,AM -DRV_HVY_WLK_DTIM,trnskmAM_DRV_HVY_WLK.omx,dtime,AM -DRV_HVY_WLK_DDIST,trnskmAM_DRV_HVY_WLK.omx,ddist,AM -DRV_HVY_WLK_WAUX,trnskmAM_DRV_HVY_WLK.omx,waux,AM -DRV_HVY_WLK_IWAIT,trnskmAM_DRV_HVY_WLK.omx,iwait,AM -DRV_HVY_WLK_XWAIT,trnskmAM_DRV_HVY_WLK.omx,xwait,AM -DRV_HVY_WLK_BOARDS,trnskmAM_DRV_HVY_WLK.omx,boards,AM -DRV_LOC_WLK_WAIT,trnskmAM_DRV_LOC_WLK.omx,wait,AM -DRV_LOC_WLK_TOTIVT,trnskmAM_DRV_LOC_WLK.omx,ivt,AM -DRV_LOC_WLK_FAR,trnskmAM_DRV_LOC_WLK.omx,fare,AM -DRV_LOC_WLK_DTIM,trnskmAM_DRV_LOC_WLK.omx,dtime,AM -DRV_LOC_WLK_DDIST,trnskmAM_DRV_LOC_WLK.omx,ddist,AM -DRV_LOC_WLK_WAUX,trnskmAM_DRV_LOC_WLK.omx,waux,AM -DRV_LOC_WLK_IWAIT,trnskmAM_DRV_LOC_WLK.omx,iwait,AM -DRV_LOC_WLK_XWAIT,trnskmAM_DRV_LOC_WLK.omx,xwait,AM -DRV_LOC_WLK_BOARDS,trnskmAM_DRV_LOC_WLK.omx,boards,AM -DRV_LRF_WLK_WAIT,trnskmAM_DRV_LRF_WLK.omx,wait,AM -DRV_LRF_WLK_TOTIVT,trnskmAM_DRV_LRF_WLK.omx,ivt,AM -DRV_LRF_WLK_KEYIVT,trnskmAM_DRV_LRF_WLK.omx,ivtLRF,AM -DRV_LRF_WLK_FERRYIVT,trnskmAM_DRV_LRF_WLK.omx,ivtFerry,AM -DRV_LRF_WLK_FAR,trnskmAM_DRV_LRF_WLK.omx,fare,AM -DRV_LRF_WLK_DTIM,trnskmAM_DRV_LRF_WLK.omx,dtime,AM -DRV_LRF_WLK_DDIST,trnskmAM_DRV_LRF_WLK.omx,ddist,AM -DRV_LRF_WLK_WAUX,trnskmAM_DRV_LRF_WLK.omx,waux,AM -DRV_LRF_WLK_IWAIT,trnskmAM_DRV_LRF_WLK.omx,iwait,AM -DRV_LRF_WLK_XWAIT,trnskmAM_DRV_LRF_WLK.omx,xwait,AM -DRV_LRF_WLK_BOARDS,trnskmAM_DRV_LRF_WLK.omx,boards,AM -WLK_COM_DRV_WAIT,trnskmAM_WLK_COM_DRV.omx,wait,AM -WLK_COM_DRV_TOTIVT,trnskmAM_WLK_COM_DRV.omx,ivt,AM -WLK_COM_DRV_KEYIVT,trnskmAM_WLK_COM_DRV.omx,ivtCOM,AM -WLK_COM_DRV_FAR,trnskmAM_WLK_COM_DRV.omx,fare,AM -WLK_COM_DRV_DTIM,trnskmAM_WLK_COM_DRV.omx,dtime,AM -WLK_COM_DRV_DDIST,trnskmAM_WLK_COM_DRV.omx,ddist,AM -WLK_COM_DRV_WAUX,trnskmAM_WLK_COM_DRV.omx,waux,AM -WLK_COM_DRV_IWAIT,trnskmAM_WLK_COM_DRV.omx,iwait,AM -WLK_COM_DRV_XWAIT,trnskmAM_WLK_COM_DRV.omx,xwait,AM -WLK_COM_DRV_BOARDS,trnskmAM_WLK_COM_DRV.omx,boards,AM -WLK_COM_WLK_WAIT,trnskmAM_WLK_COM_WLK.omx,wait,AM -WLK_COM_WLK_TOTIVT,trnskmAM_WLK_COM_WLK.omx,ivt,AM -WLK_COM_WLK_KEYIVT,trnskmAM_WLK_COM_WLK.omx,ivtCOM,AM -WLK_COM_WLK_FAR,trnskmAM_WLK_COM_WLK.omx,fare,AM -WLK_COM_WLK_WAUX,trnskmAM_WLK_COM_WLK.omx,waux,AM -WLK_COM_WLK_IWAIT,trnskmAM_WLK_COM_WLK.omx,iwait,AM -WLK_COM_WLK_XWAIT,trnskmAM_WLK_COM_WLK.omx,xwait,AM -WLK_COM_WLK_BOARDS,trnskmAM_WLK_COM_WLK.omx,boards,AM -WLK_EXP_DRV_WAIT,trnskmAM_WLK_EXP_DRV.omx,wait,AM -WLK_EXP_DRV_TOTIVT,trnskmAM_WLK_EXP_DRV.omx,ivt,AM -WLK_EXP_DRV_KEYIVT,trnskmAM_WLK_EXP_DRV.omx,ivtEXP,AM -WLK_EXP_DRV_FAR,trnskmAM_WLK_EXP_DRV.omx,fare,AM -WLK_EXP_DRV_DTIM,trnskmAM_WLK_EXP_DRV.omx,dtime,AM -WLK_EXP_DRV_WAUX,trnskmAM_WLK_EXP_DRV.omx,waux,AM -WLK_EXP_DRV_IWAIT,trnskmAM_WLK_EXP_DRV.omx,iwait,AM -WLK_EXP_DRV_XWAIT,trnskmAM_WLK_EXP_DRV.omx,xwait,AM -WLK_EXP_DRV_BOARDS,trnskmAM_WLK_EXP_DRV.omx,boards,AM -WLK_EXP_DRV_DDIST,trnskmAM_WLK_EXP_DRV.omx,ddist,AM -WLK_EXP_WLK_WAIT,trnskmAM_WLK_EXP_WLK.omx,wait,AM -WLK_EXP_WLK_TOTIVT,trnskmAM_WLK_EXP_WLK.omx,ivt,AM -WLK_EXP_WLK_KEYIVT,trnskmAM_WLK_EXP_WLK.omx,ivtEXP,AM -WLK_EXP_WLK_FAR,trnskmAM_WLK_EXP_WLK.omx,fare,AM -WLK_EXP_WLK_WAUX,trnskmAM_WLK_EXP_WLK.omx,waux,AM -WLK_EXP_WLK_IWAIT,trnskmAM_WLK_EXP_WLK.omx,iwait,AM -WLK_EXP_WLK_XWAIT,trnskmAM_WLK_EXP_WLK.omx,xwait,AM -WLK_EXP_WLK_BOARDS,trnskmAM_WLK_EXP_WLK.omx,boards,AM -WLK_HVY_DRV_WAIT,trnskmAM_WLK_HVY_DRV.omx,wait,AM -WLK_HVY_DRV_TOTIVT,trnskmAM_WLK_HVY_DRV.omx,ivt,AM -WLK_HVY_DRV_KEYIVT,trnskmAM_WLK_HVY_DRV.omx,ivtHVY,AM -WLK_HVY_DRV_FAR,trnskmAM_WLK_HVY_DRV.omx,fare,AM -WLK_HVY_DRV_DTIM,trnskmAM_WLK_HVY_DRV.omx,dtime,AM -WLK_HVY_DRV_DDIST,trnskmAM_WLK_HVY_DRV.omx,ddist,AM -WLK_HVY_DRV_WAUX,trnskmAM_WLK_HVY_DRV.omx,waux,AM -WLK_HVY_DRV_IWAIT,trnskmAM_WLK_HVY_DRV.omx,iwait,AM -WLK_HVY_DRV_XWAIT,trnskmAM_WLK_HVY_DRV.omx,xwait,AM -WLK_HVY_DRV_BOARDS,trnskmAM_WLK_HVY_DRV.omx,boards,AM -WLK_HVY_WLK_WAIT,trnskmAM_WLK_HVY_WLK.omx,wait,AM -WLK_HVY_WLK_TOTIVT,trnskmAM_WLK_HVY_WLK.omx,ivt,AM -WLK_HVY_WLK_KEYIVT,trnskmAM_WLK_HVY_WLK.omx,ivtHVY,AM -WLK_HVY_WLK_FAR,trnskmAM_WLK_HVY_WLK.omx,fare,AM -WLK_HVY_WLK_WAUX,trnskmAM_WLK_HVY_WLK.omx,waux,AM -WLK_HVY_WLK_IWAIT,trnskmAM_WLK_HVY_WLK.omx,iwait,AM -WLK_HVY_WLK_XWAIT,trnskmAM_WLK_HVY_WLK.omx,xwait,AM -WLK_HVY_WLK_BOARDS,trnskmAM_WLK_HVY_WLK.omx,boards,AM -WLK_LOC_DRV_WAIT,trnskmAM_WLK_LOC_DRV.omx,wait,AM -WLK_LOC_DRV_TOTIVT,trnskmAM_WLK_LOC_DRV.omx,ivt,AM -WLK_LOC_DRV_FAR,trnskmAM_WLK_LOC_DRV.omx,fare,AM -WLK_LOC_DRV_DTIM,trnskmAM_WLK_LOC_DRV.omx,dtime,AM -WLK_LOC_DRV_DDIST,trnskmAM_WLK_LOC_DRV.omx,ddist,AM -WLK_LOC_DRV_WAUX,trnskmAM_WLK_LOC_DRV.omx,waux,AM -WLK_LOC_DRV_IWAIT,trnskmAM_WLK_LOC_DRV.omx,iwait,AM -WLK_LOC_DRV_XWAIT,trnskmAM_WLK_LOC_DRV.omx,xwait,AM -WLK_LOC_DRV_BOARDS,trnskmAM_WLK_LOC_DRV.omx,boards,AM -WLK_LOC_WLK_WAIT,trnskmAM_WLK_LOC_WLK.omx,wait,AM -WLK_LOC_WLK_TOTIVT,trnskmAM_WLK_LOC_WLK.omx,ivt,AM -WLK_LOC_WLK_FAR,trnskmAM_WLK_LOC_WLK.omx,fare,AM -WLK_LOC_WLK_WAUX,trnskmAM_WLK_LOC_WLK.omx,waux,AM -WLK_LOC_WLK_IWAIT,trnskmAM_WLK_LOC_WLK.omx,iwait,AM -WLK_LOC_WLK_XWAIT,trnskmAM_WLK_LOC_WLK.omx,xwait,AM -WLK_LOC_WLK_BOARDS,trnskmAM_WLK_LOC_WLK.omx,boards,AM -WLK_LRF_DRV_WAIT,trnskmAM_WLK_LRF_DRV.omx,wait,AM -WLK_LRF_DRV_TOTIVT,trnskmAM_WLK_LRF_DRV.omx,ivt,AM -WLK_LRF_DRV_KEYIVT,trnskmAM_WLK_LRF_DRV.omx,ivtLRF,AM -WLK_LRF_DRV_FERRYIVT,trnskmAM_WLK_LRF_DRV.omx,ivtFerry,AM -WLK_LRF_DRV_FAR,trnskmAM_WLK_LRF_DRV.omx,fare,AM -WLK_LRF_DRV_DTIM,trnskmAM_WLK_LRF_DRV.omx,dtime,AM -WLK_LRF_DRV_DDIST,trnskmAM_WLK_LRF_DRV.omx,ddist,AM -WLK_LRF_DRV_WAUX,trnskmAM_WLK_LRF_DRV.omx,waux,AM -WLK_LRF_DRV_IWAIT,trnskmAM_WLK_LRF_DRV.omx,iwait,AM -WLK_LRF_DRV_XWAIT,trnskmAM_WLK_LRF_DRV.omx,xwait,AM -WLK_LRF_DRV_BOARDS,trnskmAM_WLK_LRF_DRV.omx,boards,AM -WLK_LRF_WLK_WAIT,trnskmAM_WLK_LRF_WLK.omx,wait,AM -WLK_LRF_WLK_TOTIVT,trnskmAM_WLK_LRF_WLK.omx,ivt,AM -WLK_LRF_WLK_KEYIVT,trnskmAM_WLK_LRF_WLK.omx,ivtLRF,AM -WLK_LRF_WLK_FERRYIVT,trnskmAM_WLK_LRF_WLK.omx,ivtFerry,AM -WLK_LRF_WLK_FAR,trnskmAM_WLK_LRF_WLK.omx,fare,AM -WLK_LRF_WLK_WAUX,trnskmAM_WLK_LRF_WLK.omx,waux,AM -WLK_LRF_WLK_IWAIT,trnskmAM_WLK_LRF_WLK.omx,iwait,AM -WLK_LRF_WLK_XWAIT,trnskmAM_WLK_LRF_WLK.omx,xwait,AM -WLK_LRF_WLK_BOARDS,trnskmAM_WLK_LRF_WLK.omx,boards,AM -DRV_COM_WLK_WAIT,trnskmEA_DRV_COM_WLK.omx,wait,EA -DRV_COM_WLK_TOTIVT,trnskmEA_DRV_COM_WLK.omx,ivt,EA -DRV_COM_WLK_KEYIVT,trnskmEA_DRV_COM_WLK.omx,ivtCOM,EA -DRV_COM_WLK_FAR,trnskmEA_DRV_COM_WLK.omx,fare,EA -DRV_COM_WLK_DTIM,trnskmEA_DRV_COM_WLK.omx,dtime,EA -DRV_COM_WLK_DDIST,trnskmEA_DRV_COM_WLK.omx,ddist,EA -DRV_COM_WLK_WAUX,trnskmEA_DRV_COM_WLK.omx,waux,EA -DRV_COM_WLK_IWAIT,trnskmEA_DRV_COM_WLK.omx,iwait,EA -DRV_COM_WLK_XWAIT,trnskmEA_DRV_COM_WLK.omx,xwait,EA -DRV_COM_WLK_BOARDS,trnskmEA_DRV_COM_WLK.omx,boards,EA -DRV_EXP_WLK_WAIT,trnskmEA_DRV_EXP_WLK.omx,wait,EA -DRV_EXP_WLK_TOTIVT,trnskmEA_DRV_EXP_WLK.omx,ivt,EA -DRV_EXP_WLK_KEYIVT,trnskmEA_DRV_EXP_WLK.omx,ivtEXP,EA -DRV_EXP_WLK_FAR,trnskmEA_DRV_EXP_WLK.omx,fare,EA -DRV_EXP_WLK_DTIM,trnskmEA_DRV_EXP_WLK.omx,dtime,EA -DRV_EXP_WLK_WAUX,trnskmEA_DRV_EXP_WLK.omx,waux,EA -DRV_EXP_WLK_IWAIT,trnskmEA_DRV_EXP_WLK.omx,iwait,EA -DRV_EXP_WLK_XWAIT,trnskmEA_DRV_EXP_WLK.omx,xwait,EA -DRV_EXP_WLK_BOARDS,trnskmEA_DRV_EXP_WLK.omx,boards,EA -DRV_EXP_WLK_DDIST,trnskmEA_DRV_EXP_WLK.omx,ddist,EA -DRV_HVY_WLK_WAIT,trnskmEA_DRV_HVY_WLK.omx,wait,EA -DRV_HVY_WLK_TOTIVT,trnskmEA_DRV_HVY_WLK.omx,ivt,EA -DRV_HVY_WLK_KEYIVT,trnskmEA_DRV_HVY_WLK.omx,ivtHVY,EA -DRV_HVY_WLK_FAR,trnskmEA_DRV_HVY_WLK.omx,fare,EA -DRV_HVY_WLK_DTIM,trnskmEA_DRV_HVY_WLK.omx,dtime,EA -DRV_HVY_WLK_DDIST,trnskmEA_DRV_HVY_WLK.omx,ddist,EA -DRV_HVY_WLK_WAUX,trnskmEA_DRV_HVY_WLK.omx,waux,EA -DRV_HVY_WLK_IWAIT,trnskmEA_DRV_HVY_WLK.omx,iwait,EA -DRV_HVY_WLK_XWAIT,trnskmEA_DRV_HVY_WLK.omx,xwait,EA -DRV_HVY_WLK_BOARDS,trnskmEA_DRV_HVY_WLK.omx,boards,EA -DRV_LOC_WLK_WAIT,trnskmEA_DRV_LOC_WLK.omx,wait,EA -DRV_LOC_WLK_TOTIVT,trnskmEA_DRV_LOC_WLK.omx,ivt,EA -DRV_LOC_WLK_FAR,trnskmEA_DRV_LOC_WLK.omx,fare,EA -DRV_LOC_WLK_DTIM,trnskmEA_DRV_LOC_WLK.omx,dtime,EA -DRV_LOC_WLK_DDIST,trnskmEA_DRV_LOC_WLK.omx,ddist,EA -DRV_LOC_WLK_WAUX,trnskmEA_DRV_LOC_WLK.omx,waux,EA -DRV_LOC_WLK_IWAIT,trnskmEA_DRV_LOC_WLK.omx,iwait,EA -DRV_LOC_WLK_XWAIT,trnskmEA_DRV_LOC_WLK.omx,xwait,EA -DRV_LOC_WLK_BOARDS,trnskmEA_DRV_LOC_WLK.omx,boards,EA -DRV_LRF_WLK_WAIT,trnskmEA_DRV_LRF_WLK.omx,wait,EA -DRV_LRF_WLK_TOTIVT,trnskmEA_DRV_LRF_WLK.omx,ivt,EA -DRV_LRF_WLK_KEYIVT,trnskmEA_DRV_LRF_WLK.omx,ivtLRF,EA -DRV_LRF_WLK_FERRYIVT,trnskmEA_DRV_LRF_WLK.omx,ivtFerry,EA -DRV_LRF_WLK_FAR,trnskmEA_DRV_LRF_WLK.omx,fare,EA -DRV_LRF_WLK_DTIM,trnskmEA_DRV_LRF_WLK.omx,dtime,EA -DRV_LRF_WLK_DDIST,trnskmEA_DRV_LRF_WLK.omx,ddist,EA -DRV_LRF_WLK_WAUX,trnskmEA_DRV_LRF_WLK.omx,waux,EA -DRV_LRF_WLK_IWAIT,trnskmEA_DRV_LRF_WLK.omx,iwait,EA -DRV_LRF_WLK_XWAIT,trnskmEA_DRV_LRF_WLK.omx,xwait,EA -DRV_LRF_WLK_BOARDS,trnskmEA_DRV_LRF_WLK.omx,boards,EA -WLK_COM_DRV_WAIT,trnskmEA_WLK_COM_DRV.omx,wait,EA -WLK_COM_DRV_TOTIVT,trnskmEA_WLK_COM_DRV.omx,ivt,EA -WLK_COM_DRV_KEYIVT,trnskmEA_WLK_COM_DRV.omx,ivtCOM,EA -WLK_COM_DRV_FAR,trnskmEA_WLK_COM_DRV.omx,fare,EA -WLK_COM_DRV_DTIM,trnskmEA_WLK_COM_DRV.omx,dtime,EA -WLK_COM_DRV_DDIST,trnskmEA_WLK_COM_DRV.omx,ddist,EA -WLK_COM_DRV_WAUX,trnskmEA_WLK_COM_DRV.omx,waux,EA -WLK_COM_DRV_IWAIT,trnskmEA_WLK_COM_DRV.omx,iwait,EA -WLK_COM_DRV_XWAIT,trnskmEA_WLK_COM_DRV.omx,xwait,EA -WLK_COM_DRV_BOARDS,trnskmEA_WLK_COM_DRV.omx,boards,EA -WLK_COM_WLK_WAIT,trnskmEA_WLK_COM_WLK.omx,wait,EA -WLK_COM_WLK_TOTIVT,trnskmEA_WLK_COM_WLK.omx,ivt,EA -WLK_COM_WLK_KEYIVT,trnskmEA_WLK_COM_WLK.omx,ivtCOM,EA -WLK_COM_WLK_FAR,trnskmEA_WLK_COM_WLK.omx,fare,EA -WLK_COM_WLK_WAUX,trnskmEA_WLK_COM_WLK.omx,waux,EA -WLK_COM_WLK_IWAIT,trnskmEA_WLK_COM_WLK.omx,iwait,EA -WLK_COM_WLK_XWAIT,trnskmEA_WLK_COM_WLK.omx,xwait,EA -WLK_COM_WLK_BOARDS,trnskmEA_WLK_COM_WLK.omx,boards,EA -WLK_EXP_DRV_WAIT,trnskmEA_WLK_EXP_DRV.omx,wait,EA -WLK_EXP_DRV_TOTIVT,trnskmEA_WLK_EXP_DRV.omx,ivt,EA -WLK_EXP_DRV_KEYIVT,trnskmEA_WLK_EXP_DRV.omx,ivtEXP,EA -WLK_EXP_DRV_FAR,trnskmEA_WLK_EXP_DRV.omx,fare,EA -WLK_EXP_DRV_DTIM,trnskmEA_WLK_EXP_DRV.omx,dtime,EA -WLK_EXP_DRV_DDIST,trnskmEA_WLK_EXP_DRV.omx,ddist,EA -WLK_EXP_DRV_WAUX,trnskmEA_WLK_EXP_DRV.omx,waux,EA -WLK_EXP_DRV_IWAIT,trnskmEA_WLK_EXP_DRV.omx,iwait,EA -WLK_EXP_DRV_XWAIT,trnskmEA_WLK_EXP_DRV.omx,xwait,EA -WLK_EXP_DRV_BOARDS,trnskmEA_WLK_EXP_DRV.omx,boards,EA -WLK_EXP_WLK_WAIT,trnskmEA_WLK_EXP_WLK.omx,wait,EA -WLK_EXP_WLK_TOTIVT,trnskmEA_WLK_EXP_WLK.omx,ivt,EA -WLK_EXP_WLK_KEYIVT,trnskmEA_WLK_EXP_WLK.omx,ivtEXP,EA -WLK_EXP_WLK_FAR,trnskmEA_WLK_EXP_WLK.omx,fare,EA -WLK_EXP_WLK_WAUX,trnskmEA_WLK_EXP_WLK.omx,waux,EA -WLK_EXP_WLK_IWAIT,trnskmEA_WLK_EXP_WLK.omx,iwait,EA -WLK_EXP_WLK_XWAIT,trnskmEA_WLK_EXP_WLK.omx,xwait,EA -WLK_EXP_WLK_BOARDS,trnskmEA_WLK_EXP_WLK.omx,boards,EA -WLK_HVY_DRV_WAIT,trnskmEA_WLK_HVY_DRV.omx,wait,EA -WLK_HVY_DRV_TOTIVT,trnskmEA_WLK_HVY_DRV.omx,ivt,EA -WLK_HVY_DRV_KEYIVT,trnskmEA_WLK_HVY_DRV.omx,ivtHVY,EA -WLK_HVY_DRV_FAR,trnskmEA_WLK_HVY_DRV.omx,fare,EA -WLK_HVY_DRV_DTIM,trnskmEA_WLK_HVY_DRV.omx,dtime,EA -WLK_HVY_DRV_DDIST,trnskmEA_WLK_HVY_DRV.omx,ddist,EA -WLK_HVY_DRV_WAUX,trnskmEA_WLK_HVY_DRV.omx,waux,EA -WLK_HVY_DRV_IWAIT,trnskmEA_WLK_HVY_DRV.omx,iwait,EA -WLK_HVY_DRV_XWAIT,trnskmEA_WLK_HVY_DRV.omx,xwait,EA -WLK_HVY_DRV_BOARDS,trnskmEA_WLK_HVY_DRV.omx,boards,EA -WLK_HVY_WLK_WAIT,trnskmEA_WLK_HVY_WLK.omx,wait,EA -WLK_HVY_WLK_TOTIVT,trnskmEA_WLK_HVY_WLK.omx,ivt,EA -WLK_HVY_WLK_KEYIVT,trnskmEA_WLK_HVY_WLK.omx,ivtHVY,EA -WLK_HVY_WLK_FAR,trnskmEA_WLK_HVY_WLK.omx,fare,EA -WLK_HVY_WLK_WAUX,trnskmEA_WLK_HVY_WLK.omx,waux,EA -WLK_HVY_WLK_IWAIT,trnskmEA_WLK_HVY_WLK.omx,iwait,EA -WLK_HVY_WLK_XWAIT,trnskmEA_WLK_HVY_WLK.omx,xwait,EA -WLK_HVY_WLK_BOARDS,trnskmEA_WLK_HVY_WLK.omx,boards,EA -WLK_LOC_DRV_WAIT,trnskmEA_WLK_LOC_DRV.omx,wait,EA -WLK_LOC_DRV_TOTIVT,trnskmEA_WLK_LOC_DRV.omx,ivt,EA -WLK_LOC_DRV_FAR,trnskmEA_WLK_LOC_DRV.omx,fare,EA -WLK_LOC_DRV_DTIM,trnskmEA_WLK_LOC_DRV.omx,dtime,EA -WLK_LOC_DRV_DDIST,trnskmEA_WLK_LOC_DRV.omx,ddist,EA -WLK_LOC_DRV_WAUX,trnskmEA_WLK_LOC_DRV.omx,waux,EA -WLK_LOC_DRV_IWAIT,trnskmEA_WLK_LOC_DRV.omx,iwait,EA -WLK_LOC_DRV_XWAIT,trnskmEA_WLK_LOC_DRV.omx,xwait,EA -WLK_LOC_DRV_BOARDS,trnskmEA_WLK_LOC_DRV.omx,boards,EA -WLK_LOC_WLK_WAIT,trnskmEA_WLK_LOC_WLK.omx,wait,EA -WLK_LOC_WLK_TOTIVT,trnskmEA_WLK_LOC_WLK.omx,ivt,EA -WLK_LOC_WLK_FAR,trnskmEA_WLK_LOC_WLK.omx,fare,EA -WLK_LOC_WLK_WAUX,trnskmEA_WLK_LOC_WLK.omx,waux,EA -WLK_LOC_WLK_IWAIT,trnskmEA_WLK_LOC_WLK.omx,iwait,EA -WLK_LOC_WLK_XWAIT,trnskmEA_WLK_LOC_WLK.omx,xwait,EA -WLK_LOC_WLK_BOARDS,trnskmEA_WLK_LOC_WLK.omx,boards,EA -WLK_LRF_DRV_WAIT,trnskmEA_WLK_LRF_DRV.omx,wait,EA -WLK_LRF_DRV_TOTIVT,trnskmEA_WLK_LRF_DRV.omx,ivt,EA -WLK_LRF_DRV_KEYIVT,trnskmEA_WLK_LRF_DRV.omx,ivtLRF,EA -WLK_LRF_DRV_FERRYIVT,trnskmEA_WLK_LRF_DRV.omx,ivtFerry,EA -WLK_LRF_DRV_FAR,trnskmEA_WLK_LRF_DRV.omx,fare,EA -WLK_LRF_DRV_DTIM,trnskmEA_WLK_LRF_DRV.omx,dtime,EA -WLK_LRF_DRV_DDIST,trnskmEA_WLK_LRF_DRV.omx,ddist,EA -WLK_LRF_DRV_WAUX,trnskmEA_WLK_LRF_DRV.omx,waux,EA -WLK_LRF_DRV_IWAIT,trnskmEA_WLK_LRF_DRV.omx,iwait,EA -WLK_LRF_DRV_XWAIT,trnskmEA_WLK_LRF_DRV.omx,xwait,EA -WLK_LRF_DRV_BOARDS,trnskmEA_WLK_LRF_DRV.omx,boards,EA -WLK_LRF_WLK_WAIT,trnskmEA_WLK_LRF_WLK.omx,wait,EA -WLK_LRF_WLK_TOTIVT,trnskmEA_WLK_LRF_WLK.omx,ivt,EA -WLK_LRF_WLK_KEYIVT,trnskmEA_WLK_LRF_WLK.omx,ivtLRF,EA -WLK_LRF_WLK_FERRYIVT,trnskmEA_WLK_LRF_WLK.omx,ivtFerry,EA -WLK_LRF_WLK_FAR,trnskmEA_WLK_LRF_WLK.omx,fare,EA -WLK_LRF_WLK_WAUX,trnskmEA_WLK_LRF_WLK.omx,waux,EA -WLK_LRF_WLK_IWAIT,trnskmEA_WLK_LRF_WLK.omx,iwait,EA -WLK_LRF_WLK_XWAIT,trnskmEA_WLK_LRF_WLK.omx,xwait,EA -WLK_LRF_WLK_BOARDS,trnskmEA_WLK_LRF_WLK.omx,boards,EA -DRV_COM_WLK_WAIT,trnskmEV_DRV_COM_WLK.omx,wait,EV -DRV_COM_WLK_TOTIVT,trnskmEV_DRV_COM_WLK.omx,ivt,EV -DRV_COM_WLK_KEYIVT,trnskmEV_DRV_COM_WLK.omx,ivtCOM,EV -DRV_COM_WLK_FAR,trnskmEV_DRV_COM_WLK.omx,fare,EV -DRV_COM_WLK_DTIM,trnskmEV_DRV_COM_WLK.omx,dtime,EV -DRV_COM_WLK_DDIST,trnskmEV_DRV_COM_WLK.omx,ddist,EV -DRV_COM_WLK_WAUX,trnskmEV_DRV_COM_WLK.omx,waux,EV -DRV_COM_WLK_IWAIT,trnskmEV_DRV_COM_WLK.omx,iwait,EV -DRV_COM_WLK_XWAIT,trnskmEV_DRV_COM_WLK.omx,xwait,EV -DRV_COM_WLK_BOARDS,trnskmEV_DRV_COM_WLK.omx,boards,EV -DRV_EXP_WLK_WAIT,trnskmEV_DRV_EXP_WLK.omx,wait,EV -DRV_EXP_WLK_TOTIVT,trnskmEV_DRV_EXP_WLK.omx,ivt,EV -DRV_EXP_WLK_KEYIVT,trnskmEV_DRV_EXP_WLK.omx,ivtEXP,EV -DRV_EXP_WLK_FAR,trnskmEV_DRV_EXP_WLK.omx,fare,EV -DRV_EXP_WLK_DTIM,trnskmEV_DRV_EXP_WLK.omx,dtime,EV -DRV_EXP_WLK_WAUX,trnskmEV_DRV_EXP_WLK.omx,waux,EV -DRV_EXP_WLK_IWAIT,trnskmEV_DRV_EXP_WLK.omx,iwait,EV -DRV_EXP_WLK_XWAIT,trnskmEV_DRV_EXP_WLK.omx,xwait,EV -DRV_EXP_WLK_BOARDS,trnskmEV_DRV_EXP_WLK.omx,boards,EV -DRV_EXP_WLK_DDIST,trnskmEV_DRV_EXP_WLK.omx,ddist,EV -DRV_HVY_WLK_WAIT,trnskmEV_DRV_HVY_WLK.omx,wait,EV -DRV_HVY_WLK_TOTIVT,trnskmEV_DRV_HVY_WLK.omx,ivt,EV -DRV_HVY_WLK_KEYIVT,trnskmEV_DRV_HVY_WLK.omx,ivtHVY,EV -DRV_HVY_WLK_FAR,trnskmEV_DRV_HVY_WLK.omx,fare,EV -DRV_HVY_WLK_DTIM,trnskmEV_DRV_HVY_WLK.omx,dtime,EV -DRV_HVY_WLK_DDIST,trnskmEV_DRV_HVY_WLK.omx,ddist,EV -DRV_HVY_WLK_WAUX,trnskmEV_DRV_HVY_WLK.omx,waux,EV -DRV_HVY_WLK_IWAIT,trnskmEV_DRV_HVY_WLK.omx,iwait,EV -DRV_HVY_WLK_XWAIT,trnskmEV_DRV_HVY_WLK.omx,xwait,EV -DRV_HVY_WLK_BOARDS,trnskmEV_DRV_HVY_WLK.omx,boards,EV -DRV_LOC_WLK_WAIT,trnskmEV_DRV_LOC_WLK.omx,wait,EV -DRV_LOC_WLK_TOTIVT,trnskmEV_DRV_LOC_WLK.omx,ivt,EV -DRV_LOC_WLK_FAR,trnskmEV_DRV_LOC_WLK.omx,fare,EV -DRV_LOC_WLK_DTIM,trnskmEV_DRV_LOC_WLK.omx,dtime,EV -DRV_LOC_WLK_DDIST,trnskmEV_DRV_LOC_WLK.omx,ddist,EV -DRV_LOC_WLK_WAUX,trnskmEV_DRV_LOC_WLK.omx,waux,EV -DRV_LOC_WLK_IWAIT,trnskmEV_DRV_LOC_WLK.omx,iwait,EV -DRV_LOC_WLK_XWAIT,trnskmEV_DRV_LOC_WLK.omx,xwait,EV -DRV_LOC_WLK_BOARDS,trnskmEV_DRV_LOC_WLK.omx,boards,EV -DRV_LRF_WLK_WAIT,trnskmEV_DRV_LRF_WLK.omx,wait,EV -DRV_LRF_WLK_TOTIVT,trnskmEV_DRV_LRF_WLK.omx,ivt,EV -DRV_LRF_WLK_KEYIVT,trnskmEV_DRV_LRF_WLK.omx,ivtLRF,EV -DRV_LRF_WLK_FERRYIVT,trnskmEV_DRV_LRF_WLK.omx,ivtFerry,EV -DRV_LRF_WLK_FAR,trnskmEV_DRV_LRF_WLK.omx,fare,EV -DRV_LRF_WLK_DTIM,trnskmEV_DRV_LRF_WLK.omx,dtime,EV -DRV_LRF_WLK_DDIST,trnskmEV_DRV_LRF_WLK.omx,ddist,EV -DRV_LRF_WLK_WAUX,trnskmEV_DRV_LRF_WLK.omx,waux,EV -DRV_LRF_WLK_IWAIT,trnskmEV_DRV_LRF_WLK.omx,iwait,EV -DRV_LRF_WLK_XWAIT,trnskmEV_DRV_LRF_WLK.omx,xwait,EV -DRV_LRF_WLK_BOARDS,trnskmEV_DRV_LRF_WLK.omx,boards,EV -WLK_COM_DRV_WAIT,trnskmEV_WLK_COM_DRV.omx,wait,EV -WLK_COM_DRV_TOTIVT,trnskmEV_WLK_COM_DRV.omx,ivt,EV -WLK_COM_DRV_KEYIVT,trnskmEV_WLK_COM_DRV.omx,ivtCOM,EV -WLK_COM_DRV_FAR,trnskmEV_WLK_COM_DRV.omx,fare,EV -WLK_COM_DRV_DTIM,trnskmEV_WLK_COM_DRV.omx,dtime,EV -WLK_COM_DRV_DDIST,trnskmEV_WLK_COM_DRV.omx,ddist,EV -WLK_COM_DRV_WAUX,trnskmEV_WLK_COM_DRV.omx,waux,EV -WLK_COM_DRV_IWAIT,trnskmEV_WLK_COM_DRV.omx,iwait,EV -WLK_COM_DRV_XWAIT,trnskmEV_WLK_COM_DRV.omx,xwait,EV -WLK_COM_DRV_BOARDS,trnskmEV_WLK_COM_DRV.omx,boards,EV -WLK_COM_WLK_WAIT,trnskmEV_WLK_COM_WLK.omx,wait,EV -WLK_COM_WLK_TOTIVT,trnskmEV_WLK_COM_WLK.omx,ivt,EV -WLK_COM_WLK_KEYIVT,trnskmEV_WLK_COM_WLK.omx,ivtCOM,EV -WLK_COM_WLK_FAR,trnskmEV_WLK_COM_WLK.omx,fare,EV -WLK_COM_WLK_WAUX,trnskmEV_WLK_COM_WLK.omx,waux,EV -WLK_COM_WLK_IWAIT,trnskmEV_WLK_COM_WLK.omx,iwait,EV -WLK_COM_WLK_XWAIT,trnskmEV_WLK_COM_WLK.omx,xwait,EV -WLK_COM_WLK_BOARDS,trnskmEV_WLK_COM_WLK.omx,boards,EV -WLK_EXP_DRV_WAIT,trnskmEV_WLK_EXP_DRV.omx,wait,EV -WLK_EXP_DRV_TOTIVT,trnskmEV_WLK_EXP_DRV.omx,ivt,EV -WLK_EXP_DRV_KEYIVT,trnskmEV_WLK_EXP_DRV.omx,ivtEXP,EV -WLK_EXP_DRV_FAR,trnskmEV_WLK_EXP_DRV.omx,fare,EV -WLK_EXP_DRV_DTIM,trnskmEV_WLK_EXP_DRV.omx,dtime,EV -WLK_EXP_DRV_WAUX,trnskmEV_WLK_EXP_DRV.omx,waux,EV -WLK_EXP_DRV_IWAIT,trnskmEV_WLK_EXP_DRV.omx,iwait,EV -WLK_EXP_DRV_XWAIT,trnskmEV_WLK_EXP_DRV.omx,xwait,EV -WLK_EXP_DRV_BOARDS,trnskmEV_WLK_EXP_DRV.omx,boards,EV -WLK_EXP_DRV_DDIST,trnskmEV_WLK_EXP_DRV.omx,ddist,EV -WLK_EXP_WLK_WAIT,trnskmEV_WLK_EXP_WLK.omx,wait,EV -WLK_EXP_WLK_TOTIVT,trnskmEV_WLK_EXP_WLK.omx,ivt,EV -WLK_EXP_WLK_KEYIVT,trnskmEV_WLK_EXP_WLK.omx,ivtEXP,EV -WLK_EXP_WLK_FAR,trnskmEV_WLK_EXP_WLK.omx,fare,EV -WLK_EXP_WLK_WAUX,trnskmEV_WLK_EXP_WLK.omx,waux,EV -WLK_EXP_WLK_IWAIT,trnskmEV_WLK_EXP_WLK.omx,iwait,EV -WLK_EXP_WLK_XWAIT,trnskmEV_WLK_EXP_WLK.omx,xwait,EV -WLK_EXP_WLK_BOARDS,trnskmEV_WLK_EXP_WLK.omx,boards,EV -WLK_HVY_DRV_WAIT,trnskmEV_WLK_HVY_DRV.omx,wait,EV -WLK_HVY_DRV_TOTIVT,trnskmEV_WLK_HVY_DRV.omx,ivt,EV -WLK_HVY_DRV_KEYIVT,trnskmEV_WLK_HVY_DRV.omx,ivtHVY,EV -WLK_HVY_DRV_FAR,trnskmEV_WLK_HVY_DRV.omx,fare,EV -WLK_HVY_DRV_DTIM,trnskmEV_WLK_HVY_DRV.omx,dtime,EV -WLK_HVY_DRV_DDIST,trnskmEV_WLK_HVY_DRV.omx,ddist,EV -WLK_HVY_DRV_WAUX,trnskmEV_WLK_HVY_DRV.omx,waux,EV -WLK_HVY_DRV_IWAIT,trnskmEV_WLK_HVY_DRV.omx,iwait,EV -WLK_HVY_DRV_XWAIT,trnskmEV_WLK_HVY_DRV.omx,xwait,EV -WLK_HVY_DRV_BOARDS,trnskmEV_WLK_HVY_DRV.omx,boards,EV -WLK_HVY_WLK_WAIT,trnskmEV_WLK_HVY_WLK.omx,wait,EV -WLK_HVY_WLK_TOTIVT,trnskmEV_WLK_HVY_WLK.omx,ivt,EV -WLK_HVY_WLK_KEYIVT,trnskmEV_WLK_HVY_WLK.omx,ivtHVY,EV -WLK_HVY_WLK_FAR,trnskmEV_WLK_HVY_WLK.omx,fare,EV -WLK_HVY_WLK_WAUX,trnskmEV_WLK_HVY_WLK.omx,waux,EV -WLK_HVY_WLK_IWAIT,trnskmEV_WLK_HVY_WLK.omx,iwait,EV -WLK_HVY_WLK_XWAIT,trnskmEV_WLK_HVY_WLK.omx,xwait,EV -WLK_HVY_WLK_BOARDS,trnskmEV_WLK_HVY_WLK.omx,boards,EV -WLK_LOC_DRV_WAIT,trnskmEV_WLK_LOC_DRV.omx,wait,EV -WLK_LOC_DRV_TOTIVT,trnskmEV_WLK_LOC_DRV.omx,ivt,EV -WLK_LOC_DRV_FAR,trnskmEV_WLK_LOC_DRV.omx,fare,EV -WLK_LOC_DRV_DTIM,trnskmEV_WLK_LOC_DRV.omx,dtime,EV -WLK_LOC_DRV_DDIST,trnskmEV_WLK_LOC_DRV.omx,ddist,EV -WLK_LOC_DRV_WAUX,trnskmEV_WLK_LOC_DRV.omx,waux,EV -WLK_LOC_DRV_IWAIT,trnskmEV_WLK_LOC_DRV.omx,iwait,EV -WLK_LOC_DRV_XWAIT,trnskmEV_WLK_LOC_DRV.omx,xwait,EV -WLK_LOC_DRV_BOARDS,trnskmEV_WLK_LOC_DRV.omx,boards,EV -WLK_LOC_WLK_WAIT,trnskmEV_WLK_LOC_WLK.omx,wait,EV -WLK_LOC_WLK_TOTIVT,trnskmEV_WLK_LOC_WLK.omx,ivt,EV -WLK_LOC_WLK_FAR,trnskmEV_WLK_LOC_WLK.omx,fare,EV -WLK_LOC_WLK_WAUX,trnskmEV_WLK_LOC_WLK.omx,waux,EV -WLK_LOC_WLK_IWAIT,trnskmEV_WLK_LOC_WLK.omx,iwait,EV -WLK_LOC_WLK_XWAIT,trnskmEV_WLK_LOC_WLK.omx,xwait,EV -WLK_LOC_WLK_BOARDS,trnskmEV_WLK_LOC_WLK.omx,boards,EV -WLK_LRF_DRV_WAIT,trnskmEV_WLK_LRF_DRV.omx,wait,EV -WLK_LRF_DRV_TOTIVT,trnskmEV_WLK_LRF_DRV.omx,ivt,EV -WLK_LRF_DRV_KEYIVT,trnskmEV_WLK_LRF_DRV.omx,ivtLRF,EV -WLK_LRF_DRV_FERRYIVT,trnskmEV_WLK_LRF_DRV.omx,ivtFerry,EV -WLK_LRF_DRV_FAR,trnskmEV_WLK_LRF_DRV.omx,fare,EV -WLK_LRF_DRV_DTIM,trnskmEV_WLK_LRF_DRV.omx,dtime,EV -WLK_LRF_DRV_DDIST,trnskmEV_WLK_LRF_DRV.omx,ddist,EV -WLK_LRF_DRV_WAUX,trnskmEV_WLK_LRF_DRV.omx,waux,EV -WLK_LRF_DRV_IWAIT,trnskmEV_WLK_LRF_DRV.omx,iwait,EV -WLK_LRF_DRV_XWAIT,trnskmEV_WLK_LRF_DRV.omx,xwait,EV -WLK_LRF_DRV_BOARDS,trnskmEV_WLK_LRF_DRV.omx,boards,EV -WLK_LRF_WLK_WAIT,trnskmEV_WLK_LRF_WLK.omx,wait,EV -WLK_LRF_WLK_TOTIVT,trnskmEV_WLK_LRF_WLK.omx,ivt,EV -WLK_LRF_WLK_KEYIVT,trnskmEV_WLK_LRF_WLK.omx,ivtLRF,EV -WLK_LRF_WLK_FERRYIVT,trnskmEV_WLK_LRF_WLK.omx,ivtFerry,EV -WLK_LRF_WLK_FAR,trnskmEV_WLK_LRF_WLK.omx,fare,EV -WLK_LRF_WLK_WAUX,trnskmEV_WLK_LRF_WLK.omx,waux,EV -WLK_LRF_WLK_IWAIT,trnskmEV_WLK_LRF_WLK.omx,iwait,EV -WLK_LRF_WLK_XWAIT,trnskmEV_WLK_LRF_WLK.omx,xwait,EV -WLK_LRF_WLK_BOARDS,trnskmEV_WLK_LRF_WLK.omx,boards,EV -DRV_COM_WLK_WAIT,trnskmMD_DRV_COM_WLK.omx,wait,MD -DRV_COM_WLK_TOTIVT,trnskmMD_DRV_COM_WLK.omx,ivt,MD -DRV_COM_WLK_KEYIVT,trnskmMD_DRV_COM_WLK.omx,ivtCOM,MD -DRV_COM_WLK_FAR,trnskmMD_DRV_COM_WLK.omx,fare,MD -DRV_COM_WLK_DTIM,trnskmMD_DRV_COM_WLK.omx,dtime,MD -DRV_COM_WLK_DDIST,trnskmMD_DRV_COM_WLK.omx,ddist,MD -DRV_COM_WLK_WAUX,trnskmMD_DRV_COM_WLK.omx,waux,MD -DRV_COM_WLK_IWAIT,trnskmMD_DRV_COM_WLK.omx,iwait,MD -DRV_COM_WLK_XWAIT,trnskmMD_DRV_COM_WLK.omx,xwait,MD -DRV_COM_WLK_BOARDS,trnskmMD_DRV_COM_WLK.omx,boards,MD -DRV_EXP_WLK_WAIT,trnskmMD_DRV_EXP_WLK.omx,wait,MD -DRV_EXP_WLK_TOTIVT,trnskmMD_DRV_EXP_WLK.omx,ivt,MD -DRV_EXP_WLK_KEYIVT,trnskmMD_DRV_EXP_WLK.omx,ivtEXP,MD -DRV_EXP_WLK_FAR,trnskmMD_DRV_EXP_WLK.omx,fare,MD -DRV_EXP_WLK_DTIM,trnskmMD_DRV_EXP_WLK.omx,dtime,MD -DRV_EXP_WLK_WAUX,trnskmMD_DRV_EXP_WLK.omx,waux,MD -DRV_EXP_WLK_IWAIT,trnskmMD_DRV_EXP_WLK.omx,iwait,MD -DRV_EXP_WLK_XWAIT,trnskmMD_DRV_EXP_WLK.omx,xwait,MD -DRV_EXP_WLK_BOARDS,trnskmMD_DRV_EXP_WLK.omx,boards,MD -DRV_EXP_WLK_DDIST,trnskmMD_DRV_EXP_WLK.omx,ddist,MD -DRV_HVY_WLK_WAIT,trnskmMD_DRV_HVY_WLK.omx,wait,MD -DRV_HVY_WLK_TOTIVT,trnskmMD_DRV_HVY_WLK.omx,ivt,MD -DRV_HVY_WLK_KEYIVT,trnskmMD_DRV_HVY_WLK.omx,ivtHVY,MD -DRV_HVY_WLK_FAR,trnskmMD_DRV_HVY_WLK.omx,fare,MD -DRV_HVY_WLK_DTIM,trnskmMD_DRV_HVY_WLK.omx,dtime,MD -DRV_HVY_WLK_DDIST,trnskmMD_DRV_HVY_WLK.omx,ddist,MD -DRV_HVY_WLK_WAUX,trnskmMD_DRV_HVY_WLK.omx,waux,MD -DRV_HVY_WLK_IWAIT,trnskmMD_DRV_HVY_WLK.omx,iwait,MD -DRV_HVY_WLK_XWAIT,trnskmMD_DRV_HVY_WLK.omx,xwait,MD -DRV_HVY_WLK_BOARDS,trnskmMD_DRV_HVY_WLK.omx,boards,MD -DRV_LOC_WLK_WAIT,trnskmMD_DRV_LOC_WLK.omx,wait,MD -DRV_LOC_WLK_TOTIVT,trnskmMD_DRV_LOC_WLK.omx,ivt,MD -DRV_LOC_WLK_FAR,trnskmMD_DRV_LOC_WLK.omx,fare,MD -DRV_LOC_WLK_DTIM,trnskmMD_DRV_LOC_WLK.omx,dtime,MD -DRV_LOC_WLK_DDIST,trnskmMD_DRV_LOC_WLK.omx,ddist,MD -DRV_LOC_WLK_WAUX,trnskmMD_DRV_LOC_WLK.omx,waux,MD -DRV_LOC_WLK_IWAIT,trnskmMD_DRV_LOC_WLK.omx,iwait,MD -DRV_LOC_WLK_XWAIT,trnskmMD_DRV_LOC_WLK.omx,xwait,MD -DRV_LOC_WLK_BOARDS,trnskmMD_DRV_LOC_WLK.omx,boards,MD -DRV_LRF_WLK_WAIT,trnskmMD_DRV_LRF_WLK.omx,wait,MD -DRV_LRF_WLK_TOTIVT,trnskmMD_DRV_LRF_WLK.omx,ivt,MD -DRV_LRF_WLK_KEYIVT,trnskmMD_DRV_LRF_WLK.omx,ivtLRF,MD -DRV_LRF_WLK_FERRYIVT,trnskmMD_DRV_LRF_WLK.omx,ivtFerry,MD -DRV_LRF_WLK_FAR,trnskmMD_DRV_LRF_WLK.omx,fare,MD -DRV_LRF_WLK_DTIM,trnskmMD_DRV_LRF_WLK.omx,dtime,MD -DRV_LRF_WLK_DDIST,trnskmMD_DRV_LRF_WLK.omx,ddist,MD -DRV_LRF_WLK_WAUX,trnskmMD_DRV_LRF_WLK.omx,waux,MD -DRV_LRF_WLK_IWAIT,trnskmMD_DRV_LRF_WLK.omx,iwait,MD -DRV_LRF_WLK_XWAIT,trnskmMD_DRV_LRF_WLK.omx,xwait,MD -DRV_LRF_WLK_BOARDS,trnskmMD_DRV_LRF_WLK.omx,boards,MD -WLK_COM_DRV_WAIT,trnskmMD_WLK_COM_DRV.omx,wait,MD -WLK_COM_DRV_TOTIVT,trnskmMD_WLK_COM_DRV.omx,ivt,MD -WLK_COM_DRV_KEYIVT,trnskmMD_WLK_COM_DRV.omx,ivtCOM,MD -WLK_COM_DRV_FAR,trnskmMD_WLK_COM_DRV.omx,fare,MD -WLK_COM_DRV_DTIM,trnskmMD_WLK_COM_DRV.omx,dtime,MD -WLK_COM_DRV_DDIST,trnskmMD_WLK_COM_DRV.omx,ddist,MD -WLK_COM_DRV_WAUX,trnskmMD_WLK_COM_DRV.omx,waux,MD -WLK_COM_DRV_IWAIT,trnskmMD_WLK_COM_DRV.omx,iwait,MD -WLK_COM_DRV_XWAIT,trnskmMD_WLK_COM_DRV.omx,xwait,MD -WLK_COM_DRV_BOARDS,trnskmMD_WLK_COM_DRV.omx,boards,MD -WLK_COM_WLK_WAIT,trnskmMD_WLK_COM_WLK.omx,wait,MD -WLK_COM_WLK_TOTIVT,trnskmMD_WLK_COM_WLK.omx,ivt,MD -WLK_COM_WLK_KEYIVT,trnskmMD_WLK_COM_WLK.omx,ivtCOM,MD -WLK_COM_WLK_FAR,trnskmMD_WLK_COM_WLK.omx,fare,MD -WLK_COM_WLK_WAUX,trnskmMD_WLK_COM_WLK.omx,waux,MD -WLK_COM_WLK_IWAIT,trnskmMD_WLK_COM_WLK.omx,iwait,MD -WLK_COM_WLK_XWAIT,trnskmMD_WLK_COM_WLK.omx,xwait,MD -WLK_COM_WLK_BOARDS,trnskmMD_WLK_COM_WLK.omx,boards,MD -WLK_EXP_DRV_WAIT,trnskmMD_WLK_EXP_DRV.omx,wait,MD -WLK_EXP_DRV_TOTIVT,trnskmMD_WLK_EXP_DRV.omx,ivt,MD -WLK_EXP_DRV_KEYIVT,trnskmMD_WLK_EXP_DRV.omx,ivtEXP,MD -WLK_EXP_DRV_FAR,trnskmMD_WLK_EXP_DRV.omx,fare,MD -WLK_EXP_DRV_DTIM,trnskmMD_WLK_EXP_DRV.omx,dtime,MD -WLK_EXP_DRV_WAUX,trnskmMD_WLK_EXP_DRV.omx,waux,MD -WLK_EXP_DRV_IWAIT,trnskmMD_WLK_EXP_DRV.omx,iwait,MD -WLK_EXP_DRV_XWAIT,trnskmMD_WLK_EXP_DRV.omx,xwait,MD -WLK_EXP_DRV_BOARDS,trnskmMD_WLK_EXP_DRV.omx,boards,MD -WLK_EXP_DRV_DDIST,trnskmMD_WLK_EXP_DRV.omx,ddist,MD -WLK_EXP_WLK_WAIT,trnskmMD_WLK_EXP_WLK.omx,wait,MD -WLK_EXP_WLK_TOTIVT,trnskmMD_WLK_EXP_WLK.omx,ivt,MD -WLK_EXP_WLK_KEYIVT,trnskmMD_WLK_EXP_WLK.omx,ivtEXP,MD -WLK_EXP_WLK_FAR,trnskmMD_WLK_EXP_WLK.omx,fare,MD -WLK_EXP_WLK_WAUX,trnskmMD_WLK_EXP_WLK.omx,waux,MD -WLK_EXP_WLK_IWAIT,trnskmMD_WLK_EXP_WLK.omx,iwait,MD -WLK_EXP_WLK_XWAIT,trnskmMD_WLK_EXP_WLK.omx,xwait,MD -WLK_EXP_WLK_BOARDS,trnskmMD_WLK_EXP_WLK.omx,boards,MD -WLK_HVY_DRV_WAIT,trnskmMD_WLK_HVY_DRV.omx,wait,MD -WLK_HVY_DRV_TOTIVT,trnskmMD_WLK_HVY_DRV.omx,ivt,MD -WLK_HVY_DRV_KEYIVT,trnskmMD_WLK_HVY_DRV.omx,ivtHVY,MD -WLK_HVY_DRV_FAR,trnskmMD_WLK_HVY_DRV.omx,fare,MD -WLK_HVY_DRV_DTIM,trnskmMD_WLK_HVY_DRV.omx,dtime,MD -WLK_HVY_DRV_DDIST,trnskmMD_WLK_HVY_DRV.omx,ddist,MD -WLK_HVY_DRV_WAUX,trnskmMD_WLK_HVY_DRV.omx,waux,MD -WLK_HVY_DRV_IWAIT,trnskmMD_WLK_HVY_DRV.omx,iwait,MD -WLK_HVY_DRV_XWAIT,trnskmMD_WLK_HVY_DRV.omx,xwait,MD -WLK_HVY_DRV_BOARDS,trnskmMD_WLK_HVY_DRV.omx,boards,MD -WLK_HVY_WLK_WAIT,trnskmMD_WLK_HVY_WLK.omx,wait,MD -WLK_HVY_WLK_TOTIVT,trnskmMD_WLK_HVY_WLK.omx,ivt,MD -WLK_HVY_WLK_KEYIVT,trnskmMD_WLK_HVY_WLK.omx,ivtHVY,MD -WLK_HVY_WLK_FAR,trnskmMD_WLK_HVY_WLK.omx,fare,MD -WLK_HVY_WLK_WAUX,trnskmMD_WLK_HVY_WLK.omx,waux,MD -WLK_HVY_WLK_IWAIT,trnskmMD_WLK_HVY_WLK.omx,iwait,MD -WLK_HVY_WLK_XWAIT,trnskmMD_WLK_HVY_WLK.omx,xwait,MD -WLK_HVY_WLK_BOARDS,trnskmMD_WLK_HVY_WLK.omx,boards,MD -WLK_LOC_DRV_WAIT,trnskmMD_WLK_LOC_DRV.omx,wait,MD -WLK_LOC_DRV_TOTIVT,trnskmMD_WLK_LOC_DRV.omx,ivt,MD -WLK_LOC_DRV_FAR,trnskmMD_WLK_LOC_DRV.omx,fare,MD -WLK_LOC_DRV_DTIM,trnskmMD_WLK_LOC_DRV.omx,dtime,MD -WLK_LOC_DRV_DDIST,trnskmMD_WLK_LOC_DRV.omx,ddist,MD -WLK_LOC_DRV_WAUX,trnskmMD_WLK_LOC_DRV.omx,waux,MD -WLK_LOC_DRV_IWAIT,trnskmMD_WLK_LOC_DRV.omx,iwait,MD -WLK_LOC_DRV_XWAIT,trnskmMD_WLK_LOC_DRV.omx,xwait,MD -WLK_LOC_DRV_BOARDS,trnskmMD_WLK_LOC_DRV.omx,boards,MD -WLK_LOC_WLK_WAIT,trnskmMD_WLK_LOC_WLK.omx,wait,MD -WLK_LOC_WLK_TOTIVT,trnskmMD_WLK_LOC_WLK.omx,ivt,MD -WLK_LOC_WLK_FAR,trnskmMD_WLK_LOC_WLK.omx,fare,MD -WLK_LOC_WLK_WAUX,trnskmMD_WLK_LOC_WLK.omx,waux,MD -WLK_LOC_WLK_IWAIT,trnskmMD_WLK_LOC_WLK.omx,iwait,MD -WLK_LOC_WLK_XWAIT,trnskmMD_WLK_LOC_WLK.omx,xwait,MD -WLK_LOC_WLK_BOARDS,trnskmMD_WLK_LOC_WLK.omx,boards,MD -WLK_LRF_DRV_WAIT,trnskmMD_WLK_LRF_DRV.omx,wait,MD -WLK_LRF_DRV_TOTIVT,trnskmMD_WLK_LRF_DRV.omx,ivt,MD -WLK_LRF_DRV_KEYIVT,trnskmMD_WLK_LRF_DRV.omx,ivtLRF,MD -WLK_LRF_DRV_FERRYIVT,trnskmMD_WLK_LRF_DRV.omx,ivtFerry,MD -WLK_LRF_DRV_FAR,trnskmMD_WLK_LRF_DRV.omx,fare,MD -WLK_LRF_DRV_DTIM,trnskmMD_WLK_LRF_DRV.omx,dtime,MD -WLK_LRF_DRV_DDIST,trnskmMD_WLK_LRF_DRV.omx,ddist,MD -WLK_LRF_DRV_WAUX,trnskmMD_WLK_LRF_DRV.omx,waux,MD -WLK_LRF_DRV_IWAIT,trnskmMD_WLK_LRF_DRV.omx,iwait,MD -WLK_LRF_DRV_XWAIT,trnskmMD_WLK_LRF_DRV.omx,xwait,MD -WLK_LRF_DRV_BOARDS,trnskmMD_WLK_LRF_DRV.omx,boards,MD -WLK_LRF_WLK_WAIT,trnskmMD_WLK_LRF_WLK.omx,wait,MD -WLK_LRF_WLK_TOTIVT,trnskmMD_WLK_LRF_WLK.omx,ivt,MD -WLK_LRF_WLK_KEYIVT,trnskmMD_WLK_LRF_WLK.omx,ivtLRF,MD -WLK_LRF_WLK_FERRYIVT,trnskmMD_WLK_LRF_WLK.omx,ivtFerry,MD -WLK_LRF_WLK_FAR,trnskmMD_WLK_LRF_WLK.omx,fare,MD -WLK_LRF_WLK_WAUX,trnskmMD_WLK_LRF_WLK.omx,waux,MD -WLK_LRF_WLK_IWAIT,trnskmMD_WLK_LRF_WLK.omx,iwait,MD -WLK_LRF_WLK_XWAIT,trnskmMD_WLK_LRF_WLK.omx,xwait,MD -WLK_LRF_WLK_BOARDS,trnskmMD_WLK_LRF_WLK.omx,boards,MD -DRV_COM_WLK_WAIT,trnskmPM_DRV_COM_WLK.omx,wait,PM -DRV_COM_WLK_TOTIVT,trnskmPM_DRV_COM_WLK.omx,ivt,PM -DRV_COM_WLK_KEYIVT,trnskmPM_DRV_COM_WLK.omx,ivtCOM,PM -DRV_COM_WLK_FAR,trnskmPM_DRV_COM_WLK.omx,fare,PM -DRV_COM_WLK_DTIM,trnskmPM_DRV_COM_WLK.omx,dtime,PM -DRV_COM_WLK_DDIST,trnskmPM_DRV_COM_WLK.omx,ddist,PM -DRV_COM_WLK_WAUX,trnskmPM_DRV_COM_WLK.omx,waux,PM -DRV_COM_WLK_IWAIT,trnskmPM_DRV_COM_WLK.omx,iwait,PM -DRV_COM_WLK_XWAIT,trnskmPM_DRV_COM_WLK.omx,xwait,PM -DRV_COM_WLK_BOARDS,trnskmPM_DRV_COM_WLK.omx,boards,PM -DRV_EXP_WLK_WAIT,trnskmPM_DRV_EXP_WLK.omx,wait,PM -DRV_EXP_WLK_TOTIVT,trnskmPM_DRV_EXP_WLK.omx,ivt,PM -DRV_EXP_WLK_KEYIVT,trnskmPM_DRV_EXP_WLK.omx,ivtEXP,PM -DRV_EXP_WLK_FAR,trnskmPM_DRV_EXP_WLK.omx,fare,PM -DRV_EXP_WLK_DTIM,trnskmPM_DRV_EXP_WLK.omx,dtime,PM -DRV_EXP_WLK_WAUX,trnskmPM_DRV_EXP_WLK.omx,waux,PM -DRV_EXP_WLK_IWAIT,trnskmPM_DRV_EXP_WLK.omx,iwait,PM -DRV_EXP_WLK_XWAIT,trnskmPM_DRV_EXP_WLK.omx,xwait,PM -DRV_EXP_WLK_BOARDS,trnskmPM_DRV_EXP_WLK.omx,boards,PM -DRV_EXP_WLK_DDIST,trnskmPM_DRV_EXP_WLK.omx,ddist,PM -DRV_HVY_WLK_WAIT,trnskmPM_DRV_HVY_WLK.omx,wait,PM -DRV_HVY_WLK_TOTIVT,trnskmPM_DRV_HVY_WLK.omx,ivt,PM -DRV_HVY_WLK_KEYIVT,trnskmPM_DRV_HVY_WLK.omx,ivtHVY,PM -DRV_HVY_WLK_FAR,trnskmPM_DRV_HVY_WLK.omx,fare,PM -DRV_HVY_WLK_DTIM,trnskmPM_DRV_HVY_WLK.omx,dtime,PM -DRV_HVY_WLK_DDIST,trnskmPM_DRV_HVY_WLK.omx,ddist,PM -DRV_HVY_WLK_WAUX,trnskmPM_DRV_HVY_WLK.omx,waux,PM -DRV_HVY_WLK_IWAIT,trnskmPM_DRV_HVY_WLK.omx,iwait,PM -DRV_HVY_WLK_XWAIT,trnskmPM_DRV_HVY_WLK.omx,xwait,PM -DRV_HVY_WLK_BOARDS,trnskmPM_DRV_HVY_WLK.omx,boards,PM -DRV_LOC_WLK_WAIT,trnskmPM_DRV_LOC_WLK.omx,wait,PM -DRV_LOC_WLK_TOTIVT,trnskmPM_DRV_LOC_WLK.omx,ivt,PM -DRV_LOC_WLK_FAR,trnskmPM_DRV_LOC_WLK.omx,fare,PM -DRV_LOC_WLK_DTIM,trnskmPM_DRV_LOC_WLK.omx,dtime,PM -DRV_LOC_WLK_DDIST,trnskmPM_DRV_LOC_WLK.omx,ddist,PM -DRV_LOC_WLK_WAUX,trnskmPM_DRV_LOC_WLK.omx,waux,PM -DRV_LOC_WLK_IWAIT,trnskmPM_DRV_LOC_WLK.omx,iwait,PM -DRV_LOC_WLK_XWAIT,trnskmPM_DRV_LOC_WLK.omx,xwait,PM -DRV_LOC_WLK_BOARDS,trnskmPM_DRV_LOC_WLK.omx,boards,PM -DRV_LRF_WLK_WAIT,trnskmPM_DRV_LRF_WLK.omx,wait,PM -DRV_LRF_WLK_TOTIVT,trnskmPM_DRV_LRF_WLK.omx,ivt,PM -DRV_LRF_WLK_KEYIVT,trnskmPM_DRV_LRF_WLK.omx,ivtLRF,PM -DRV_LRF_WLK_FERRYIVT,trnskmPM_DRV_LRF_WLK.omx,ivtFerry,PM -DRV_LRF_WLK_FAR,trnskmPM_DRV_LRF_WLK.omx,fare,PM -DRV_LRF_WLK_DTIM,trnskmPM_DRV_LRF_WLK.omx,dtime,PM -DRV_LRF_WLK_DDIST,trnskmPM_DRV_LRF_WLK.omx,ddist,PM -DRV_LRF_WLK_WAUX,trnskmPM_DRV_LRF_WLK.omx,waux,PM -DRV_LRF_WLK_IWAIT,trnskmPM_DRV_LRF_WLK.omx,iwait,PM -DRV_LRF_WLK_XWAIT,trnskmPM_DRV_LRF_WLK.omx,xwait,PM -DRV_LRF_WLK_BOARDS,trnskmPM_DRV_LRF_WLK.omx,boards,PM -WLK_COM_DRV_WAIT,trnskmPM_WLK_COM_DRV.omx,wait,PM -WLK_COM_DRV_TOTIVT,trnskmPM_WLK_COM_DRV.omx,ivt,PM -WLK_COM_DRV_KEYIVT,trnskmPM_WLK_COM_DRV.omx,ivtCOM,PM -WLK_COM_DRV_FAR,trnskmPM_WLK_COM_DRV.omx,fare,PM -WLK_COM_DRV_DTIM,trnskmPM_WLK_COM_DRV.omx,dtime,PM -WLK_COM_DRV_DDIST,trnskmPM_WLK_COM_DRV.omx,ddist,PM -WLK_COM_DRV_WAUX,trnskmPM_WLK_COM_DRV.omx,waux,PM -WLK_COM_DRV_IWAIT,trnskmPM_WLK_COM_DRV.omx,iwait,PM -WLK_COM_DRV_XWAIT,trnskmPM_WLK_COM_DRV.omx,xwait,PM -WLK_COM_DRV_BOARDS,trnskmPM_WLK_COM_DRV.omx,boards,PM -WLK_COM_WLK_WAIT,trnskmPM_WLK_COM_WLK.omx,wait,PM -WLK_COM_WLK_TOTIVT,trnskmPM_WLK_COM_WLK.omx,ivt,PM -WLK_COM_WLK_KEYIVT,trnskmPM_WLK_COM_WLK.omx,ivtCOM,PM -WLK_COM_WLK_FAR,trnskmPM_WLK_COM_WLK.omx,fare,PM -WLK_COM_WLK_WAUX,trnskmPM_WLK_COM_WLK.omx,waux,PM -WLK_COM_WLK_IWAIT,trnskmPM_WLK_COM_WLK.omx,iwait,PM -WLK_COM_WLK_XWAIT,trnskmPM_WLK_COM_WLK.omx,xwait,PM -WLK_COM_WLK_BOARDS,trnskmPM_WLK_COM_WLK.omx,boards,PM -WLK_EXP_DRV_WAIT,trnskmPM_WLK_EXP_DRV.omx,wait,PM -WLK_EXP_DRV_TOTIVT,trnskmPM_WLK_EXP_DRV.omx,ivt,PM -WLK_EXP_DRV_KEYIVT,trnskmPM_WLK_EXP_DRV.omx,ivtEXP,PM -WLK_EXP_DRV_FAR,trnskmPM_WLK_EXP_DRV.omx,fare,PM -WLK_EXP_DRV_DTIM,trnskmPM_WLK_EXP_DRV.omx,dtime,PM -WLK_EXP_DRV_WAUX,trnskmPM_WLK_EXP_DRV.omx,waux,PM -WLK_EXP_DRV_IWAIT,trnskmPM_WLK_EXP_DRV.omx,iwait,PM -WLK_EXP_DRV_XWAIT,trnskmPM_WLK_EXP_DRV.omx,xwait,PM -WLK_EXP_DRV_BOARDS,trnskmPM_WLK_EXP_DRV.omx,boards,PM -WLK_EXP_DRV_DDIST,trnskmPM_WLK_EXP_DRV.omx,ddist,PM -WLK_EXP_WLK_WAIT,trnskmPM_WLK_EXP_WLK.omx,wait,PM -WLK_EXP_WLK_TOTIVT,trnskmPM_WLK_EXP_WLK.omx,ivt,PM -WLK_EXP_WLK_KEYIVT,trnskmPM_WLK_EXP_WLK.omx,ivtEXP,PM -WLK_EXP_WLK_FAR,trnskmPM_WLK_EXP_WLK.omx,fare,PM -WLK_EXP_WLK_WAUX,trnskmPM_WLK_EXP_WLK.omx,waux,PM -WLK_EXP_WLK_IWAIT,trnskmPM_WLK_EXP_WLK.omx,iwait,PM -WLK_EXP_WLK_XWAIT,trnskmPM_WLK_EXP_WLK.omx,xwait,PM -WLK_EXP_WLK_BOARDS,trnskmPM_WLK_EXP_WLK.omx,boards,PM -WLK_HVY_DRV_WAIT,trnskmPM_WLK_HVY_DRV.omx,wait,PM -WLK_HVY_DRV_TOTIVT,trnskmPM_WLK_HVY_DRV.omx,ivt,PM -WLK_HVY_DRV_KEYIVT,trnskmPM_WLK_HVY_DRV.omx,ivtHVY,PM -WLK_HVY_DRV_FAR,trnskmPM_WLK_HVY_DRV.omx,fare,PM -WLK_HVY_DRV_DTIM,trnskmPM_WLK_HVY_DRV.omx,dtime,PM -WLK_HVY_DRV_DDIST,trnskmPM_WLK_HVY_DRV.omx,ddist,PM -WLK_HVY_DRV_WAUX,trnskmPM_WLK_HVY_DRV.omx,waux,PM -WLK_HVY_DRV_IWAIT,trnskmPM_WLK_HVY_DRV.omx,iwait,PM -WLK_HVY_DRV_XWAIT,trnskmPM_WLK_HVY_DRV.omx,xwait,PM -WLK_HVY_DRV_BOARDS,trnskmPM_WLK_HVY_DRV.omx,boards,PM -WLK_HVY_WLK_WAIT,trnskmPM_WLK_HVY_WLK.omx,wait,PM -WLK_HVY_WLK_TOTIVT,trnskmPM_WLK_HVY_WLK.omx,ivt,PM -WLK_HVY_WLK_KEYIVT,trnskmPM_WLK_HVY_WLK.omx,ivtHVY,PM -WLK_HVY_WLK_FAR,trnskmPM_WLK_HVY_WLK.omx,fare,PM -WLK_HVY_WLK_WAUX,trnskmPM_WLK_HVY_WLK.omx,waux,PM -WLK_HVY_WLK_IWAIT,trnskmPM_WLK_HVY_WLK.omx,iwait,PM -WLK_HVY_WLK_XWAIT,trnskmPM_WLK_HVY_WLK.omx,xwait,PM -WLK_HVY_WLK_BOARDS,trnskmPM_WLK_HVY_WLK.omx,boards,PM -WLK_LOC_DRV_WAIT,trnskmPM_WLK_LOC_DRV.omx,wait,PM -WLK_LOC_DRV_TOTIVT,trnskmPM_WLK_LOC_DRV.omx,ivt,PM -WLK_LOC_DRV_FAR,trnskmPM_WLK_LOC_DRV.omx,fare,PM -WLK_LOC_DRV_DTIM,trnskmPM_WLK_LOC_DRV.omx,dtime,PM -WLK_LOC_DRV_DDIST,trnskmPM_WLK_LOC_DRV.omx,ddist,PM -WLK_LOC_DRV_WAUX,trnskmPM_WLK_LOC_DRV.omx,waux,PM -WLK_LOC_DRV_IWAIT,trnskmPM_WLK_LOC_DRV.omx,iwait,PM -WLK_LOC_DRV_XWAIT,trnskmPM_WLK_LOC_DRV.omx,xwait,PM -WLK_LOC_DRV_BOARDS,trnskmPM_WLK_LOC_DRV.omx,boards,PM -WLK_LOC_WLK_WAIT,trnskmPM_WLK_LOC_WLK.omx,wait,PM -WLK_LOC_WLK_TOTIVT,trnskmPM_WLK_LOC_WLK.omx,ivt,PM -WLK_LOC_WLK_FAR,trnskmPM_WLK_LOC_WLK.omx,fare,PM -WLK_LOC_WLK_WAUX,trnskmPM_WLK_LOC_WLK.omx,waux,PM -WLK_LOC_WLK_IWAIT,trnskmPM_WLK_LOC_WLK.omx,iwait,PM -WLK_LOC_WLK_XWAIT,trnskmPM_WLK_LOC_WLK.omx,xwait,PM -WLK_LOC_WLK_BOARDS,trnskmPM_WLK_LOC_WLK.omx,boards,PM -WLK_LRF_DRV_WAIT,trnskmPM_WLK_LRF_DRV.omx,wait,PM -WLK_LRF_DRV_TOTIVT,trnskmPM_WLK_LRF_DRV.omx,ivt,PM -WLK_LRF_DRV_KEYIVT,trnskmPM_WLK_LRF_DRV.omx,ivtLRF,PM -WLK_LRF_DRV_FERRYIVT,trnskmPM_WLK_LRF_DRV.omx,ivtFerry,PM -WLK_LRF_DRV_FAR,trnskmPM_WLK_LRF_DRV.omx,fare,PM -WLK_LRF_DRV_DTIM,trnskmPM_WLK_LRF_DRV.omx,dtime,PM -WLK_LRF_DRV_DDIST,trnskmPM_WLK_LRF_DRV.omx,ddist,PM -WLK_LRF_DRV_WAUX,trnskmPM_WLK_LRF_DRV.omx,waux,PM -WLK_LRF_DRV_IWAIT,trnskmPM_WLK_LRF_DRV.omx,iwait,PM -WLK_LRF_DRV_XWAIT,trnskmPM_WLK_LRF_DRV.omx,xwait,PM -WLK_LRF_DRV_BOARDS,trnskmPM_WLK_LRF_DRV.omx,boards,PM -WLK_LRF_WLK_WAIT,trnskmPM_WLK_LRF_WLK.omx,wait,PM -WLK_LRF_WLK_TOTIVT,trnskmPM_WLK_LRF_WLK.omx,ivt,PM -WLK_LRF_WLK_KEYIVT,trnskmPM_WLK_LRF_WLK.omx,ivtLRF,PM -WLK_LRF_WLK_FERRYIVT,trnskmPM_WLK_LRF_WLK.omx,ivtFerry,PM -WLK_LRF_WLK_FAR,trnskmPM_WLK_LRF_WLK.omx,fare,PM -WLK_LRF_WLK_WAUX,trnskmPM_WLK_LRF_WLK.omx,waux,PM -WLK_LRF_WLK_IWAIT,trnskmPM_WLK_LRF_WLK.omx,iwait,PM -WLK_LRF_WLK_XWAIT,trnskmPM_WLK_LRF_WLK.omx,xwait,PM -WLK_LRF_WLK_BOARDS,trnskmPM_WLK_LRF_WLK.omx,boards,PM -WLK_TRN_WLK_IVT,trnskmAM_wlk_trn_wlk.omx,ivt,AM -WLK_TRN_WLK_IWAIT,trnskmAM_wlk_trn_wlk.omx,iwait,AM -WLK_TRN_WLK_XWAIT,trnskmAM_wlk_trn_wlk.omx,xwait,AM -WLK_TRN_WLK_WACC,trnskmAM_wlk_trn_wlk.omx,wacc,AM -WLK_TRN_WLK_WAUX,trnskmAM_wlk_trn_wlk.omx,waux,AM -WLK_TRN_WLK_WEGR,trnskmAM_wlk_trn_wlk.omx,wegr,AM -WLK_TRN_WLK_IVT,trnskmMD_wlk_trn_wlk.omx,ivt,MD -WLK_TRN_WLK_IWAIT,trnskmMD_wlk_trn_wlk.omx,iwait,MD -WLK_TRN_WLK_XWAIT,trnskmMD_wlk_trn_wlk.omx,xwait,MD -WLK_TRN_WLK_WACC,trnskmMD_wlk_trn_wlk.omx,wacc,MD -WLK_TRN_WLK_WAUX,trnskmMD_wlk_trn_wlk.omx,waux,MD -WLK_TRN_WLK_WEGR,trnskmMD_wlk_trn_wlk.omx,wegr,MD -WLK_TRN_WLK_IVT,trnskmPM_wlk_trn_wlk.omx,ivt,PM -WLK_TRN_WLK_IWAIT,trnskmPM_wlk_trn_wlk.omx,iwait,PM -WLK_TRN_WLK_XWAIT,trnskmPM_wlk_trn_wlk.omx,xwait,PM -WLK_TRN_WLK_WACC,trnskmPM_wlk_trn_wlk.omx,wacc,PM -WLK_TRN_WLK_WAUX,trnskmPM_wlk_trn_wlk.omx,waux,PM -WLK_TRN_WLK_WEGR,trnskmPM_wlk_trn_wlk.omx,wegr,PM +SOV_TIME,hwyskmAM.tpp.omx,TIMEDA,AM +SOV_DIST,hwyskmAM.tpp.omx,DISTDA,AM +SOV_BTOLL,hwyskmAM.tpp.omx,BTOLLDA,AM +HOV2_TIME,hwyskmAM.tpp.omx,TIMES2,AM +HOV2_DIST,hwyskmAM.tpp.omx,DISTS2,AM +HOV2_BTOLL,hwyskmAM.tpp.omx,BTOLLS2,AM +HOV3_TIME,hwyskmAM.tpp.omx,TIMES3,AM +HOV3_DIST,hwyskmAM.tpp.omx,DISTS3,AM +HOV3_BTOLL,hwyskmAM.tpp.omx,BTOLLS3,AM +SOVTOLL_TIME,hwyskmAM.tpp.omx,TOLLTIMEDA,AM +SOVTOLL_DIST,hwyskmAM.tpp.omx,TOLLDISTDA,AM +SOVTOLL_BTOLL,hwyskmAM.tpp.omx,TOLLBTOLLDA,AM +SOVTOLL_VTOLL,hwyskmAM.tpp.omx,TOLLVTOLLDA,AM +HOV2TOLL_TIME,hwyskmAM.tpp.omx,TOLLTIMES2,AM +HOV2TOLL_DIST,hwyskmAM.tpp.omx,TOLLDISTS2,AM +HOV2TOLL_BTOLL,hwyskmAM.tpp.omx,TOLLBTOLLS2,AM +HOV2TOLL_VTOLL,hwyskmAM.tpp.omx,TOLLVTOLLS2,AM +HOV3TOLL_TIME,hwyskmAM.tpp.omx,TOLLTIMES3,AM +HOV3TOLL_DIST,hwyskmAM.tpp.omx,TOLLDISTS3,AM +HOV3TOLL_BTOLL,hwyskmAM.tpp.omx,TOLLBTOLLS3,AM +HOV3TOLL_VTOLL,hwyskmAM.tpp.omx,TOLLVTOLLS3,AM +SOV_TIME,hwyskmEA.tpp.omx,TIMEDA,EA +SOV_DIST,hwyskmEA.tpp.omx,DISTDA,EA +SOV_BTOLL,hwyskmEA.tpp.omx,BTOLLDA,EA +HOV2_TIME,hwyskmEA.tpp.omx,TIMES2,EA +HOV2_DIST,hwyskmEA.tpp.omx,DISTS2,EA +HOV2_BTOLL,hwyskmEA.tpp.omx,BTOLLS2,EA +HOV3_TIME,hwyskmEA.tpp.omx,TIMES3,EA +HOV3_DIST,hwyskmEA.tpp.omx,DISTS3,EA +HOV3_BTOLL,hwyskmEA.tpp.omx,BTOLLS3,EA +SOVTOLL_TIME,hwyskmEA.tpp.omx,TOLLTIMEDA,EA +SOVTOLL_DIST,hwyskmEA.tpp.omx,TOLLDISTDA,EA +SOVTOLL_BTOLL,hwyskmEA.tpp.omx,TOLLBTOLLDA,EA +SOVTOLL_VTOLL,hwyskmEA.tpp.omx,TOLLVTOLLDA,EA +HOV2TOLL_TIME,hwyskmEA.tpp.omx,TOLLTIMES2,EA +HOV2TOLL_DIST,hwyskmEA.tpp.omx,TOLLDISTS2,EA +HOV2TOLL_BTOLL,hwyskmEA.tpp.omx,TOLLBTOLLS2,EA +HOV2TOLL_VTOLL,hwyskmEA.tpp.omx,TOLLVTOLLS2,EA +HOV3TOLL_TIME,hwyskmEA.tpp.omx,TOLLTIMES3,EA +HOV3TOLL_DIST,hwyskmEA.tpp.omx,TOLLDISTS3,EA +HOV3TOLL_BTOLL,hwyskmEA.tpp.omx,TOLLBTOLLS3,EA +HOV3TOLL_VTOLL,hwyskmEA.tpp.omx,TOLLVTOLLS3,EA +SOV_TIME,hwyskmEV.tpp.omx,TIMEDA,EV +SOV_DIST,hwyskmEV.tpp.omx,DISTDA,EV +SOV_BTOLL,hwyskmEV.tpp.omx,BTOLLDA,EV +HOV2_TIME,hwyskmEV.tpp.omx,TIMES2,EV +HOV2_DIST,hwyskmEV.tpp.omx,DISTS2,EV +HOV2_BTOLL,hwyskmEV.tpp.omx,BTOLLS2,EV +HOV3_TIME,hwyskmEV.tpp.omx,TIMES3,EV +HOV3_DIST,hwyskmEV.tpp.omx,DISTS3,EV +HOV3_BTOLL,hwyskmEV.tpp.omx,BTOLLS3,EV +SOVTOLL_TIME,hwyskmEV.tpp.omx,TOLLTIMEDA,EV +SOVTOLL_DIST,hwyskmEV.tpp.omx,TOLLDISTDA,EV +SOVTOLL_BTOLL,hwyskmEV.tpp.omx,TOLLBTOLLDA,EV +SOVTOLL_VTOLL,hwyskmEV.tpp.omx,TOLLVTOLLDA,EV +HOV2TOLL_TIME,hwyskmEV.tpp.omx,TOLLTIMES2,EV +HOV2TOLL_DIST,hwyskmEV.tpp.omx,TOLLDISTS2,EV +HOV2TOLL_BTOLL,hwyskmEV.tpp.omx,TOLLBTOLLS2,EV +HOV2TOLL_VTOLL,hwyskmEV.tpp.omx,TOLLVTOLLS2,EV +HOV3TOLL_TIME,hwyskmEV.tpp.omx,TOLLTIMES3,EV +HOV3TOLL_DIST,hwyskmEV.tpp.omx,TOLLDISTS3,EV +HOV3TOLL_BTOLL,hwyskmEV.tpp.omx,TOLLBTOLLS3,EV +HOV3TOLL_VTOLL,hwyskmEV.tpp.omx,TOLLVTOLLS3,EV +SOV_TIME,hwyskmMD.tpp.omx,TIMEDA,MD +SOV_DIST,hwyskmMD.tpp.omx,DISTDA,MD +SOV_BTOLL,hwyskmMD.tpp.omx,BTOLLDA,MD +HOV2_TIME,hwyskmMD.tpp.omx,TIMES2,MD +HOV2_DIST,hwyskmMD.tpp.omx,DISTS2,MD +HOV2_BTOLL,hwyskmMD.tpp.omx,BTOLLS2,MD +HOV3_TIME,hwyskmMD.tpp.omx,TIMES3,MD +HOV3_DIST,hwyskmMD.tpp.omx,DISTS3,MD +HOV3_BTOLL,hwyskmMD.tpp.omx,BTOLLS3,MD +SOVTOLL_TIME,hwyskmMD.tpp.omx,TOLLTIMEDA,MD +SOVTOLL_DIST,hwyskmMD.tpp.omx,TOLLDISTDA,MD +SOVTOLL_BTOLL,hwyskmMD.tpp.omx,TOLLBTOLLDA,MD +SOVTOLL_VTOLL,hwyskmMD.tpp.omx,TOLLVTOLLDA,MD +HOV2TOLL_TIME,hwyskmMD.tpp.omx,TOLLTIMES2,MD +HOV2TOLL_DIST,hwyskmMD.tpp.omx,TOLLDISTS2,MD +HOV2TOLL_BTOLL,hwyskmMD.tpp.omx,TOLLBTOLLS2,MD +HOV2TOLL_VTOLL,hwyskmMD.tpp.omx,TOLLVTOLLS2,MD +HOV3TOLL_TIME,hwyskmMD.tpp.omx,TOLLTIMES3,MD +HOV3TOLL_DIST,hwyskmMD.tpp.omx,TOLLDISTS3,MD +HOV3TOLL_BTOLL,hwyskmMD.tpp.omx,TOLLBTOLLS3,MD +HOV3TOLL_VTOLL,hwyskmMD.tpp.omx,TOLLVTOLLS3,MD +SOV_TIME,hwyskmPM.tpp.omx,TIMEDA,PM +SOV_DIST,hwyskmPM.tpp.omx,DISTDA,PM +SOV_BTOLL,hwyskmPM.tpp.omx,BTOLLDA,PM +HOV2_TIME,hwyskmPM.tpp.omx,TIMES2,PM +HOV2_DIST,hwyskmPM.tpp.omx,DISTS2,PM +HOV2_BTOLL,hwyskmPM.tpp.omx,BTOLLS2,PM +HOV3_TIME,hwyskmPM.tpp.omx,TIMES3,PM +HOV3_DIST,hwyskmPM.tpp.omx,DISTS3,PM +HOV3_BTOLL,hwyskmPM.tpp.omx,BTOLLS3,PM +SOVTOLL_TIME,hwyskmPM.tpp.omx,TOLLTIMEDA,PM +SOVTOLL_DIST,hwyskmPM.tpp.omx,TOLLDISTDA,PM +SOVTOLL_BTOLL,hwyskmPM.tpp.omx,TOLLBTOLLDA,PM +SOVTOLL_VTOLL,hwyskmPM.tpp.omx,TOLLVTOLLDA,PM +HOV2TOLL_TIME,hwyskmPM.tpp.omx,TOLLTIMES2,PM +HOV2TOLL_DIST,hwyskmPM.tpp.omx,TOLLDISTS2,PM +HOV2TOLL_BTOLL,hwyskmPM.tpp.omx,TOLLBTOLLS2,PM +HOV2TOLL_VTOLL,hwyskmPM.tpp.omx,TOLLVTOLLS2,PM +HOV3TOLL_TIME,hwyskmPM.tpp.omx,TOLLTIMES3,PM +HOV3TOLL_DIST,hwyskmPM.tpp.omx,TOLLDISTS3,PM +HOV3TOLL_BTOLL,hwyskmPM.tpp.omx,TOLLBTOLLS3,PM +HOV3TOLL_VTOLL,hwyskmPM.tpp.omx,TOLLVTOLLS3,PM +DIST,nonmotskm.tpp.omx,DIST, +DISTWALK,nonmotskm.tpp.omx,DISTWALK, +DISTBIKE,nonmotskm.tpp.omx,DISTBIKE, +DRV_COM_WLK_WAIT,trnskmAM_DRV_COM_WLK.tpp.omx,wait,AM +DRV_COM_WLK_TOTIVT,trnskmAM_DRV_COM_WLK.tpp.omx,ivt,AM +DRV_COM_WLK_KEYIVT,trnskmAM_DRV_COM_WLK.tpp.omx,ivtCOM,AM +DRV_COM_WLK_FAR,trnskmAM_DRV_COM_WLK.tpp.omx,fare,AM +DRV_COM_WLK_DTIM,trnskmAM_DRV_COM_WLK.tpp.omx,dtime,AM +DRV_COM_WLK_DDIST,trnskmAM_DRV_COM_WLK.tpp.omx,ddist,AM +DRV_COM_WLK_WAUX,trnskmAM_DRV_COM_WLK.tpp.omx,waux,AM +DRV_COM_WLK_IWAIT,trnskmAM_DRV_COM_WLK.tpp.omx,iwait,AM +DRV_COM_WLK_XWAIT,trnskmAM_DRV_COM_WLK.tpp.omx,xwait,AM +DRV_COM_WLK_BOARDS,trnskmAM_DRV_COM_WLK.tpp.omx,boards,AM +DRV_EXP_WLK_WAIT,trnskmAM_DRV_EXP_WLK.tpp.omx,wait,AM +DRV_EXP_WLK_TOTIVT,trnskmAM_DRV_EXP_WLK.tpp.omx,ivt,AM +DRV_EXP_WLK_KEYIVT,trnskmAM_DRV_EXP_WLK.tpp.omx,ivtEXP,AM +DRV_EXP_WLK_FAR,trnskmAM_DRV_EXP_WLK.tpp.omx,fare,AM +DRV_EXP_WLK_DTIM,trnskmAM_DRV_EXP_WLK.tpp.omx,dtime,AM +DRV_EXP_WLK_WAUX,trnskmAM_DRV_EXP_WLK.tpp.omx,waux,AM +DRV_EXP_WLK_IWAIT,trnskmAM_DRV_EXP_WLK.tpp.omx,iwait,AM +DRV_EXP_WLK_XWAIT,trnskmAM_DRV_EXP_WLK.tpp.omx,xwait,AM +DRV_EXP_WLK_BOARDS,trnskmAM_DRV_EXP_WLK.tpp.omx,boards,AM +DRV_EXP_WLK_DDIST,trnskmAM_DRV_EXP_WLK.tpp.omx,ddist,AM +DRV_HVY_WLK_WAIT,trnskmAM_DRV_HVY_WLK.tpp.omx,wait,AM +DRV_HVY_WLK_TOTIVT,trnskmAM_DRV_HVY_WLK.tpp.omx,ivt,AM +DRV_HVY_WLK_KEYIVT,trnskmAM_DRV_HVY_WLK.tpp.omx,ivtHVY,AM +DRV_HVY_WLK_FAR,trnskmAM_DRV_HVY_WLK.tpp.omx,fare,AM +DRV_HVY_WLK_DTIM,trnskmAM_DRV_HVY_WLK.tpp.omx,dtime,AM +DRV_HVY_WLK_DDIST,trnskmAM_DRV_HVY_WLK.tpp.omx,ddist,AM +DRV_HVY_WLK_WAUX,trnskmAM_DRV_HVY_WLK.tpp.omx,waux,AM +DRV_HVY_WLK_IWAIT,trnskmAM_DRV_HVY_WLK.tpp.omx,iwait,AM +DRV_HVY_WLK_XWAIT,trnskmAM_DRV_HVY_WLK.tpp.omx,xwait,AM +DRV_HVY_WLK_BOARDS,trnskmAM_DRV_HVY_WLK.tpp.omx,boards,AM +DRV_LOC_WLK_WAIT,trnskmAM_DRV_LOC_WLK.tpp.omx,wait,AM +DRV_LOC_WLK_TOTIVT,trnskmAM_DRV_LOC_WLK.tpp.omx,ivt,AM +DRV_LOC_WLK_FAR,trnskmAM_DRV_LOC_WLK.tpp.omx,fare,AM +DRV_LOC_WLK_DTIM,trnskmAM_DRV_LOC_WLK.tpp.omx,dtime,AM +DRV_LOC_WLK_DDIST,trnskmAM_DRV_LOC_WLK.tpp.omx,ddist,AM +DRV_LOC_WLK_WAUX,trnskmAM_DRV_LOC_WLK.tpp.omx,waux,AM +DRV_LOC_WLK_IWAIT,trnskmAM_DRV_LOC_WLK.tpp.omx,iwait,AM +DRV_LOC_WLK_XWAIT,trnskmAM_DRV_LOC_WLK.tpp.omx,xwait,AM +DRV_LOC_WLK_BOARDS,trnskmAM_DRV_LOC_WLK.tpp.omx,boards,AM +DRV_LRF_WLK_WAIT,trnskmAM_DRV_LRF_WLK.tpp.omx,wait,AM +DRV_LRF_WLK_TOTIVT,trnskmAM_DRV_LRF_WLK.tpp.omx,ivt,AM +DRV_LRF_WLK_KEYIVT,trnskmAM_DRV_LRF_WLK.tpp.omx,ivtLRF,AM +DRV_LRF_WLK_FERRYIVT,trnskmAM_DRV_LRF_WLK.tpp.omx,ivtFerry,AM +DRV_LRF_WLK_FAR,trnskmAM_DRV_LRF_WLK.tpp.omx,fare,AM +DRV_LRF_WLK_DTIM,trnskmAM_DRV_LRF_WLK.tpp.omx,dtime,AM +DRV_LRF_WLK_DDIST,trnskmAM_DRV_LRF_WLK.tpp.omx,ddist,AM +DRV_LRF_WLK_WAUX,trnskmAM_DRV_LRF_WLK.tpp.omx,waux,AM +DRV_LRF_WLK_IWAIT,trnskmAM_DRV_LRF_WLK.tpp.omx,iwait,AM +DRV_LRF_WLK_XWAIT,trnskmAM_DRV_LRF_WLK.tpp.omx,xwait,AM +DRV_LRF_WLK_BOARDS,trnskmAM_DRV_LRF_WLK.tpp.omx,boards,AM +WLK_COM_DRV_WAIT,trnskmAM_WLK_COM_DRV.tpp.omx,wait,AM +WLK_COM_DRV_TOTIVT,trnskmAM_WLK_COM_DRV.tpp.omx,ivt,AM +WLK_COM_DRV_KEYIVT,trnskmAM_WLK_COM_DRV.tpp.omx,ivtCOM,AM +WLK_COM_DRV_FAR,trnskmAM_WLK_COM_DRV.tpp.omx,fare,AM +WLK_COM_DRV_DTIM,trnskmAM_WLK_COM_DRV.tpp.omx,dtime,AM +WLK_COM_DRV_DDIST,trnskmAM_WLK_COM_DRV.tpp.omx,ddist,AM +WLK_COM_DRV_WAUX,trnskmAM_WLK_COM_DRV.tpp.omx,waux,AM +WLK_COM_DRV_IWAIT,trnskmAM_WLK_COM_DRV.tpp.omx,iwait,AM +WLK_COM_DRV_XWAIT,trnskmAM_WLK_COM_DRV.tpp.omx,xwait,AM +WLK_COM_DRV_BOARDS,trnskmAM_WLK_COM_DRV.tpp.omx,boards,AM +WLK_COM_WLK_WAIT,trnskmAM_WLK_COM_WLK.tpp.omx,wait,AM +WLK_COM_WLK_TOTIVT,trnskmAM_WLK_COM_WLK.tpp.omx,ivt,AM +WLK_COM_WLK_KEYIVT,trnskmAM_WLK_COM_WLK.tpp.omx,ivtCOM,AM +WLK_COM_WLK_FAR,trnskmAM_WLK_COM_WLK.tpp.omx,fare,AM +WLK_COM_WLK_WAUX,trnskmAM_WLK_COM_WLK.tpp.omx,waux,AM +WLK_COM_WLK_IWAIT,trnskmAM_WLK_COM_WLK.tpp.omx,iwait,AM +WLK_COM_WLK_XWAIT,trnskmAM_WLK_COM_WLK.tpp.omx,xwait,AM +WLK_COM_WLK_BOARDS,trnskmAM_WLK_COM_WLK.tpp.omx,boards,AM +WLK_EXP_DRV_WAIT,trnskmAM_WLK_EXP_DRV.tpp.omx,wait,AM +WLK_EXP_DRV_TOTIVT,trnskmAM_WLK_EXP_DRV.tpp.omx,ivt,AM +WLK_EXP_DRV_KEYIVT,trnskmAM_WLK_EXP_DRV.tpp.omx,ivtEXP,AM +WLK_EXP_DRV_FAR,trnskmAM_WLK_EXP_DRV.tpp.omx,fare,AM +WLK_EXP_DRV_DTIM,trnskmAM_WLK_EXP_DRV.tpp.omx,dtime,AM +WLK_EXP_DRV_WAUX,trnskmAM_WLK_EXP_DRV.tpp.omx,waux,AM +WLK_EXP_DRV_IWAIT,trnskmAM_WLK_EXP_DRV.tpp.omx,iwait,AM +WLK_EXP_DRV_XWAIT,trnskmAM_WLK_EXP_DRV.tpp.omx,xwait,AM +WLK_EXP_DRV_BOARDS,trnskmAM_WLK_EXP_DRV.tpp.omx,boards,AM +WLK_EXP_DRV_DDIST,trnskmAM_WLK_EXP_DRV.tpp.omx,ddist,AM +WLK_EXP_WLK_WAIT,trnskmAM_WLK_EXP_WLK.tpp.omx,wait,AM +WLK_EXP_WLK_TOTIVT,trnskmAM_WLK_EXP_WLK.tpp.omx,ivt,AM +WLK_EXP_WLK_KEYIVT,trnskmAM_WLK_EXP_WLK.tpp.omx,ivtEXP,AM +WLK_EXP_WLK_FAR,trnskmAM_WLK_EXP_WLK.tpp.omx,fare,AM +WLK_EXP_WLK_WAUX,trnskmAM_WLK_EXP_WLK.tpp.omx,waux,AM +WLK_EXP_WLK_IWAIT,trnskmAM_WLK_EXP_WLK.tpp.omx,iwait,AM +WLK_EXP_WLK_XWAIT,trnskmAM_WLK_EXP_WLK.tpp.omx,xwait,AM +WLK_EXP_WLK_BOARDS,trnskmAM_WLK_EXP_WLK.tpp.omx,boards,AM +WLK_HVY_DRV_WAIT,trnskmAM_WLK_HVY_DRV.tpp.omx,wait,AM +WLK_HVY_DRV_TOTIVT,trnskmAM_WLK_HVY_DRV.tpp.omx,ivt,AM +WLK_HVY_DRV_KEYIVT,trnskmAM_WLK_HVY_DRV.tpp.omx,ivtHVY,AM +WLK_HVY_DRV_FAR,trnskmAM_WLK_HVY_DRV.tpp.omx,fare,AM +WLK_HVY_DRV_DTIM,trnskmAM_WLK_HVY_DRV.tpp.omx,dtime,AM +WLK_HVY_DRV_DDIST,trnskmAM_WLK_HVY_DRV.tpp.omx,ddist,AM +WLK_HVY_DRV_WAUX,trnskmAM_WLK_HVY_DRV.tpp.omx,waux,AM +WLK_HVY_DRV_IWAIT,trnskmAM_WLK_HVY_DRV.tpp.omx,iwait,AM +WLK_HVY_DRV_XWAIT,trnskmAM_WLK_HVY_DRV.tpp.omx,xwait,AM +WLK_HVY_DRV_BOARDS,trnskmAM_WLK_HVY_DRV.tpp.omx,boards,AM +WLK_HVY_WLK_WAIT,trnskmAM_WLK_HVY_WLK.tpp.omx,wait,AM +WLK_HVY_WLK_TOTIVT,trnskmAM_WLK_HVY_WLK.tpp.omx,ivt,AM +WLK_HVY_WLK_KEYIVT,trnskmAM_WLK_HVY_WLK.tpp.omx,ivtHVY,AM +WLK_HVY_WLK_FAR,trnskmAM_WLK_HVY_WLK.tpp.omx,fare,AM +WLK_HVY_WLK_WAUX,trnskmAM_WLK_HVY_WLK.tpp.omx,waux,AM +WLK_HVY_WLK_IWAIT,trnskmAM_WLK_HVY_WLK.tpp.omx,iwait,AM +WLK_HVY_WLK_XWAIT,trnskmAM_WLK_HVY_WLK.tpp.omx,xwait,AM +WLK_HVY_WLK_BOARDS,trnskmAM_WLK_HVY_WLK.tpp.omx,boards,AM +WLK_LOC_DRV_WAIT,trnskmAM_WLK_LOC_DRV.tpp.omx,wait,AM +WLK_LOC_DRV_TOTIVT,trnskmAM_WLK_LOC_DRV.tpp.omx,ivt,AM +WLK_LOC_DRV_FAR,trnskmAM_WLK_LOC_DRV.tpp.omx,fare,AM +WLK_LOC_DRV_DTIM,trnskmAM_WLK_LOC_DRV.tpp.omx,dtime,AM +WLK_LOC_DRV_DDIST,trnskmAM_WLK_LOC_DRV.tpp.omx,ddist,AM +WLK_LOC_DRV_WAUX,trnskmAM_WLK_LOC_DRV.tpp.omx,waux,AM +WLK_LOC_DRV_IWAIT,trnskmAM_WLK_LOC_DRV.tpp.omx,iwait,AM +WLK_LOC_DRV_XWAIT,trnskmAM_WLK_LOC_DRV.tpp.omx,xwait,AM +WLK_LOC_DRV_BOARDS,trnskmAM_WLK_LOC_DRV.tpp.omx,boards,AM +WLK_LOC_WLK_WAIT,trnskmAM_WLK_LOC_WLK.tpp.omx,wait,AM +WLK_LOC_WLK_TOTIVT,trnskmAM_WLK_LOC_WLK.tpp.omx,ivt,AM +WLK_LOC_WLK_FAR,trnskmAM_WLK_LOC_WLK.tpp.omx,fare,AM +WLK_LOC_WLK_WAUX,trnskmAM_WLK_LOC_WLK.tpp.omx,waux,AM +WLK_LOC_WLK_IWAIT,trnskmAM_WLK_LOC_WLK.tpp.omx,iwait,AM +WLK_LOC_WLK_XWAIT,trnskmAM_WLK_LOC_WLK.tpp.omx,xwait,AM +WLK_LOC_WLK_BOARDS,trnskmAM_WLK_LOC_WLK.tpp.omx,boards,AM +WLK_LRF_DRV_WAIT,trnskmAM_WLK_LRF_DRV.tpp.omx,wait,AM +WLK_LRF_DRV_TOTIVT,trnskmAM_WLK_LRF_DRV.tpp.omx,ivt,AM +WLK_LRF_DRV_KEYIVT,trnskmAM_WLK_LRF_DRV.tpp.omx,ivtLRF,AM +WLK_LRF_DRV_FERRYIVT,trnskmAM_WLK_LRF_DRV.tpp.omx,ivtFerry,AM +WLK_LRF_DRV_FAR,trnskmAM_WLK_LRF_DRV.tpp.omx,fare,AM +WLK_LRF_DRV_DTIM,trnskmAM_WLK_LRF_DRV.tpp.omx,dtime,AM +WLK_LRF_DRV_DDIST,trnskmAM_WLK_LRF_DRV.tpp.omx,ddist,AM +WLK_LRF_DRV_WAUX,trnskmAM_WLK_LRF_DRV.tpp.omx,waux,AM +WLK_LRF_DRV_IWAIT,trnskmAM_WLK_LRF_DRV.tpp.omx,iwait,AM +WLK_LRF_DRV_XWAIT,trnskmAM_WLK_LRF_DRV.tpp.omx,xwait,AM +WLK_LRF_DRV_BOARDS,trnskmAM_WLK_LRF_DRV.tpp.omx,boards,AM +WLK_LRF_WLK_WAIT,trnskmAM_WLK_LRF_WLK.tpp.omx,wait,AM +WLK_LRF_WLK_TOTIVT,trnskmAM_WLK_LRF_WLK.tpp.omx,ivt,AM +WLK_LRF_WLK_KEYIVT,trnskmAM_WLK_LRF_WLK.tpp.omx,ivtLRF,AM +WLK_LRF_WLK_FERRYIVT,trnskmAM_WLK_LRF_WLK.tpp.omx,ivtFerry,AM +WLK_LRF_WLK_FAR,trnskmAM_WLK_LRF_WLK.tpp.omx,fare,AM +WLK_LRF_WLK_WAUX,trnskmAM_WLK_LRF_WLK.tpp.omx,waux,AM +WLK_LRF_WLK_IWAIT,trnskmAM_WLK_LRF_WLK.tpp.omx,iwait,AM +WLK_LRF_WLK_XWAIT,trnskmAM_WLK_LRF_WLK.tpp.omx,xwait,AM +WLK_LRF_WLK_BOARDS,trnskmAM_WLK_LRF_WLK.tpp.omx,boards,AM +DRV_COM_WLK_WAIT,trnskmEA_DRV_COM_WLK.tpp.omx,wait,EA +DRV_COM_WLK_TOTIVT,trnskmEA_DRV_COM_WLK.tpp.omx,ivt,EA +DRV_COM_WLK_KEYIVT,trnskmEA_DRV_COM_WLK.tpp.omx,ivtCOM,EA +DRV_COM_WLK_FAR,trnskmEA_DRV_COM_WLK.tpp.omx,fare,EA +DRV_COM_WLK_DTIM,trnskmEA_DRV_COM_WLK.tpp.omx,dtime,EA +DRV_COM_WLK_DDIST,trnskmEA_DRV_COM_WLK.tpp.omx,ddist,EA +DRV_COM_WLK_WAUX,trnskmEA_DRV_COM_WLK.tpp.omx,waux,EA +DRV_COM_WLK_IWAIT,trnskmEA_DRV_COM_WLK.tpp.omx,iwait,EA +DRV_COM_WLK_XWAIT,trnskmEA_DRV_COM_WLK.tpp.omx,xwait,EA +DRV_COM_WLK_BOARDS,trnskmEA_DRV_COM_WLK.tpp.omx,boards,EA +DRV_EXP_WLK_WAIT,trnskmEA_DRV_EXP_WLK.tpp.omx,wait,EA +DRV_EXP_WLK_TOTIVT,trnskmEA_DRV_EXP_WLK.tpp.omx,ivt,EA +DRV_EXP_WLK_KEYIVT,trnskmEA_DRV_EXP_WLK.tpp.omx,ivtEXP,EA +DRV_EXP_WLK_FAR,trnskmEA_DRV_EXP_WLK.tpp.omx,fare,EA +DRV_EXP_WLK_DTIM,trnskmEA_DRV_EXP_WLK.tpp.omx,dtime,EA +DRV_EXP_WLK_WAUX,trnskmEA_DRV_EXP_WLK.tpp.omx,waux,EA +DRV_EXP_WLK_IWAIT,trnskmEA_DRV_EXP_WLK.tpp.omx,iwait,EA +DRV_EXP_WLK_XWAIT,trnskmEA_DRV_EXP_WLK.tpp.omx,xwait,EA +DRV_EXP_WLK_BOARDS,trnskmEA_DRV_EXP_WLK.tpp.omx,boards,EA +DRV_EXP_WLK_DDIST,trnskmEA_DRV_EXP_WLK.tpp.omx,ddist,EA +DRV_HVY_WLK_WAIT,trnskmEA_DRV_HVY_WLK.tpp.omx,wait,EA +DRV_HVY_WLK_TOTIVT,trnskmEA_DRV_HVY_WLK.tpp.omx,ivt,EA +DRV_HVY_WLK_KEYIVT,trnskmEA_DRV_HVY_WLK.tpp.omx,ivtHVY,EA +DRV_HVY_WLK_FAR,trnskmEA_DRV_HVY_WLK.tpp.omx,fare,EA +DRV_HVY_WLK_DTIM,trnskmEA_DRV_HVY_WLK.tpp.omx,dtime,EA +DRV_HVY_WLK_DDIST,trnskmEA_DRV_HVY_WLK.tpp.omx,ddist,EA +DRV_HVY_WLK_WAUX,trnskmEA_DRV_HVY_WLK.tpp.omx,waux,EA +DRV_HVY_WLK_IWAIT,trnskmEA_DRV_HVY_WLK.tpp.omx,iwait,EA +DRV_HVY_WLK_XWAIT,trnskmEA_DRV_HVY_WLK.tpp.omx,xwait,EA +DRV_HVY_WLK_BOARDS,trnskmEA_DRV_HVY_WLK.tpp.omx,boards,EA +DRV_LOC_WLK_WAIT,trnskmEA_DRV_LOC_WLK.tpp.omx,wait,EA +DRV_LOC_WLK_TOTIVT,trnskmEA_DRV_LOC_WLK.tpp.omx,ivt,EA +DRV_LOC_WLK_FAR,trnskmEA_DRV_LOC_WLK.tpp.omx,fare,EA +DRV_LOC_WLK_DTIM,trnskmEA_DRV_LOC_WLK.tpp.omx,dtime,EA +DRV_LOC_WLK_DDIST,trnskmEA_DRV_LOC_WLK.tpp.omx,ddist,EA +DRV_LOC_WLK_WAUX,trnskmEA_DRV_LOC_WLK.tpp.omx,waux,EA +DRV_LOC_WLK_IWAIT,trnskmEA_DRV_LOC_WLK.tpp.omx,iwait,EA +DRV_LOC_WLK_XWAIT,trnskmEA_DRV_LOC_WLK.tpp.omx,xwait,EA +DRV_LOC_WLK_BOARDS,trnskmEA_DRV_LOC_WLK.tpp.omx,boards,EA +DRV_LRF_WLK_WAIT,trnskmEA_DRV_LRF_WLK.tpp.omx,wait,EA +DRV_LRF_WLK_TOTIVT,trnskmEA_DRV_LRF_WLK.tpp.omx,ivt,EA +DRV_LRF_WLK_KEYIVT,trnskmEA_DRV_LRF_WLK.tpp.omx,ivtLRF,EA +DRV_LRF_WLK_FERRYIVT,trnskmEA_DRV_LRF_WLK.tpp.omx,ivtFerry,EA +DRV_LRF_WLK_FAR,trnskmEA_DRV_LRF_WLK.tpp.omx,fare,EA +DRV_LRF_WLK_DTIM,trnskmEA_DRV_LRF_WLK.tpp.omx,dtime,EA +DRV_LRF_WLK_DDIST,trnskmEA_DRV_LRF_WLK.tpp.omx,ddist,EA +DRV_LRF_WLK_WAUX,trnskmEA_DRV_LRF_WLK.tpp.omx,waux,EA +DRV_LRF_WLK_IWAIT,trnskmEA_DRV_LRF_WLK.tpp.omx,iwait,EA +DRV_LRF_WLK_XWAIT,trnskmEA_DRV_LRF_WLK.tpp.omx,xwait,EA +DRV_LRF_WLK_BOARDS,trnskmEA_DRV_LRF_WLK.tpp.omx,boards,EA +WLK_COM_DRV_WAIT,trnskmEA_WLK_COM_DRV.tpp.omx,wait,EA +WLK_COM_DRV_TOTIVT,trnskmEA_WLK_COM_DRV.tpp.omx,ivt,EA +WLK_COM_DRV_KEYIVT,trnskmEA_WLK_COM_DRV.tpp.omx,ivtCOM,EA +WLK_COM_DRV_FAR,trnskmEA_WLK_COM_DRV.tpp.omx,fare,EA +WLK_COM_DRV_DTIM,trnskmEA_WLK_COM_DRV.tpp.omx,dtime,EA +WLK_COM_DRV_DDIST,trnskmEA_WLK_COM_DRV.tpp.omx,ddist,EA +WLK_COM_DRV_WAUX,trnskmEA_WLK_COM_DRV.tpp.omx,waux,EA +WLK_COM_DRV_IWAIT,trnskmEA_WLK_COM_DRV.tpp.omx,iwait,EA +WLK_COM_DRV_XWAIT,trnskmEA_WLK_COM_DRV.tpp.omx,xwait,EA +WLK_COM_DRV_BOARDS,trnskmEA_WLK_COM_DRV.tpp.omx,boards,EA +WLK_COM_WLK_WAIT,trnskmEA_WLK_COM_WLK.tpp.omx,wait,EA +WLK_COM_WLK_TOTIVT,trnskmEA_WLK_COM_WLK.tpp.omx,ivt,EA +WLK_COM_WLK_KEYIVT,trnskmEA_WLK_COM_WLK.tpp.omx,ivtCOM,EA +WLK_COM_WLK_FAR,trnskmEA_WLK_COM_WLK.tpp.omx,fare,EA +WLK_COM_WLK_WAUX,trnskmEA_WLK_COM_WLK.tpp.omx,waux,EA +WLK_COM_WLK_IWAIT,trnskmEA_WLK_COM_WLK.tpp.omx,iwait,EA +WLK_COM_WLK_XWAIT,trnskmEA_WLK_COM_WLK.tpp.omx,xwait,EA +WLK_COM_WLK_BOARDS,trnskmEA_WLK_COM_WLK.tpp.omx,boards,EA +WLK_EXP_DRV_WAIT,trnskmEA_WLK_EXP_DRV.tpp.omx,wait,EA +WLK_EXP_DRV_TOTIVT,trnskmEA_WLK_EXP_DRV.tpp.omx,ivt,EA +WLK_EXP_DRV_KEYIVT,trnskmEA_WLK_EXP_DRV.tpp.omx,ivtEXP,EA +WLK_EXP_DRV_FAR,trnskmEA_WLK_EXP_DRV.tpp.omx,fare,EA +WLK_EXP_DRV_DTIM,trnskmEA_WLK_EXP_DRV.tpp.omx,dtime,EA +WLK_EXP_DRV_DDIST,trnskmEA_WLK_EXP_DRV.tpp.omx,ddist,EA +WLK_EXP_DRV_WAUX,trnskmEA_WLK_EXP_DRV.tpp.omx,waux,EA +WLK_EXP_DRV_IWAIT,trnskmEA_WLK_EXP_DRV.tpp.omx,iwait,EA +WLK_EXP_DRV_XWAIT,trnskmEA_WLK_EXP_DRV.tpp.omx,xwait,EA +WLK_EXP_DRV_BOARDS,trnskmEA_WLK_EXP_DRV.tpp.omx,boards,EA +WLK_EXP_WLK_WAIT,trnskmEA_WLK_EXP_WLK.tpp.omx,wait,EA +WLK_EXP_WLK_TOTIVT,trnskmEA_WLK_EXP_WLK.tpp.omx,ivt,EA +WLK_EXP_WLK_KEYIVT,trnskmEA_WLK_EXP_WLK.tpp.omx,ivtEXP,EA +WLK_EXP_WLK_FAR,trnskmEA_WLK_EXP_WLK.tpp.omx,fare,EA +WLK_EXP_WLK_WAUX,trnskmEA_WLK_EXP_WLK.tpp.omx,waux,EA +WLK_EXP_WLK_IWAIT,trnskmEA_WLK_EXP_WLK.tpp.omx,iwait,EA +WLK_EXP_WLK_XWAIT,trnskmEA_WLK_EXP_WLK.tpp.omx,xwait,EA +WLK_EXP_WLK_BOARDS,trnskmEA_WLK_EXP_WLK.tpp.omx,boards,EA +WLK_HVY_DRV_WAIT,trnskmEA_WLK_HVY_DRV.tpp.omx,wait,EA +WLK_HVY_DRV_TOTIVT,trnskmEA_WLK_HVY_DRV.tpp.omx,ivt,EA +WLK_HVY_DRV_KEYIVT,trnskmEA_WLK_HVY_DRV.tpp.omx,ivtHVY,EA +WLK_HVY_DRV_FAR,trnskmEA_WLK_HVY_DRV.tpp.omx,fare,EA +WLK_HVY_DRV_DTIM,trnskmEA_WLK_HVY_DRV.tpp.omx,dtime,EA +WLK_HVY_DRV_DDIST,trnskmEA_WLK_HVY_DRV.tpp.omx,ddist,EA +WLK_HVY_DRV_WAUX,trnskmEA_WLK_HVY_DRV.tpp.omx,waux,EA +WLK_HVY_DRV_IWAIT,trnskmEA_WLK_HVY_DRV.tpp.omx,iwait,EA +WLK_HVY_DRV_XWAIT,trnskmEA_WLK_HVY_DRV.tpp.omx,xwait,EA +WLK_HVY_DRV_BOARDS,trnskmEA_WLK_HVY_DRV.tpp.omx,boards,EA +WLK_HVY_WLK_WAIT,trnskmEA_WLK_HVY_WLK.tpp.omx,wait,EA +WLK_HVY_WLK_TOTIVT,trnskmEA_WLK_HVY_WLK.tpp.omx,ivt,EA +WLK_HVY_WLK_KEYIVT,trnskmEA_WLK_HVY_WLK.tpp.omx,ivtHVY,EA +WLK_HVY_WLK_FAR,trnskmEA_WLK_HVY_WLK.tpp.omx,fare,EA +WLK_HVY_WLK_WAUX,trnskmEA_WLK_HVY_WLK.tpp.omx,waux,EA +WLK_HVY_WLK_IWAIT,trnskmEA_WLK_HVY_WLK.tpp.omx,iwait,EA +WLK_HVY_WLK_XWAIT,trnskmEA_WLK_HVY_WLK.tpp.omx,xwait,EA +WLK_HVY_WLK_BOARDS,trnskmEA_WLK_HVY_WLK.tpp.omx,boards,EA +WLK_LOC_DRV_WAIT,trnskmEA_WLK_LOC_DRV.tpp.omx,wait,EA +WLK_LOC_DRV_TOTIVT,trnskmEA_WLK_LOC_DRV.tpp.omx,ivt,EA +WLK_LOC_DRV_FAR,trnskmEA_WLK_LOC_DRV.tpp.omx,fare,EA +WLK_LOC_DRV_DTIM,trnskmEA_WLK_LOC_DRV.tpp.omx,dtime,EA +WLK_LOC_DRV_DDIST,trnskmEA_WLK_LOC_DRV.tpp.omx,ddist,EA +WLK_LOC_DRV_WAUX,trnskmEA_WLK_LOC_DRV.tpp.omx,waux,EA +WLK_LOC_DRV_IWAIT,trnskmEA_WLK_LOC_DRV.tpp.omx,iwait,EA +WLK_LOC_DRV_XWAIT,trnskmEA_WLK_LOC_DRV.tpp.omx,xwait,EA +WLK_LOC_DRV_BOARDS,trnskmEA_WLK_LOC_DRV.tpp.omx,boards,EA +WLK_LOC_WLK_WAIT,trnskmEA_WLK_LOC_WLK.tpp.omx,wait,EA +WLK_LOC_WLK_TOTIVT,trnskmEA_WLK_LOC_WLK.tpp.omx,ivt,EA +WLK_LOC_WLK_FAR,trnskmEA_WLK_LOC_WLK.tpp.omx,fare,EA +WLK_LOC_WLK_WAUX,trnskmEA_WLK_LOC_WLK.tpp.omx,waux,EA +WLK_LOC_WLK_IWAIT,trnskmEA_WLK_LOC_WLK.tpp.omx,iwait,EA +WLK_LOC_WLK_XWAIT,trnskmEA_WLK_LOC_WLK.tpp.omx,xwait,EA +WLK_LOC_WLK_BOARDS,trnskmEA_WLK_LOC_WLK.tpp.omx,boards,EA +WLK_LRF_DRV_WAIT,trnskmEA_WLK_LRF_DRV.tpp.omx,wait,EA +WLK_LRF_DRV_TOTIVT,trnskmEA_WLK_LRF_DRV.tpp.omx,ivt,EA +WLK_LRF_DRV_KEYIVT,trnskmEA_WLK_LRF_DRV.tpp.omx,ivtLRF,EA +WLK_LRF_DRV_FERRYIVT,trnskmEA_WLK_LRF_DRV.tpp.omx,ivtFerry,EA +WLK_LRF_DRV_FAR,trnskmEA_WLK_LRF_DRV.tpp.omx,fare,EA +WLK_LRF_DRV_DTIM,trnskmEA_WLK_LRF_DRV.tpp.omx,dtime,EA +WLK_LRF_DRV_DDIST,trnskmEA_WLK_LRF_DRV.tpp.omx,ddist,EA +WLK_LRF_DRV_WAUX,trnskmEA_WLK_LRF_DRV.tpp.omx,waux,EA +WLK_LRF_DRV_IWAIT,trnskmEA_WLK_LRF_DRV.tpp.omx,iwait,EA +WLK_LRF_DRV_XWAIT,trnskmEA_WLK_LRF_DRV.tpp.omx,xwait,EA +WLK_LRF_DRV_BOARDS,trnskmEA_WLK_LRF_DRV.tpp.omx,boards,EA +WLK_LRF_WLK_WAIT,trnskmEA_WLK_LRF_WLK.tpp.omx,wait,EA +WLK_LRF_WLK_TOTIVT,trnskmEA_WLK_LRF_WLK.tpp.omx,ivt,EA +WLK_LRF_WLK_KEYIVT,trnskmEA_WLK_LRF_WLK.tpp.omx,ivtLRF,EA +WLK_LRF_WLK_FERRYIVT,trnskmEA_WLK_LRF_WLK.tpp.omx,ivtFerry,EA +WLK_LRF_WLK_FAR,trnskmEA_WLK_LRF_WLK.tpp.omx,fare,EA +WLK_LRF_WLK_WAUX,trnskmEA_WLK_LRF_WLK.tpp.omx,waux,EA +WLK_LRF_WLK_IWAIT,trnskmEA_WLK_LRF_WLK.tpp.omx,iwait,EA +WLK_LRF_WLK_XWAIT,trnskmEA_WLK_LRF_WLK.tpp.omx,xwait,EA +WLK_LRF_WLK_BOARDS,trnskmEA_WLK_LRF_WLK.tpp.omx,boards,EA +DRV_COM_WLK_WAIT,trnskmEV_DRV_COM_WLK.tpp.omx,wait,EV +DRV_COM_WLK_TOTIVT,trnskmEV_DRV_COM_WLK.tpp.omx,ivt,EV +DRV_COM_WLK_KEYIVT,trnskmEV_DRV_COM_WLK.tpp.omx,ivtCOM,EV +DRV_COM_WLK_FAR,trnskmEV_DRV_COM_WLK.tpp.omx,fare,EV +DRV_COM_WLK_DTIM,trnskmEV_DRV_COM_WLK.tpp.omx,dtime,EV +DRV_COM_WLK_DDIST,trnskmEV_DRV_COM_WLK.tpp.omx,ddist,EV +DRV_COM_WLK_WAUX,trnskmEV_DRV_COM_WLK.tpp.omx,waux,EV +DRV_COM_WLK_IWAIT,trnskmEV_DRV_COM_WLK.tpp.omx,iwait,EV +DRV_COM_WLK_XWAIT,trnskmEV_DRV_COM_WLK.tpp.omx,xwait,EV +DRV_COM_WLK_BOARDS,trnskmEV_DRV_COM_WLK.tpp.omx,boards,EV +DRV_EXP_WLK_WAIT,trnskmEV_DRV_EXP_WLK.tpp.omx,wait,EV +DRV_EXP_WLK_TOTIVT,trnskmEV_DRV_EXP_WLK.tpp.omx,ivt,EV +DRV_EXP_WLK_KEYIVT,trnskmEV_DRV_EXP_WLK.tpp.omx,ivtEXP,EV +DRV_EXP_WLK_FAR,trnskmEV_DRV_EXP_WLK.tpp.omx,fare,EV +DRV_EXP_WLK_DTIM,trnskmEV_DRV_EXP_WLK.tpp.omx,dtime,EV +DRV_EXP_WLK_WAUX,trnskmEV_DRV_EXP_WLK.tpp.omx,waux,EV +DRV_EXP_WLK_IWAIT,trnskmEV_DRV_EXP_WLK.tpp.omx,iwait,EV +DRV_EXP_WLK_XWAIT,trnskmEV_DRV_EXP_WLK.tpp.omx,xwait,EV +DRV_EXP_WLK_BOARDS,trnskmEV_DRV_EXP_WLK.tpp.omx,boards,EV +DRV_EXP_WLK_DDIST,trnskmEV_DRV_EXP_WLK.tpp.omx,ddist,EV +DRV_HVY_WLK_WAIT,trnskmEV_DRV_HVY_WLK.tpp.omx,wait,EV +DRV_HVY_WLK_TOTIVT,trnskmEV_DRV_HVY_WLK.tpp.omx,ivt,EV +DRV_HVY_WLK_KEYIVT,trnskmEV_DRV_HVY_WLK.tpp.omx,ivtHVY,EV +DRV_HVY_WLK_FAR,trnskmEV_DRV_HVY_WLK.tpp.omx,fare,EV +DRV_HVY_WLK_DTIM,trnskmEV_DRV_HVY_WLK.tpp.omx,dtime,EV +DRV_HVY_WLK_DDIST,trnskmEV_DRV_HVY_WLK.tpp.omx,ddist,EV +DRV_HVY_WLK_WAUX,trnskmEV_DRV_HVY_WLK.tpp.omx,waux,EV +DRV_HVY_WLK_IWAIT,trnskmEV_DRV_HVY_WLK.tpp.omx,iwait,EV +DRV_HVY_WLK_XWAIT,trnskmEV_DRV_HVY_WLK.tpp.omx,xwait,EV +DRV_HVY_WLK_BOARDS,trnskmEV_DRV_HVY_WLK.tpp.omx,boards,EV +DRV_LOC_WLK_WAIT,trnskmEV_DRV_LOC_WLK.tpp.omx,wait,EV +DRV_LOC_WLK_TOTIVT,trnskmEV_DRV_LOC_WLK.tpp.omx,ivt,EV +DRV_LOC_WLK_FAR,trnskmEV_DRV_LOC_WLK.tpp.omx,fare,EV +DRV_LOC_WLK_DTIM,trnskmEV_DRV_LOC_WLK.tpp.omx,dtime,EV +DRV_LOC_WLK_DDIST,trnskmEV_DRV_LOC_WLK.tpp.omx,ddist,EV +DRV_LOC_WLK_WAUX,trnskmEV_DRV_LOC_WLK.tpp.omx,waux,EV +DRV_LOC_WLK_IWAIT,trnskmEV_DRV_LOC_WLK.tpp.omx,iwait,EV +DRV_LOC_WLK_XWAIT,trnskmEV_DRV_LOC_WLK.tpp.omx,xwait,EV +DRV_LOC_WLK_BOARDS,trnskmEV_DRV_LOC_WLK.tpp.omx,boards,EV +DRV_LRF_WLK_WAIT,trnskmEV_DRV_LRF_WLK.tpp.omx,wait,EV +DRV_LRF_WLK_TOTIVT,trnskmEV_DRV_LRF_WLK.tpp.omx,ivt,EV +DRV_LRF_WLK_KEYIVT,trnskmEV_DRV_LRF_WLK.tpp.omx,ivtLRF,EV +DRV_LRF_WLK_FERRYIVT,trnskmEV_DRV_LRF_WLK.tpp.omx,ivtFerry,EV +DRV_LRF_WLK_FAR,trnskmEV_DRV_LRF_WLK.tpp.omx,fare,EV +DRV_LRF_WLK_DTIM,trnskmEV_DRV_LRF_WLK.tpp.omx,dtime,EV +DRV_LRF_WLK_DDIST,trnskmEV_DRV_LRF_WLK.tpp.omx,ddist,EV +DRV_LRF_WLK_WAUX,trnskmEV_DRV_LRF_WLK.tpp.omx,waux,EV +DRV_LRF_WLK_IWAIT,trnskmEV_DRV_LRF_WLK.tpp.omx,iwait,EV +DRV_LRF_WLK_XWAIT,trnskmEV_DRV_LRF_WLK.tpp.omx,xwait,EV +DRV_LRF_WLK_BOARDS,trnskmEV_DRV_LRF_WLK.tpp.omx,boards,EV +WLK_COM_DRV_WAIT,trnskmEV_WLK_COM_DRV.tpp.omx,wait,EV +WLK_COM_DRV_TOTIVT,trnskmEV_WLK_COM_DRV.tpp.omx,ivt,EV +WLK_COM_DRV_KEYIVT,trnskmEV_WLK_COM_DRV.tpp.omx,ivtCOM,EV +WLK_COM_DRV_FAR,trnskmEV_WLK_COM_DRV.tpp.omx,fare,EV +WLK_COM_DRV_DTIM,trnskmEV_WLK_COM_DRV.tpp.omx,dtime,EV +WLK_COM_DRV_DDIST,trnskmEV_WLK_COM_DRV.tpp.omx,ddist,EV +WLK_COM_DRV_WAUX,trnskmEV_WLK_COM_DRV.tpp.omx,waux,EV +WLK_COM_DRV_IWAIT,trnskmEV_WLK_COM_DRV.tpp.omx,iwait,EV +WLK_COM_DRV_XWAIT,trnskmEV_WLK_COM_DRV.tpp.omx,xwait,EV +WLK_COM_DRV_BOARDS,trnskmEV_WLK_COM_DRV.tpp.omx,boards,EV +WLK_COM_WLK_WAIT,trnskmEV_WLK_COM_WLK.tpp.omx,wait,EV +WLK_COM_WLK_TOTIVT,trnskmEV_WLK_COM_WLK.tpp.omx,ivt,EV +WLK_COM_WLK_KEYIVT,trnskmEV_WLK_COM_WLK.tpp.omx,ivtCOM,EV +WLK_COM_WLK_FAR,trnskmEV_WLK_COM_WLK.tpp.omx,fare,EV +WLK_COM_WLK_WAUX,trnskmEV_WLK_COM_WLK.tpp.omx,waux,EV +WLK_COM_WLK_IWAIT,trnskmEV_WLK_COM_WLK.tpp.omx,iwait,EV +WLK_COM_WLK_XWAIT,trnskmEV_WLK_COM_WLK.tpp.omx,xwait,EV +WLK_COM_WLK_BOARDS,trnskmEV_WLK_COM_WLK.tpp.omx,boards,EV +WLK_EXP_DRV_WAIT,trnskmEV_WLK_EXP_DRV.tpp.omx,wait,EV +WLK_EXP_DRV_TOTIVT,trnskmEV_WLK_EXP_DRV.tpp.omx,ivt,EV +WLK_EXP_DRV_KEYIVT,trnskmEV_WLK_EXP_DRV.tpp.omx,ivtEXP,EV +WLK_EXP_DRV_FAR,trnskmEV_WLK_EXP_DRV.tpp.omx,fare,EV +WLK_EXP_DRV_DTIM,trnskmEV_WLK_EXP_DRV.tpp.omx,dtime,EV +WLK_EXP_DRV_WAUX,trnskmEV_WLK_EXP_DRV.tpp.omx,waux,EV +WLK_EXP_DRV_IWAIT,trnskmEV_WLK_EXP_DRV.tpp.omx,iwait,EV +WLK_EXP_DRV_XWAIT,trnskmEV_WLK_EXP_DRV.tpp.omx,xwait,EV +WLK_EXP_DRV_BOARDS,trnskmEV_WLK_EXP_DRV.tpp.omx,boards,EV +WLK_EXP_DRV_DDIST,trnskmEV_WLK_EXP_DRV.tpp.omx,ddist,EV +WLK_EXP_WLK_WAIT,trnskmEV_WLK_EXP_WLK.tpp.omx,wait,EV +WLK_EXP_WLK_TOTIVT,trnskmEV_WLK_EXP_WLK.tpp.omx,ivt,EV +WLK_EXP_WLK_KEYIVT,trnskmEV_WLK_EXP_WLK.tpp.omx,ivtEXP,EV +WLK_EXP_WLK_FAR,trnskmEV_WLK_EXP_WLK.tpp.omx,fare,EV +WLK_EXP_WLK_WAUX,trnskmEV_WLK_EXP_WLK.tpp.omx,waux,EV +WLK_EXP_WLK_IWAIT,trnskmEV_WLK_EXP_WLK.tpp.omx,iwait,EV +WLK_EXP_WLK_XWAIT,trnskmEV_WLK_EXP_WLK.tpp.omx,xwait,EV +WLK_EXP_WLK_BOARDS,trnskmEV_WLK_EXP_WLK.tpp.omx,boards,EV +WLK_HVY_DRV_WAIT,trnskmEV_WLK_HVY_DRV.tpp.omx,wait,EV +WLK_HVY_DRV_TOTIVT,trnskmEV_WLK_HVY_DRV.tpp.omx,ivt,EV +WLK_HVY_DRV_KEYIVT,trnskmEV_WLK_HVY_DRV.tpp.omx,ivtHVY,EV +WLK_HVY_DRV_FAR,trnskmEV_WLK_HVY_DRV.tpp.omx,fare,EV +WLK_HVY_DRV_DTIM,trnskmEV_WLK_HVY_DRV.tpp.omx,dtime,EV +WLK_HVY_DRV_DDIST,trnskmEV_WLK_HVY_DRV.tpp.omx,ddist,EV +WLK_HVY_DRV_WAUX,trnskmEV_WLK_HVY_DRV.tpp.omx,waux,EV +WLK_HVY_DRV_IWAIT,trnskmEV_WLK_HVY_DRV.tpp.omx,iwait,EV +WLK_HVY_DRV_XWAIT,trnskmEV_WLK_HVY_DRV.tpp.omx,xwait,EV +WLK_HVY_DRV_BOARDS,trnskmEV_WLK_HVY_DRV.tpp.omx,boards,EV +WLK_HVY_WLK_WAIT,trnskmEV_WLK_HVY_WLK.tpp.omx,wait,EV +WLK_HVY_WLK_TOTIVT,trnskmEV_WLK_HVY_WLK.tpp.omx,ivt,EV +WLK_HVY_WLK_KEYIVT,trnskmEV_WLK_HVY_WLK.tpp.omx,ivtHVY,EV +WLK_HVY_WLK_FAR,trnskmEV_WLK_HVY_WLK.tpp.omx,fare,EV +WLK_HVY_WLK_WAUX,trnskmEV_WLK_HVY_WLK.tpp.omx,waux,EV +WLK_HVY_WLK_IWAIT,trnskmEV_WLK_HVY_WLK.tpp.omx,iwait,EV +WLK_HVY_WLK_XWAIT,trnskmEV_WLK_HVY_WLK.tpp.omx,xwait,EV +WLK_HVY_WLK_BOARDS,trnskmEV_WLK_HVY_WLK.tpp.omx,boards,EV +WLK_LOC_DRV_WAIT,trnskmEV_WLK_LOC_DRV.tpp.omx,wait,EV +WLK_LOC_DRV_TOTIVT,trnskmEV_WLK_LOC_DRV.tpp.omx,ivt,EV +WLK_LOC_DRV_FAR,trnskmEV_WLK_LOC_DRV.tpp.omx,fare,EV +WLK_LOC_DRV_DTIM,trnskmEV_WLK_LOC_DRV.tpp.omx,dtime,EV +WLK_LOC_DRV_DDIST,trnskmEV_WLK_LOC_DRV.tpp.omx,ddist,EV +WLK_LOC_DRV_WAUX,trnskmEV_WLK_LOC_DRV.tpp.omx,waux,EV +WLK_LOC_DRV_IWAIT,trnskmEV_WLK_LOC_DRV.tpp.omx,iwait,EV +WLK_LOC_DRV_XWAIT,trnskmEV_WLK_LOC_DRV.tpp.omx,xwait,EV +WLK_LOC_DRV_BOARDS,trnskmEV_WLK_LOC_DRV.tpp.omx,boards,EV +WLK_LOC_WLK_WAIT,trnskmEV_WLK_LOC_WLK.tpp.omx,wait,EV +WLK_LOC_WLK_TOTIVT,trnskmEV_WLK_LOC_WLK.tpp.omx,ivt,EV +WLK_LOC_WLK_FAR,trnskmEV_WLK_LOC_WLK.tpp.omx,fare,EV +WLK_LOC_WLK_WAUX,trnskmEV_WLK_LOC_WLK.tpp.omx,waux,EV +WLK_LOC_WLK_IWAIT,trnskmEV_WLK_LOC_WLK.tpp.omx,iwait,EV +WLK_LOC_WLK_XWAIT,trnskmEV_WLK_LOC_WLK.tpp.omx,xwait,EV +WLK_LOC_WLK_BOARDS,trnskmEV_WLK_LOC_WLK.tpp.omx,boards,EV +WLK_LRF_DRV_WAIT,trnskmEV_WLK_LRF_DRV.tpp.omx,wait,EV +WLK_LRF_DRV_TOTIVT,trnskmEV_WLK_LRF_DRV.tpp.omx,ivt,EV +WLK_LRF_DRV_KEYIVT,trnskmEV_WLK_LRF_DRV.tpp.omx,ivtLRF,EV +WLK_LRF_DRV_FERRYIVT,trnskmEV_WLK_LRF_DRV.tpp.omx,ivtFerry,EV +WLK_LRF_DRV_FAR,trnskmEV_WLK_LRF_DRV.tpp.omx,fare,EV +WLK_LRF_DRV_DTIM,trnskmEV_WLK_LRF_DRV.tpp.omx,dtime,EV +WLK_LRF_DRV_DDIST,trnskmEV_WLK_LRF_DRV.tpp.omx,ddist,EV +WLK_LRF_DRV_WAUX,trnskmEV_WLK_LRF_DRV.tpp.omx,waux,EV +WLK_LRF_DRV_IWAIT,trnskmEV_WLK_LRF_DRV.tpp.omx,iwait,EV +WLK_LRF_DRV_XWAIT,trnskmEV_WLK_LRF_DRV.tpp.omx,xwait,EV +WLK_LRF_DRV_BOARDS,trnskmEV_WLK_LRF_DRV.tpp.omx,boards,EV +WLK_LRF_WLK_WAIT,trnskmEV_WLK_LRF_WLK.tpp.omx,wait,EV +WLK_LRF_WLK_TOTIVT,trnskmEV_WLK_LRF_WLK.tpp.omx,ivt,EV +WLK_LRF_WLK_KEYIVT,trnskmEV_WLK_LRF_WLK.tpp.omx,ivtLRF,EV +WLK_LRF_WLK_FERRYIVT,trnskmEV_WLK_LRF_WLK.tpp.omx,ivtFerry,EV +WLK_LRF_WLK_FAR,trnskmEV_WLK_LRF_WLK.tpp.omx,fare,EV +WLK_LRF_WLK_WAUX,trnskmEV_WLK_LRF_WLK.tpp.omx,waux,EV +WLK_LRF_WLK_IWAIT,trnskmEV_WLK_LRF_WLK.tpp.omx,iwait,EV +WLK_LRF_WLK_XWAIT,trnskmEV_WLK_LRF_WLK.tpp.omx,xwait,EV +WLK_LRF_WLK_BOARDS,trnskmEV_WLK_LRF_WLK.tpp.omx,boards,EV +DRV_COM_WLK_WAIT,trnskmMD_DRV_COM_WLK.tpp.omx,wait,MD +DRV_COM_WLK_TOTIVT,trnskmMD_DRV_COM_WLK.tpp.omx,ivt,MD +DRV_COM_WLK_KEYIVT,trnskmMD_DRV_COM_WLK.tpp.omx,ivtCOM,MD +DRV_COM_WLK_FAR,trnskmMD_DRV_COM_WLK.tpp.omx,fare,MD +DRV_COM_WLK_DTIM,trnskmMD_DRV_COM_WLK.tpp.omx,dtime,MD +DRV_COM_WLK_DDIST,trnskmMD_DRV_COM_WLK.tpp.omx,ddist,MD +DRV_COM_WLK_WAUX,trnskmMD_DRV_COM_WLK.tpp.omx,waux,MD +DRV_COM_WLK_IWAIT,trnskmMD_DRV_COM_WLK.tpp.omx,iwait,MD +DRV_COM_WLK_XWAIT,trnskmMD_DRV_COM_WLK.tpp.omx,xwait,MD +DRV_COM_WLK_BOARDS,trnskmMD_DRV_COM_WLK.tpp.omx,boards,MD +DRV_EXP_WLK_WAIT,trnskmMD_DRV_EXP_WLK.tpp.omx,wait,MD +DRV_EXP_WLK_TOTIVT,trnskmMD_DRV_EXP_WLK.tpp.omx,ivt,MD +DRV_EXP_WLK_KEYIVT,trnskmMD_DRV_EXP_WLK.tpp.omx,ivtEXP,MD +DRV_EXP_WLK_FAR,trnskmMD_DRV_EXP_WLK.tpp.omx,fare,MD +DRV_EXP_WLK_DTIM,trnskmMD_DRV_EXP_WLK.tpp.omx,dtime,MD +DRV_EXP_WLK_WAUX,trnskmMD_DRV_EXP_WLK.tpp.omx,waux,MD +DRV_EXP_WLK_IWAIT,trnskmMD_DRV_EXP_WLK.tpp.omx,iwait,MD +DRV_EXP_WLK_XWAIT,trnskmMD_DRV_EXP_WLK.tpp.omx,xwait,MD +DRV_EXP_WLK_BOARDS,trnskmMD_DRV_EXP_WLK.tpp.omx,boards,MD +DRV_EXP_WLK_DDIST,trnskmMD_DRV_EXP_WLK.tpp.omx,ddist,MD +DRV_HVY_WLK_WAIT,trnskmMD_DRV_HVY_WLK.tpp.omx,wait,MD +DRV_HVY_WLK_TOTIVT,trnskmMD_DRV_HVY_WLK.tpp.omx,ivt,MD +DRV_HVY_WLK_KEYIVT,trnskmMD_DRV_HVY_WLK.tpp.omx,ivtHVY,MD +DRV_HVY_WLK_FAR,trnskmMD_DRV_HVY_WLK.tpp.omx,fare,MD +DRV_HVY_WLK_DTIM,trnskmMD_DRV_HVY_WLK.tpp.omx,dtime,MD +DRV_HVY_WLK_DDIST,trnskmMD_DRV_HVY_WLK.tpp.omx,ddist,MD +DRV_HVY_WLK_WAUX,trnskmMD_DRV_HVY_WLK.tpp.omx,waux,MD +DRV_HVY_WLK_IWAIT,trnskmMD_DRV_HVY_WLK.tpp.omx,iwait,MD +DRV_HVY_WLK_XWAIT,trnskmMD_DRV_HVY_WLK.tpp.omx,xwait,MD +DRV_HVY_WLK_BOARDS,trnskmMD_DRV_HVY_WLK.tpp.omx,boards,MD +DRV_LOC_WLK_WAIT,trnskmMD_DRV_LOC_WLK.tpp.omx,wait,MD +DRV_LOC_WLK_TOTIVT,trnskmMD_DRV_LOC_WLK.tpp.omx,ivt,MD +DRV_LOC_WLK_FAR,trnskmMD_DRV_LOC_WLK.tpp.omx,fare,MD +DRV_LOC_WLK_DTIM,trnskmMD_DRV_LOC_WLK.tpp.omx,dtime,MD +DRV_LOC_WLK_DDIST,trnskmMD_DRV_LOC_WLK.tpp.omx,ddist,MD +DRV_LOC_WLK_WAUX,trnskmMD_DRV_LOC_WLK.tpp.omx,waux,MD +DRV_LOC_WLK_IWAIT,trnskmMD_DRV_LOC_WLK.tpp.omx,iwait,MD +DRV_LOC_WLK_XWAIT,trnskmMD_DRV_LOC_WLK.tpp.omx,xwait,MD +DRV_LOC_WLK_BOARDS,trnskmMD_DRV_LOC_WLK.tpp.omx,boards,MD +DRV_LRF_WLK_WAIT,trnskmMD_DRV_LRF_WLK.tpp.omx,wait,MD +DRV_LRF_WLK_TOTIVT,trnskmMD_DRV_LRF_WLK.tpp.omx,ivt,MD +DRV_LRF_WLK_KEYIVT,trnskmMD_DRV_LRF_WLK.tpp.omx,ivtLRF,MD +DRV_LRF_WLK_FERRYIVT,trnskmMD_DRV_LRF_WLK.tpp.omx,ivtFerry,MD +DRV_LRF_WLK_FAR,trnskmMD_DRV_LRF_WLK.tpp.omx,fare,MD +DRV_LRF_WLK_DTIM,trnskmMD_DRV_LRF_WLK.tpp.omx,dtime,MD +DRV_LRF_WLK_DDIST,trnskmMD_DRV_LRF_WLK.tpp.omx,ddist,MD +DRV_LRF_WLK_WAUX,trnskmMD_DRV_LRF_WLK.tpp.omx,waux,MD +DRV_LRF_WLK_IWAIT,trnskmMD_DRV_LRF_WLK.tpp.omx,iwait,MD +DRV_LRF_WLK_XWAIT,trnskmMD_DRV_LRF_WLK.tpp.omx,xwait,MD +DRV_LRF_WLK_BOARDS,trnskmMD_DRV_LRF_WLK.tpp.omx,boards,MD +WLK_COM_DRV_WAIT,trnskmMD_WLK_COM_DRV.tpp.omx,wait,MD +WLK_COM_DRV_TOTIVT,trnskmMD_WLK_COM_DRV.tpp.omx,ivt,MD +WLK_COM_DRV_KEYIVT,trnskmMD_WLK_COM_DRV.tpp.omx,ivtCOM,MD +WLK_COM_DRV_FAR,trnskmMD_WLK_COM_DRV.tpp.omx,fare,MD +WLK_COM_DRV_DTIM,trnskmMD_WLK_COM_DRV.tpp.omx,dtime,MD +WLK_COM_DRV_DDIST,trnskmMD_WLK_COM_DRV.tpp.omx,ddist,MD +WLK_COM_DRV_WAUX,trnskmMD_WLK_COM_DRV.tpp.omx,waux,MD +WLK_COM_DRV_IWAIT,trnskmMD_WLK_COM_DRV.tpp.omx,iwait,MD +WLK_COM_DRV_XWAIT,trnskmMD_WLK_COM_DRV.tpp.omx,xwait,MD +WLK_COM_DRV_BOARDS,trnskmMD_WLK_COM_DRV.tpp.omx,boards,MD +WLK_COM_WLK_WAIT,trnskmMD_WLK_COM_WLK.tpp.omx,wait,MD +WLK_COM_WLK_TOTIVT,trnskmMD_WLK_COM_WLK.tpp.omx,ivt,MD +WLK_COM_WLK_KEYIVT,trnskmMD_WLK_COM_WLK.tpp.omx,ivtCOM,MD +WLK_COM_WLK_FAR,trnskmMD_WLK_COM_WLK.tpp.omx,fare,MD +WLK_COM_WLK_WAUX,trnskmMD_WLK_COM_WLK.tpp.omx,waux,MD +WLK_COM_WLK_IWAIT,trnskmMD_WLK_COM_WLK.tpp.omx,iwait,MD +WLK_COM_WLK_XWAIT,trnskmMD_WLK_COM_WLK.tpp.omx,xwait,MD +WLK_COM_WLK_BOARDS,trnskmMD_WLK_COM_WLK.tpp.omx,boards,MD +WLK_EXP_DRV_WAIT,trnskmMD_WLK_EXP_DRV.tpp.omx,wait,MD +WLK_EXP_DRV_TOTIVT,trnskmMD_WLK_EXP_DRV.tpp.omx,ivt,MD +WLK_EXP_DRV_KEYIVT,trnskmMD_WLK_EXP_DRV.tpp.omx,ivtEXP,MD +WLK_EXP_DRV_FAR,trnskmMD_WLK_EXP_DRV.tpp.omx,fare,MD +WLK_EXP_DRV_DTIM,trnskmMD_WLK_EXP_DRV.tpp.omx,dtime,MD +WLK_EXP_DRV_WAUX,trnskmMD_WLK_EXP_DRV.tpp.omx,waux,MD +WLK_EXP_DRV_IWAIT,trnskmMD_WLK_EXP_DRV.tpp.omx,iwait,MD +WLK_EXP_DRV_XWAIT,trnskmMD_WLK_EXP_DRV.tpp.omx,xwait,MD +WLK_EXP_DRV_BOARDS,trnskmMD_WLK_EXP_DRV.tpp.omx,boards,MD +WLK_EXP_DRV_DDIST,trnskmMD_WLK_EXP_DRV.tpp.omx,ddist,MD +WLK_EXP_WLK_WAIT,trnskmMD_WLK_EXP_WLK.tpp.omx,wait,MD +WLK_EXP_WLK_TOTIVT,trnskmMD_WLK_EXP_WLK.tpp.omx,ivt,MD +WLK_EXP_WLK_KEYIVT,trnskmMD_WLK_EXP_WLK.tpp.omx,ivtEXP,MD +WLK_EXP_WLK_FAR,trnskmMD_WLK_EXP_WLK.tpp.omx,fare,MD +WLK_EXP_WLK_WAUX,trnskmMD_WLK_EXP_WLK.tpp.omx,waux,MD +WLK_EXP_WLK_IWAIT,trnskmMD_WLK_EXP_WLK.tpp.omx,iwait,MD +WLK_EXP_WLK_XWAIT,trnskmMD_WLK_EXP_WLK.tpp.omx,xwait,MD +WLK_EXP_WLK_BOARDS,trnskmMD_WLK_EXP_WLK.tpp.omx,boards,MD +WLK_HVY_DRV_WAIT,trnskmMD_WLK_HVY_DRV.tpp.omx,wait,MD +WLK_HVY_DRV_TOTIVT,trnskmMD_WLK_HVY_DRV.tpp.omx,ivt,MD +WLK_HVY_DRV_KEYIVT,trnskmMD_WLK_HVY_DRV.tpp.omx,ivtHVY,MD +WLK_HVY_DRV_FAR,trnskmMD_WLK_HVY_DRV.tpp.omx,fare,MD +WLK_HVY_DRV_DTIM,trnskmMD_WLK_HVY_DRV.tpp.omx,dtime,MD +WLK_HVY_DRV_DDIST,trnskmMD_WLK_HVY_DRV.tpp.omx,ddist,MD +WLK_HVY_DRV_WAUX,trnskmMD_WLK_HVY_DRV.tpp.omx,waux,MD +WLK_HVY_DRV_IWAIT,trnskmMD_WLK_HVY_DRV.tpp.omx,iwait,MD +WLK_HVY_DRV_XWAIT,trnskmMD_WLK_HVY_DRV.tpp.omx,xwait,MD +WLK_HVY_DRV_BOARDS,trnskmMD_WLK_HVY_DRV.tpp.omx,boards,MD +WLK_HVY_WLK_WAIT,trnskmMD_WLK_HVY_WLK.tpp.omx,wait,MD +WLK_HVY_WLK_TOTIVT,trnskmMD_WLK_HVY_WLK.tpp.omx,ivt,MD +WLK_HVY_WLK_KEYIVT,trnskmMD_WLK_HVY_WLK.tpp.omx,ivtHVY,MD +WLK_HVY_WLK_FAR,trnskmMD_WLK_HVY_WLK.tpp.omx,fare,MD +WLK_HVY_WLK_WAUX,trnskmMD_WLK_HVY_WLK.tpp.omx,waux,MD +WLK_HVY_WLK_IWAIT,trnskmMD_WLK_HVY_WLK.tpp.omx,iwait,MD +WLK_HVY_WLK_XWAIT,trnskmMD_WLK_HVY_WLK.tpp.omx,xwait,MD +WLK_HVY_WLK_BOARDS,trnskmMD_WLK_HVY_WLK.tpp.omx,boards,MD +WLK_LOC_DRV_WAIT,trnskmMD_WLK_LOC_DRV.tpp.omx,wait,MD +WLK_LOC_DRV_TOTIVT,trnskmMD_WLK_LOC_DRV.tpp.omx,ivt,MD +WLK_LOC_DRV_FAR,trnskmMD_WLK_LOC_DRV.tpp.omx,fare,MD +WLK_LOC_DRV_DTIM,trnskmMD_WLK_LOC_DRV.tpp.omx,dtime,MD +WLK_LOC_DRV_DDIST,trnskmMD_WLK_LOC_DRV.tpp.omx,ddist,MD +WLK_LOC_DRV_WAUX,trnskmMD_WLK_LOC_DRV.tpp.omx,waux,MD +WLK_LOC_DRV_IWAIT,trnskmMD_WLK_LOC_DRV.tpp.omx,iwait,MD +WLK_LOC_DRV_XWAIT,trnskmMD_WLK_LOC_DRV.tpp.omx,xwait,MD +WLK_LOC_DRV_BOARDS,trnskmMD_WLK_LOC_DRV.tpp.omx,boards,MD +WLK_LOC_WLK_WAIT,trnskmMD_WLK_LOC_WLK.tpp.omx,wait,MD +WLK_LOC_WLK_TOTIVT,trnskmMD_WLK_LOC_WLK.tpp.omx,ivt,MD +WLK_LOC_WLK_FAR,trnskmMD_WLK_LOC_WLK.tpp.omx,fare,MD +WLK_LOC_WLK_WAUX,trnskmMD_WLK_LOC_WLK.tpp.omx,waux,MD +WLK_LOC_WLK_IWAIT,trnskmMD_WLK_LOC_WLK.tpp.omx,iwait,MD +WLK_LOC_WLK_XWAIT,trnskmMD_WLK_LOC_WLK.tpp.omx,xwait,MD +WLK_LOC_WLK_BOARDS,trnskmMD_WLK_LOC_WLK.tpp.omx,boards,MD +WLK_LRF_DRV_WAIT,trnskmMD_WLK_LRF_DRV.tpp.omx,wait,MD +WLK_LRF_DRV_TOTIVT,trnskmMD_WLK_LRF_DRV.tpp.omx,ivt,MD +WLK_LRF_DRV_KEYIVT,trnskmMD_WLK_LRF_DRV.tpp.omx,ivtLRF,MD +WLK_LRF_DRV_FERRYIVT,trnskmMD_WLK_LRF_DRV.tpp.omx,ivtFerry,MD +WLK_LRF_DRV_FAR,trnskmMD_WLK_LRF_DRV.tpp.omx,fare,MD +WLK_LRF_DRV_DTIM,trnskmMD_WLK_LRF_DRV.tpp.omx,dtime,MD +WLK_LRF_DRV_DDIST,trnskmMD_WLK_LRF_DRV.tpp.omx,ddist,MD +WLK_LRF_DRV_WAUX,trnskmMD_WLK_LRF_DRV.tpp.omx,waux,MD +WLK_LRF_DRV_IWAIT,trnskmMD_WLK_LRF_DRV.tpp.omx,iwait,MD +WLK_LRF_DRV_XWAIT,trnskmMD_WLK_LRF_DRV.tpp.omx,xwait,MD +WLK_LRF_DRV_BOARDS,trnskmMD_WLK_LRF_DRV.tpp.omx,boards,MD +WLK_LRF_WLK_WAIT,trnskmMD_WLK_LRF_WLK.tpp.omx,wait,MD +WLK_LRF_WLK_TOTIVT,trnskmMD_WLK_LRF_WLK.tpp.omx,ivt,MD +WLK_LRF_WLK_KEYIVT,trnskmMD_WLK_LRF_WLK.tpp.omx,ivtLRF,MD +WLK_LRF_WLK_FERRYIVT,trnskmMD_WLK_LRF_WLK.tpp.omx,ivtFerry,MD +WLK_LRF_WLK_FAR,trnskmMD_WLK_LRF_WLK.tpp.omx,fare,MD +WLK_LRF_WLK_WAUX,trnskmMD_WLK_LRF_WLK.tpp.omx,waux,MD +WLK_LRF_WLK_IWAIT,trnskmMD_WLK_LRF_WLK.tpp.omx,iwait,MD +WLK_LRF_WLK_XWAIT,trnskmMD_WLK_LRF_WLK.tpp.omx,xwait,MD +WLK_LRF_WLK_BOARDS,trnskmMD_WLK_LRF_WLK.tpp.omx,boards,MD +DRV_COM_WLK_WAIT,trnskmPM_DRV_COM_WLK.tpp.omx,wait,PM +DRV_COM_WLK_TOTIVT,trnskmPM_DRV_COM_WLK.tpp.omx,ivt,PM +DRV_COM_WLK_KEYIVT,trnskmPM_DRV_COM_WLK.tpp.omx,ivtCOM,PM +DRV_COM_WLK_FAR,trnskmPM_DRV_COM_WLK.tpp.omx,fare,PM +DRV_COM_WLK_DTIM,trnskmPM_DRV_COM_WLK.tpp.omx,dtime,PM +DRV_COM_WLK_DDIST,trnskmPM_DRV_COM_WLK.tpp.omx,ddist,PM +DRV_COM_WLK_WAUX,trnskmPM_DRV_COM_WLK.tpp.omx,waux,PM +DRV_COM_WLK_IWAIT,trnskmPM_DRV_COM_WLK.tpp.omx,iwait,PM +DRV_COM_WLK_XWAIT,trnskmPM_DRV_COM_WLK.tpp.omx,xwait,PM +DRV_COM_WLK_BOARDS,trnskmPM_DRV_COM_WLK.tpp.omx,boards,PM +DRV_EXP_WLK_WAIT,trnskmPM_DRV_EXP_WLK.tpp.omx,wait,PM +DRV_EXP_WLK_TOTIVT,trnskmPM_DRV_EXP_WLK.tpp.omx,ivt,PM +DRV_EXP_WLK_KEYIVT,trnskmPM_DRV_EXP_WLK.tpp.omx,ivtEXP,PM +DRV_EXP_WLK_FAR,trnskmPM_DRV_EXP_WLK.tpp.omx,fare,PM +DRV_EXP_WLK_DTIM,trnskmPM_DRV_EXP_WLK.tpp.omx,dtime,PM +DRV_EXP_WLK_WAUX,trnskmPM_DRV_EXP_WLK.tpp.omx,waux,PM +DRV_EXP_WLK_IWAIT,trnskmPM_DRV_EXP_WLK.tpp.omx,iwait,PM +DRV_EXP_WLK_XWAIT,trnskmPM_DRV_EXP_WLK.tpp.omx,xwait,PM +DRV_EXP_WLK_BOARDS,trnskmPM_DRV_EXP_WLK.tpp.omx,boards,PM +DRV_EXP_WLK_DDIST,trnskmPM_DRV_EXP_WLK.tpp.omx,ddist,PM +DRV_HVY_WLK_WAIT,trnskmPM_DRV_HVY_WLK.tpp.omx,wait,PM +DRV_HVY_WLK_TOTIVT,trnskmPM_DRV_HVY_WLK.tpp.omx,ivt,PM +DRV_HVY_WLK_KEYIVT,trnskmPM_DRV_HVY_WLK.tpp.omx,ivtHVY,PM +DRV_HVY_WLK_FAR,trnskmPM_DRV_HVY_WLK.tpp.omx,fare,PM +DRV_HVY_WLK_DTIM,trnskmPM_DRV_HVY_WLK.tpp.omx,dtime,PM +DRV_HVY_WLK_DDIST,trnskmPM_DRV_HVY_WLK.tpp.omx,ddist,PM +DRV_HVY_WLK_WAUX,trnskmPM_DRV_HVY_WLK.tpp.omx,waux,PM +DRV_HVY_WLK_IWAIT,trnskmPM_DRV_HVY_WLK.tpp.omx,iwait,PM +DRV_HVY_WLK_XWAIT,trnskmPM_DRV_HVY_WLK.tpp.omx,xwait,PM +DRV_HVY_WLK_BOARDS,trnskmPM_DRV_HVY_WLK.tpp.omx,boards,PM +DRV_LOC_WLK_WAIT,trnskmPM_DRV_LOC_WLK.tpp.omx,wait,PM +DRV_LOC_WLK_TOTIVT,trnskmPM_DRV_LOC_WLK.tpp.omx,ivt,PM +DRV_LOC_WLK_FAR,trnskmPM_DRV_LOC_WLK.tpp.omx,fare,PM +DRV_LOC_WLK_DTIM,trnskmPM_DRV_LOC_WLK.tpp.omx,dtime,PM +DRV_LOC_WLK_DDIST,trnskmPM_DRV_LOC_WLK.tpp.omx,ddist,PM +DRV_LOC_WLK_WAUX,trnskmPM_DRV_LOC_WLK.tpp.omx,waux,PM +DRV_LOC_WLK_IWAIT,trnskmPM_DRV_LOC_WLK.tpp.omx,iwait,PM +DRV_LOC_WLK_XWAIT,trnskmPM_DRV_LOC_WLK.tpp.omx,xwait,PM +DRV_LOC_WLK_BOARDS,trnskmPM_DRV_LOC_WLK.tpp.omx,boards,PM +DRV_LRF_WLK_WAIT,trnskmPM_DRV_LRF_WLK.tpp.omx,wait,PM +DRV_LRF_WLK_TOTIVT,trnskmPM_DRV_LRF_WLK.tpp.omx,ivt,PM +DRV_LRF_WLK_KEYIVT,trnskmPM_DRV_LRF_WLK.tpp.omx,ivtLRF,PM +DRV_LRF_WLK_FERRYIVT,trnskmPM_DRV_LRF_WLK.tpp.omx,ivtFerry,PM +DRV_LRF_WLK_FAR,trnskmPM_DRV_LRF_WLK.tpp.omx,fare,PM +DRV_LRF_WLK_DTIM,trnskmPM_DRV_LRF_WLK.tpp.omx,dtime,PM +DRV_LRF_WLK_DDIST,trnskmPM_DRV_LRF_WLK.tpp.omx,ddist,PM +DRV_LRF_WLK_WAUX,trnskmPM_DRV_LRF_WLK.tpp.omx,waux,PM +DRV_LRF_WLK_IWAIT,trnskmPM_DRV_LRF_WLK.tpp.omx,iwait,PM +DRV_LRF_WLK_XWAIT,trnskmPM_DRV_LRF_WLK.tpp.omx,xwait,PM +DRV_LRF_WLK_BOARDS,trnskmPM_DRV_LRF_WLK.tpp.omx,boards,PM +WLK_COM_DRV_WAIT,trnskmPM_WLK_COM_DRV.tpp.omx,wait,PM +WLK_COM_DRV_TOTIVT,trnskmPM_WLK_COM_DRV.tpp.omx,ivt,PM +WLK_COM_DRV_KEYIVT,trnskmPM_WLK_COM_DRV.tpp.omx,ivtCOM,PM +WLK_COM_DRV_FAR,trnskmPM_WLK_COM_DRV.tpp.omx,fare,PM +WLK_COM_DRV_DTIM,trnskmPM_WLK_COM_DRV.tpp.omx,dtime,PM +WLK_COM_DRV_DDIST,trnskmPM_WLK_COM_DRV.tpp.omx,ddist,PM +WLK_COM_DRV_WAUX,trnskmPM_WLK_COM_DRV.tpp.omx,waux,PM +WLK_COM_DRV_IWAIT,trnskmPM_WLK_COM_DRV.tpp.omx,iwait,PM +WLK_COM_DRV_XWAIT,trnskmPM_WLK_COM_DRV.tpp.omx,xwait,PM +WLK_COM_DRV_BOARDS,trnskmPM_WLK_COM_DRV.tpp.omx,boards,PM +WLK_COM_WLK_WAIT,trnskmPM_WLK_COM_WLK.tpp.omx,wait,PM +WLK_COM_WLK_TOTIVT,trnskmPM_WLK_COM_WLK.tpp.omx,ivt,PM +WLK_COM_WLK_KEYIVT,trnskmPM_WLK_COM_WLK.tpp.omx,ivtCOM,PM +WLK_COM_WLK_FAR,trnskmPM_WLK_COM_WLK.tpp.omx,fare,PM +WLK_COM_WLK_WAUX,trnskmPM_WLK_COM_WLK.tpp.omx,waux,PM +WLK_COM_WLK_IWAIT,trnskmPM_WLK_COM_WLK.tpp.omx,iwait,PM +WLK_COM_WLK_XWAIT,trnskmPM_WLK_COM_WLK.tpp.omx,xwait,PM +WLK_COM_WLK_BOARDS,trnskmPM_WLK_COM_WLK.tpp.omx,boards,PM +WLK_EXP_DRV_WAIT,trnskmPM_WLK_EXP_DRV.tpp.omx,wait,PM +WLK_EXP_DRV_TOTIVT,trnskmPM_WLK_EXP_DRV.tpp.omx,ivt,PM +WLK_EXP_DRV_KEYIVT,trnskmPM_WLK_EXP_DRV.tpp.omx,ivtEXP,PM +WLK_EXP_DRV_FAR,trnskmPM_WLK_EXP_DRV.tpp.omx,fare,PM +WLK_EXP_DRV_DTIM,trnskmPM_WLK_EXP_DRV.tpp.omx,dtime,PM +WLK_EXP_DRV_WAUX,trnskmPM_WLK_EXP_DRV.tpp.omx,waux,PM +WLK_EXP_DRV_IWAIT,trnskmPM_WLK_EXP_DRV.tpp.omx,iwait,PM +WLK_EXP_DRV_XWAIT,trnskmPM_WLK_EXP_DRV.tpp.omx,xwait,PM +WLK_EXP_DRV_BOARDS,trnskmPM_WLK_EXP_DRV.tpp.omx,boards,PM +WLK_EXP_DRV_DDIST,trnskmPM_WLK_EXP_DRV.tpp.omx,ddist,PM +WLK_EXP_WLK_WAIT,trnskmPM_WLK_EXP_WLK.tpp.omx,wait,PM +WLK_EXP_WLK_TOTIVT,trnskmPM_WLK_EXP_WLK.tpp.omx,ivt,PM +WLK_EXP_WLK_KEYIVT,trnskmPM_WLK_EXP_WLK.tpp.omx,ivtEXP,PM +WLK_EXP_WLK_FAR,trnskmPM_WLK_EXP_WLK.tpp.omx,fare,PM +WLK_EXP_WLK_WAUX,trnskmPM_WLK_EXP_WLK.tpp.omx,waux,PM +WLK_EXP_WLK_IWAIT,trnskmPM_WLK_EXP_WLK.tpp.omx,iwait,PM +WLK_EXP_WLK_XWAIT,trnskmPM_WLK_EXP_WLK.tpp.omx,xwait,PM +WLK_EXP_WLK_BOARDS,trnskmPM_WLK_EXP_WLK.tpp.omx,boards,PM +WLK_HVY_DRV_WAIT,trnskmPM_WLK_HVY_DRV.tpp.omx,wait,PM +WLK_HVY_DRV_TOTIVT,trnskmPM_WLK_HVY_DRV.tpp.omx,ivt,PM +WLK_HVY_DRV_KEYIVT,trnskmPM_WLK_HVY_DRV.tpp.omx,ivtHVY,PM +WLK_HVY_DRV_FAR,trnskmPM_WLK_HVY_DRV.tpp.omx,fare,PM +WLK_HVY_DRV_DTIM,trnskmPM_WLK_HVY_DRV.tpp.omx,dtime,PM +WLK_HVY_DRV_DDIST,trnskmPM_WLK_HVY_DRV.tpp.omx,ddist,PM +WLK_HVY_DRV_WAUX,trnskmPM_WLK_HVY_DRV.tpp.omx,waux,PM +WLK_HVY_DRV_IWAIT,trnskmPM_WLK_HVY_DRV.tpp.omx,iwait,PM +WLK_HVY_DRV_XWAIT,trnskmPM_WLK_HVY_DRV.tpp.omx,xwait,PM +WLK_HVY_DRV_BOARDS,trnskmPM_WLK_HVY_DRV.tpp.omx,boards,PM +WLK_HVY_WLK_WAIT,trnskmPM_WLK_HVY_WLK.tpp.omx,wait,PM +WLK_HVY_WLK_TOTIVT,trnskmPM_WLK_HVY_WLK.tpp.omx,ivt,PM +WLK_HVY_WLK_KEYIVT,trnskmPM_WLK_HVY_WLK.tpp.omx,ivtHVY,PM +WLK_HVY_WLK_FAR,trnskmPM_WLK_HVY_WLK.tpp.omx,fare,PM +WLK_HVY_WLK_WAUX,trnskmPM_WLK_HVY_WLK.tpp.omx,waux,PM +WLK_HVY_WLK_IWAIT,trnskmPM_WLK_HVY_WLK.tpp.omx,iwait,PM +WLK_HVY_WLK_XWAIT,trnskmPM_WLK_HVY_WLK.tpp.omx,xwait,PM +WLK_HVY_WLK_BOARDS,trnskmPM_WLK_HVY_WLK.tpp.omx,boards,PM +WLK_LOC_DRV_WAIT,trnskmPM_WLK_LOC_DRV.tpp.omx,wait,PM +WLK_LOC_DRV_TOTIVT,trnskmPM_WLK_LOC_DRV.tpp.omx,ivt,PM +WLK_LOC_DRV_FAR,trnskmPM_WLK_LOC_DRV.tpp.omx,fare,PM +WLK_LOC_DRV_DTIM,trnskmPM_WLK_LOC_DRV.tpp.omx,dtime,PM +WLK_LOC_DRV_DDIST,trnskmPM_WLK_LOC_DRV.tpp.omx,ddist,PM +WLK_LOC_DRV_WAUX,trnskmPM_WLK_LOC_DRV.tpp.omx,waux,PM +WLK_LOC_DRV_IWAIT,trnskmPM_WLK_LOC_DRV.tpp.omx,iwait,PM +WLK_LOC_DRV_XWAIT,trnskmPM_WLK_LOC_DRV.tpp.omx,xwait,PM +WLK_LOC_DRV_BOARDS,trnskmPM_WLK_LOC_DRV.tpp.omx,boards,PM +WLK_LOC_WLK_WAIT,trnskmPM_WLK_LOC_WLK.tpp.omx,wait,PM +WLK_LOC_WLK_TOTIVT,trnskmPM_WLK_LOC_WLK.tpp.omx,ivt,PM +WLK_LOC_WLK_FAR,trnskmPM_WLK_LOC_WLK.tpp.omx,fare,PM +WLK_LOC_WLK_WAUX,trnskmPM_WLK_LOC_WLK.tpp.omx,waux,PM +WLK_LOC_WLK_IWAIT,trnskmPM_WLK_LOC_WLK.tpp.omx,iwait,PM +WLK_LOC_WLK_XWAIT,trnskmPM_WLK_LOC_WLK.tpp.omx,xwait,PM +WLK_LOC_WLK_BOARDS,trnskmPM_WLK_LOC_WLK.tpp.omx,boards,PM +WLK_LRF_DRV_WAIT,trnskmPM_WLK_LRF_DRV.tpp.omx,wait,PM +WLK_LRF_DRV_TOTIVT,trnskmPM_WLK_LRF_DRV.tpp.omx,ivt,PM +WLK_LRF_DRV_KEYIVT,trnskmPM_WLK_LRF_DRV.tpp.omx,ivtLRF,PM +WLK_LRF_DRV_FERRYIVT,trnskmPM_WLK_LRF_DRV.tpp.omx,ivtFerry,PM +WLK_LRF_DRV_FAR,trnskmPM_WLK_LRF_DRV.tpp.omx,fare,PM +WLK_LRF_DRV_DTIM,trnskmPM_WLK_LRF_DRV.tpp.omx,dtime,PM +WLK_LRF_DRV_DDIST,trnskmPM_WLK_LRF_DRV.tpp.omx,ddist,PM +WLK_LRF_DRV_WAUX,trnskmPM_WLK_LRF_DRV.tpp.omx,waux,PM +WLK_LRF_DRV_IWAIT,trnskmPM_WLK_LRF_DRV.tpp.omx,iwait,PM +WLK_LRF_DRV_XWAIT,trnskmPM_WLK_LRF_DRV.tpp.omx,xwait,PM +WLK_LRF_DRV_BOARDS,trnskmPM_WLK_LRF_DRV.tpp.omx,boards,PM +WLK_LRF_WLK_WAIT,trnskmPM_WLK_LRF_WLK.tpp.omx,wait,PM +WLK_LRF_WLK_TOTIVT,trnskmPM_WLK_LRF_WLK.tpp.omx,ivt,PM +WLK_LRF_WLK_KEYIVT,trnskmPM_WLK_LRF_WLK.tpp.omx,ivtLRF,PM +WLK_LRF_WLK_FERRYIVT,trnskmPM_WLK_LRF_WLK.tpp.omx,ivtFerry,PM +WLK_LRF_WLK_FAR,trnskmPM_WLK_LRF_WLK.tpp.omx,fare,PM +WLK_LRF_WLK_WAUX,trnskmPM_WLK_LRF_WLK.tpp.omx,waux,PM +WLK_LRF_WLK_IWAIT,trnskmPM_WLK_LRF_WLK.tpp.omx,iwait,PM +WLK_LRF_WLK_XWAIT,trnskmPM_WLK_LRF_WLK.tpp.omx,xwait,PM +WLK_LRF_WLK_BOARDS,trnskmPM_WLK_LRF_WLK.tpp.omx,boards,PM +WLK_TRN_WLK_IVT,trnskmAM_wlk_trn_wlk.tpp.omx,ivt,AM +WLK_TRN_WLK_IWAIT,trnskmAM_wlk_trn_wlk.tpp.omx,iwait,AM +WLK_TRN_WLK_XWAIT,trnskmAM_wlk_trn_wlk.tpp.omx,xwait,AM +WLK_TRN_WLK_WACC,trnskmAM_wlk_trn_wlk.tpp.omx,wacc,AM +WLK_TRN_WLK_WAUX,trnskmAM_wlk_trn_wlk.tpp.omx,waux,AM +WLK_TRN_WLK_WEGR,trnskmAM_wlk_trn_wlk.tpp.omx,wegr,AM +WLK_TRN_WLK_IVT,trnskmMD_wlk_trn_wlk.tpp.omx,ivt,MD +WLK_TRN_WLK_IWAIT,trnskmMD_wlk_trn_wlk.tpp.omx,iwait,MD +WLK_TRN_WLK_XWAIT,trnskmMD_wlk_trn_wlk.tpp.omx,xwait,MD +WLK_TRN_WLK_WACC,trnskmMD_wlk_trn_wlk.tpp.omx,wacc,MD +WLK_TRN_WLK_WAUX,trnskmMD_wlk_trn_wlk.tpp.omx,waux,MD +WLK_TRN_WLK_WEGR,trnskmMD_wlk_trn_wlk.tpp.omx,wegr,MD +WLK_TRN_WLK_IVT,trnskmPM_wlk_trn_wlk.tpp.omx,ivt,PM +WLK_TRN_WLK_IWAIT,trnskmPM_wlk_trn_wlk.tpp.omx,iwait,PM +WLK_TRN_WLK_XWAIT,trnskmPM_wlk_trn_wlk.tpp.omx,xwait,PM +WLK_TRN_WLK_WACC,trnskmPM_wlk_trn_wlk.tpp.omx,wacc,PM +WLK_TRN_WLK_WAUX,trnskmPM_wlk_trn_wlk.tpp.omx,waux,PM +WLK_TRN_WLK_WEGR,trnskmPM_wlk_trn_wlk.tpp.omx,wegr,PM diff --git a/scripts/stack_mode_choice.py b/scripts/stack_mode_choice.py deleted file mode 100644 index a886b3945..000000000 --- a/scripts/stack_mode_choice.py +++ /dev/null @@ -1,88 +0,0 @@ -import pandas as pd -import string - -f = pd.read_excel(open("../ModeChoice.xls"), sheetname=None) - -coeffs = {} -coeff_ind = None -specs = {} -ind = None - -for key, df in f.iteritems(): - if "debug" in key or "model" in key or "data" in key: - continue - print key - - """ - Really these lines just extract the relevant parts out of the spreadsheet - """ - - # the headers are actually split up among a couple of rows (ouch) - df.columns = list(df.iloc[1].values)[:6] + list(df.iloc[2].values)[6:] - - filt = '26 < = No <= 57' if key != "WorkBased" else '1 < = No <= 36' - coeffs[key] = df.query(filt).set_index('Token')['Formula for variable'] - if coeff_ind is None: - coeff_ind = coeffs[key].index - - df = df.iloc[2:] - - # this is not the best - there are a couple of cases where the specs - # differ across segments and we want them to be the same FOR NOW - they - # can differ once we get them all lined up - if key == "Escort": - df = df.query("No != 401 and No >= 123") - elif key == "WorkBased": - df = df.query("No != 407 and No >= 126") - else: - df = df.query("No >= 123") - - df = df.drop(['No', 'Token', 'Filter', 'Index'], axis=1) - df.columns = ['Description', 'Expression'] + list(df.columns[2:]) - df.set_index(['Description', 'Expression'], inplace=True) - - # these lines merge the alternatives that are used - # into a comma separated list - alt_l = [] - val_l = [] - for _, row in df.iterrows(): - alts = list(row.dropna().index) - vals = list(row.dropna()) - - # assert only 1 unique value - if len(vals) == 0: - vals = [0] - assert len(set(vals)) == 1 - val = vals[0] - - alt_l.append(string.join(alts, ",")) - val_l.append(val) - - # print alts - df = pd.DataFrame({ - 'Alternatives': alt_l, - key: val_l - }, index=df.index).set_index('Alternatives', append=True) - - if ind is None: - ind = df.index - - assert len(ind) == len(df) - - # ok, this is a bit bizarre, but it appears to me the coefficients are in - # the expressions column so you can just write 1s in the cells - if we're - # going to stack the columns we need to move the coeffs back to the cells - df = df.reset_index() - - # tmp = df.Expression - # df["Expression"].iloc[232:] = df.iloc[232:][key] - df[key].iloc[232:] = df["Expression"].iloc[232:] - - specs[key] = df[key].values - -df = pd.DataFrame(specs) -df.index = ind - -df.to_csv('tour_mode_choice.csv') - -pd.DataFrame(coeffs).loc[coeff_ind].to_csv('tour_mode_choice_coeffs.csv') diff --git a/scripts/stack_mode_choice2.py b/scripts/stack_mode_choice2.py deleted file mode 100644 index 9aad55710..000000000 --- a/scripts/stack_mode_choice2.py +++ /dev/null @@ -1,89 +0,0 @@ -import pandas as pd -import string - -f = pd.read_excel(open("../TripModeChoice.xls"), sheetname=None) - -coeffs = {} -coeff_ind = None -specs = {} -ind = None - -for key, df in f.iteritems(): - if "debug" in key or "model" in key or "data" in key: - continue - if key in ["School", "University", "Work", "WorkBased", "Escort"]: - continue - print key - - """ - Really these lines just extract the relevant parts out of the spreadsheet - """ - - # the headers are actually split up among a couple of rows (ouch) - df.columns = list(df.iloc[1].values)[:6] + list(df.iloc[2].values)[6:] - - filt = '1 < = No <= 49' - coeffs[key] = df.query(filt).set_index('Token')['Formula for variable'] - if coeff_ind is None: - coeff_ind = coeffs[key].index - - df = df.iloc[2:] - - # this is not the best - there are a couple of cases where the specs - # differ across segments and we want them to be the same FOR NOW - they - # can differ once we get them all lined up - if key == "Work": - df = df.query("No >= 141") - else: - df = df.query("No >= 144") - - df = df.drop(['No', 'Token', 'Filter', 'Index'], axis=1) - df.columns = ['Description', 'Expression'] + list(df.columns[2:]) - df.set_index(['Description', 'Expression'], inplace=True) - - # these lines merge the alternatives that are used - # into a comma separated list - alt_l = [] - val_l = [] - for _, row in df.iterrows(): - alts = list(row.dropna().index) - vals = list(row.dropna()) - - # assert only 1 unique value - if len(vals) == 0: - vals = [0] - - assert len(set(vals)) == 1 - val = vals[0] - - alt_l.append(string.join(alts, ",")) - val_l.append(val) - - # print alts - df = pd.DataFrame({ - 'Alternatives': alt_l, - key: val_l - }, index=df.index).set_index('Alternatives', append=True) - - if ind is None: - ind = df.index - - assert len(ind) == len(df) - - # ok, this is a bit bizarre, but it appears to me the coefficients are in - # the expressions column so you can just write 1s in the cells - if we're - # going to stack the columns we need to move the coeffs back to the cells - df = df.reset_index() - - # tmp = df.Expression - # df["Expression"].iloc[232:] = df.iloc[232:][key] - df[key].iloc[319:] = df["Expression"].iloc[319:] - - specs[key] = df[key].values - -df = pd.DataFrame(specs) -df.index = ind - -df.to_csv('trip_mode_choice.csv') - -pd.DataFrame(coeffs).loc[coeff_ind].to_csv('trip_mode_choice_coeffs.csv') diff --git a/scripts/verify_results.py b/scripts/verify_results.py new file mode 100644 index 000000000..09fdd22cb --- /dev/null +++ b/scripts/verify_results.py @@ -0,0 +1,706 @@ + +############################################################# +# ActivitySim verification against TM1 +# Ben Stabler, ben.stabler@rsginc.com, 02/22/19 +# C:\projects\activitysim\verification>python compare_results.py +############################################################# + +import pandas as pd +import openmatrix as omx + +############################################################# +# INPUTS +############################################################# + +pipeline_filename = 'asim/pipeline.h5' + +distance_matrix_filename = "nonmotskm.omx" +asim_nmtf_alts_filename = "non_mandatory_tour_frequency_alternatives.csv" +tm1_taz_data_filename = "tazData.csv" + +tm1_access_filename = "tm1/accessibility.csv" +tm1_sp_filename = "tm1/ShadowPricing_9.csv" +tm1_work_filename = "tm1/wsLocResults_1.csv" +tm1_ao_filename = "tm1/aoResults.csv" +tm1_hh_filename = "tm1/householdData_1.csv" +tm1_cdap_filename = "tm1/cdapResults.csv" +tm1_per_filename = "tm1/personData_1.csv" +tm1_tour_filename = "tm1/indivTourData_1.csv" +tm1_jtour_filename = "tm1/jointTourData_1.csv" +tm1_trips_filename = "tm1/indivTripData_1.csv" +tm1_jtrips_filename = "tm1/jointTripData_1.csv" + +asim_sp_work_filename = "asim/trace.shadow_price_workplace_modeled_size_10.csv" +asim_sp_school_filename = "asim/trace.shadow_price_school_modeled_size_10.csv" +asim_sp_school_no_sp_filename = "asim/trace.shadow_price_school_modeled_size_1.csv" + +############################################################# +# OUTPUT FILES FOR DEBUGGING +############################################################# + +asim_access_filename = "asim/asim_access.csv" +asim_per_filename = "asim/asim_per.csv" +asim_hh_filename = "asim/asim_hh.csv" +asim_tour_filename = "asim/asim_tours.csv" +asim_trips_filename = "asim/asim_trips.csv" + +############################################################# +# COMMON LABELS +############################################################# + +ptypes = ["", "Full-time worker", "Part-time worker", "University student", "Non-worker", + "Retired", "Student of driving age", "Student of non-driving age", + "Child too young for school"] + +mode_labels = ["", "DRIVEALONEFREE", "DRIVEALONEPAY", "SHARED2FREE", "SHARED2PAY", "SHARED3FREE", + "SHARED3PAY", "WALK", "BIKE", "WALK_LOC", "WALK_LRF", "WALK_EXP", "WALK_HVY", + "WALK_COM", "DRIVE_LOC", "DRIVE_LRF", "DRIVE_EXP", "DRIVE_HVY", "DRIVE_COM"] + +############################################################# +# DISTANCE SKIM +############################################################# + +# read distance matrix and convert to 1D array +distmat = omx.open_file(distance_matrix_filename)["DIST"][:] + +############################################################# +# EXPORT TABLES +############################################################# + +# write tables for verification +access = pd.read_hdf(pipeline_filename, "accessibility/compute_accessibility") +access.to_csv(asim_access_filename, index=False) + +hh = pd.read_hdf(pipeline_filename, "households/joint_tour_frequency") +hh["household_id"] = hh.index +hh.to_csv(asim_hh_filename, index=False) + +per = pd.read_hdf(pipeline_filename, "persons/non_mandatory_tour_frequency") +per["person_id"] = per.index +per.to_csv(asim_per_filename, index=False) + +tours = pd.read_hdf(pipeline_filename, "tours/stop_frequency") +tours["tour_id"] = tours.index +tours.to_csv(asim_tour_filename, index=False) + +trips = pd.read_hdf(pipeline_filename, "trips/trip_mode_choice") +trips["trip_id"] = trips.index +trips.to_csv(asim_trips_filename, index=False) + +############################################################# +# AGGREGATE +############################################################# + +# accessibilities + +tm1_access = pd.read_csv(tm1_access_filename) +asim_access = pd.read_csv(asim_access_filename) + +access = pd.concat([tm1_access, asim_access], axis=1) +access.to_csv("outputs/access.csv", na_rep=0) + +############################################################# +# HOUSEHOLD AND PERSON +############################################################# + +# work and school location + +tm1_markets = ["work_low", "work_med", "work_high", "work_high", "work_very high", "university", + "school_high", "school_grade"] +asim_markets = ["work_low", "work_med", "work_high", "work_high", "work_veryhigh", "university", + "highschool", "gradeschool"] + +tm1 = pd.read_csv(tm1_sp_filename) + +tm1 = tm1.groupby(tm1["zone"]).sum() +tm1["zone"] = tm1.index +tm1 = tm1.loc[tm1["zone"] > 0] + +asim = pd.read_csv(asim_sp_work_filename) +asim_sch = pd.read_csv(asim_sp_school_filename) +asim_sch_no_sp = pd.read_csv(asim_sp_school_no_sp_filename) + +# grade school not shadow priced +asim_sch["gradeschool"] = asim_sch_no_sp["gradeschool"] + +asim = asim.set_index("TAZ", drop=False) +asim_sch = asim_sch.set_index("TAZ", drop=False) + +asim["gradeschool"] = asim_sch["gradeschool"].loc[asim["TAZ"]].tolist() +asim["highschool"] = asim_sch["highschool"].loc[asim["TAZ"]].tolist() +asim["university"] = asim_sch["university"].loc[asim["TAZ"]].tolist() + +ws_size = tm1[["zone"]] +for i in range(len(tm1_markets)): + ws_size[tm1_markets[i] + "_modeledDests"] = tm1[tm1_markets[i] + "_modeledDests"] + ws_size[asim_markets[i] + "_asim"] = asim[asim_markets[i]] + +ws_size.to_csv("outputs/work-school-location.csv", na_rep=0) + +# work county to county flows + +tm1_work = pd.read_csv(tm1_work_filename) +tazs = pd.read_csv(tm1_taz_data_filename) + +counties = ["", "SF", "SM", "SC", "ALA", "CC", "SOL", "NAP", "SON", "MAR"] +tazs["COUNTYNAME"] = pd.Series(counties)[tazs["COUNTY"].tolist()].tolist() + +tazs = tazs.set_index("ZONE", drop=False) + +tm1_work["HomeCounty"] = tazs["COUNTYNAME"].loc[tm1_work["HomeTAZ"]].tolist() +tm1_work["WorkCounty"] = tazs["COUNTYNAME"].loc[tm1_work["WorkLocation"]].tolist() + +tm1_work_counties = tm1_work.groupby(["HomeCounty", "WorkCounty"]).count()["HHID"] +tm1_work_counties = tm1_work_counties.reset_index() +tm1_work_counties = tm1_work_counties.pivot(index="HomeCounty", columns="WorkCounty") + +asim_cdap = pd.read_csv(asim_per_filename) + +asim_cdap["HomeCounty"] = tazs["COUNTYNAME"].loc[asim_cdap["home_taz"]].tolist() +asim_cdap["WorkCounty"] = tazs["COUNTYNAME"].loc[asim_cdap["workplace_taz"]].tolist() + +asim_work_counties = asim_cdap.groupby(["HomeCounty", "WorkCounty"]).count()["household_id"] +asim_work_counties = asim_work_counties.reset_index() +asim_work_counties = asim_work_counties.pivot(index="HomeCounty", columns="WorkCounty") + +tm1_work_counties.to_csv("outputs/tm1_work_counties.csv", na_rep=0) + +asim_work_counties.to_csv("outputs/asim_work_counties.csv", na_rep=0) + +# auto ownership - count of hhs by num autos by taz + +tm1_ao = pd.read_csv(tm1_ao_filename) +tm1_hh = pd.read_csv(tm1_hh_filename) + +tm1_ao = tm1_ao.set_index("HHID", drop=False) + +tm1_hh["ao"] = tm1_ao["AO"].loc[tm1_hh["hh_id"]].tolist() + +tm1_autos = tm1_hh.groupby(["taz", "ao"]).count()["hh_id"] +tm1_autos = tm1_autos.reset_index() +tm1_autos = tm1_autos.pivot(index="taz", columns="ao") + +tm1_autos.to_csv("outputs/tm1_autos.csv", na_rep=0) + +asim_ao = pd.read_csv(asim_hh_filename) + +asim_autos = asim_ao.groupby(["TAZ", "auto_ownership"]).count()["SERIALNO"] +asim_autos = asim_autos.reset_index() +asim_autos = asim_autos.pivot(index="TAZ", columns="auto_ownership") + +asim_autos.to_csv("outputs/asim_autos.csv", na_rep=0) + +# cdap - ptype count and ptype by M,N,H + +tm1_cdap = pd.read_csv(tm1_cdap_filename) + +tm1_cdap_sum = tm1_cdap.groupby(["PersonType", "ActivityString"]).count()["HHID"] +tm1_cdap_sum = tm1_cdap_sum.reset_index() +tm1_cdap_sum = tm1_cdap_sum.pivot(index="PersonType", columns="ActivityString") + +tm1_cdap_sum.to_csv("outputs/tm1_cdap.csv", na_rep=0) + +asim_cdap = pd.read_csv(asim_per_filename) + +asim_cdap_sum = asim_cdap.groupby(["ptype", "cdap_activity"]).count()["household_id"] +asim_cdap_sum = asim_cdap_sum.reset_index() +asim_cdap_sum = asim_cdap_sum.pivot(index="ptype", columns="cdap_activity") + +asim_cdap_sum.to_csv("outputs/asim_cdap.csv", na_rep=0) + +# free parking by ptype + +tm1_per = pd.read_csv(tm1_per_filename) +tm1_per["fp_choice"] = (tm1_per["fp_choice"] == 1) # 1=free, 2==pay + +tm1_work = pd.read_csv(tm1_work_filename) +tm1_work = tm1_work.set_index("PersonID", drop=False) +tm1_per["WorkLocation"] = tm1_work["WorkLocation"].loc[tm1_per["person_id"]].tolist() +tm1_fp = tm1_per[tm1_per["WorkLocation"] > 0] + +tm1_fp = tm1_fp.groupby(["type", "fp_choice"]).count()["hh_id"] +tm1_fp = tm1_fp.reset_index() +tm1_fp = tm1_fp.pivot(index="type", columns="fp_choice") + +asim_cdap["ptypename"] = pd.Series(ptypes)[asim_cdap["ptype"].tolist()].tolist() + +asim_fp = asim_cdap.groupby(["ptypename", "free_parking_at_work"]).count()["household_id"] +asim_fp = asim_fp.reset_index() +asim_fp = asim_fp.pivot(index="ptypename", columns="free_parking_at_work") + +fp = pd.concat([tm1_fp, asim_fp], axis=1) + +fp.to_csv("outputs/fp.csv", na_rep=0) + +# value of time + +tm1_per = pd.read_csv(tm1_per_filename) + +tm1_per["vot_bin"] = pd.cut(tm1_per["value_of_time"], range(51)) + +asim_per = pd.read_csv(asim_per_filename) + +asim_per["vot_bin"] = pd.cut(asim_per["value_of_time"], range(51)) + +vot = pd.concat( + [tm1_per.groupby(["vot_bin"]).count()["hh_id"], + asim_per.groupby(["vot_bin"]).count()["household_id"]], axis=1) + +vot.to_csv("outputs/vot.csv", na_rep=0) + +############################################################# +# TOUR +############################################################# + +# indiv mandatory tour freq + +tm1_per = pd.read_csv(tm1_per_filename) +tm1_hh = pd.read_csv(tm1_hh_filename) + +tm1_hh = tm1_hh.set_index("hh_id", drop=False) +tm1_per["hhsize"] = tm1_hh["size"].loc[tm1_per["hh_id"]].tolist() + +tm1_imf_codes = ["", "0", "work1", "work2", "school1", "school2", "work_and_school"] + +# indexing starts at 1 +tm1_per["imf_choice_name"] = pd.Series(tm1_imf_codes)[(tm1_per["imf_choice"]+1).tolist()].tolist() + +tm1_imf = tm1_per.groupby(["type", "imf_choice_name"]).count()["hh_id"] +tm1_imf = tm1_imf.reset_index() +tm1_imf = tm1_imf.pivot(index="type", columns="imf_choice_name") + +tm1_imf.to_csv("outputs/tm1_imtf.csv", na_rep=0) + +asim_ao = asim_ao.set_index("household_id", drop=False) + +asim_cdap["hhsize"] = asim_ao["hhsize"].loc[asim_cdap["household_id"]].tolist() +asim_cdap["ptypename"] = pd.Series(ptypes)[asim_cdap["ptype"].tolist()].tolist() + +asim_imf = pd.read_csv(asim_per_filename) + +asim_imf["ptypename"] = pd.Series(ptypes)[asim_imf["ptype"].tolist()].tolist() +asim_imf["mandatory_tour_frequency"] = pd.Categorical(asim_imf["mandatory_tour_frequency"], + categories=tm1_imf_codes) +asim_imf["mandatory_tour_frequency"][asim_imf["mandatory_tour_frequency"].isnull()] = "0" + +asim_imf = asim_imf.groupby(["ptypename", "mandatory_tour_frequency"]).count()["household_id"] +asim_imf = asim_imf.reset_index() +asim_imf = asim_imf.pivot(index="ptypename", columns="mandatory_tour_frequency") + +asim_imf.to_csv("outputs/asim_imtf.csv", na_rep=0) + +# indiv mand tour departure and duration + +tm1_tours = pd.read_csv(tm1_tour_filename) + +tm1_tours = tm1_tours[tm1_tours["tour_category"] == "MANDATORY"] + +tm1_tours["tour_purpose"][tm1_tours["tour_purpose"].str.contains("work")] = "work" +tm1_tours["tour_purpose"][tm1_tours["tour_purpose"].str.contains("s")] = "school" + +tm1_mtdd = tm1_tours.groupby(["start_hour", "end_hour", "tour_purpose"]).count()["hh_id"] +tm1_mtdd = tm1_mtdd.reset_index() + +tm1_mtdd_sch = tm1_mtdd[tm1_mtdd["tour_purpose"] == "school"][[ + "start_hour", "end_hour", "hh_id"]].pivot(index="start_hour", columns="end_hour") +tm1_mtdd_work = tm1_mtdd[tm1_mtdd["tour_purpose"] == "work"][[ + "start_hour", "end_hour", "hh_id"]].pivot(index="start_hour", columns="end_hour") + + +asim_tours = pd.read_csv(asim_tour_filename) + +asim_tours_man = asim_tours[asim_tours["tour_category"] == "mandatory"] + +asim_mtdd = asim_tours_man.groupby(["start", "end", "tour_type"]).count()["household_id"] +asim_mtdd = asim_mtdd.reset_index() + +asim_mtdd_sch = asim_mtdd[asim_mtdd["tour_type"] == "school"][[ + "start", "end", "household_id"]].pivot(index="start", columns="end") +asim_mtdd_work = asim_mtdd[asim_mtdd["tour_type"] == "work"][[ + "start", "end", "household_id"]].pivot(index="start", columns="end") + +tm1_mtdd_sch.to_csv("outputs/tm1_mtdd_school.csv", na_rep=0) +tm1_mtdd_work.to_csv("outputs/tm1_mtdd_work.csv", na_rep=0) + +asim_mtdd_sch.to_csv("outputs/asim_mtdd_school.csv", na_rep=0) +asim_mtdd_work.to_csv("outputs/asim_mtdd_work.csv", na_rep=0) + +# joint tour frequency + +jtf_labels = ["", "0_tours", "1_Shop", "1_Main", "1_Eat", "1_Visit", "1_Disc", + "2_SS", "2_SM", "2_SE", "2_SV", "2_SD", "2_MM", "2_ME", "2_MV", "2_MD", "2_EE", + "2_EV", "2_ED", "2_VV", "2_VD", "2_DD"] + +tm1_jtf = tm1_hh +tm1_jtf = tm1_jtf[tm1_jtf["jtf_choice"] > 0] +tm1_jtf["jtf_choice_label"] = pd.Series(jtf_labels)[tm1_jtf["jtf_choice"].tolist()].tolist() + +asim_jtf = pd.read_csv(asim_hh_filename) + +asim_jtf = asim_jtf[asim_jtf["joint_tour_frequency"] != ""] + +jtf = pd.concat([tm1_jtf.groupby("jtf_choice_label").count()["hh_id"], + asim_jtf.groupby("joint_tour_frequency").count()["household_id"]], axis=1) + +jtf.to_csv("outputs/jtf.csv", na_rep=0) + +# joint tour comp + +tm1_jtours = pd.read_csv(tm1_jtour_filename) + +comp_labels = ["", "adult", "children", "mixed"] + +tm1_jtours["tour_composition_labels"] = pd.Series(comp_labels)[ + tm1_jtours["tour_composition"].tolist()].tolist() + +tm1_jtour_comp = tm1_jtours.groupby(["tour_purpose", "tour_composition_labels"]).count()["hh_id"] +tm1_jtour_comp = tm1_jtour_comp.reset_index() +tm1_jtour_comp = tm1_jtour_comp.pivot(index="tour_purpose", columns="tour_composition_labels") + + +asim_jtours = pd.read_csv(asim_tour_filename) + +asim_jtours = asim_jtours[asim_jtours["tour_category"] == "joint"] + +asim_jtour_comp = asim_jtours.groupby(["tour_type", "composition"]).count()["household_id"] +asim_jtour_comp = asim_jtour_comp.reset_index() +asim_jtour_comp = asim_jtour_comp.pivot(index="tour_type", columns="composition") + +tm1_jtour_comp.to_csv("outputs/tm1_jtour_comp.csv", na_rep=0) +asim_jtour_comp.to_csv("outputs/asim_jtour_comp.csv", na_rep=0) + +# joint tour destination + +tm1_jtours["distance"] = distmat[tm1_jtours["orig_taz"]-1, tm1_jtours["dest_taz"]-1] +tm1_jtours["dist_bin"] = pd.cut(tm1_jtours["distance"], range(51)) + +asim_jtours["distance"] = distmat[asim_jtours["origin"].astype(int)-1, + asim_jtours["destination"].astype(int)-1] +asim_jtours["dist_bin"] = pd.cut(asim_jtours["distance"], range(51)) + +jtour_dist = pd.concat([tm1_jtours.groupby(["dist_bin"]).count()["hh_id"], + asim_jtours.groupby(["dist_bin"]).count()["household_id"]], axis=1) + +jtour_dist.to_csv("outputs/jtour_dist.csv", na_rep=0) + +# joint tour tdd + +tm1_jtours_tdd = tm1_jtours.groupby(["start_hour", "end_hour"]).count()["hh_id"] +tm1_jtours_tdd = tm1_jtours_tdd.reset_index() +tm1_jtours_tdd = tm1_jtours_tdd.pivot(index="start_hour", columns="end_hour") + +tm1_jtours_tdd.to_csv("outputs/tm1_jtours_tdd.csv", na_rep=0) + +asim_jtours_tdd = asim_jtours.groupby(["start", "end"]).count()["household_id"] +asim_jtours_tdd = asim_jtours_tdd.reset_index() +asim_jtours_tdd = asim_jtours_tdd.pivot(index="start", columns="end") + +asim_jtours_tdd.to_csv("outputs/asim_jtours_tdd.csv", na_rep=0) + + +# non-mand tour freq + +tm1_per = pd.read_csv(tm1_per_filename) + +# 0 doesn't participate in choice model therefore 0 tours, and -1 to align with asim +tm1_per["inmf_choice"][tm1_per["inmf_choice"] == 0] = 1 +tm1_per["inmf_choice"] = tm1_per["inmf_choice"] - 1 + +tm1_nmtf_sum = tm1_per.groupby(["inmf_choice"]).count()["hh_id"] + +alts = pd.read_csv(asim_nmtf_alts_filename) +alts["ID"] = range(len(alts)) + +asim_per_nmtf = pd.read_csv(asim_per_filename) +asim_per_nmtf["ptypename"] = pd.Series(ptypes)[asim_per_nmtf["ptype"].tolist()].tolist() + +asim_nmtf_sum = asim_per_nmtf.groupby(["non_mandatory_tour_frequency"]).count()["household_id"] + +alts = pd.concat([alts, tm1_nmtf_sum, asim_nmtf_sum], axis=1) + +alts.to_csv("outputs/nmtf.csv", na_rep=0) + + +# non_mandatory_tour_destination + +tm1_tours = pd.read_csv(tm1_tour_filename) + +tm1_tours["distance"] = distmat[tm1_tours["orig_taz"]-1, tm1_tours["dest_taz"]-1] +tm1_tours["dist_bin"] = pd.cut(tm1_tours["distance"], range(51)) + +tm1_tours_nm = tm1_tours[tm1_tours["tour_category"] == "INDIVIDUAL_NON_MANDATORY"] + + +asim_nm_tours = pd.read_csv(asim_tour_filename) +asim_nm_tours = asim_nm_tours[asim_nm_tours["tour_category"] == "non_mandatory"] + +asim_nm_tours["distance"] = distmat[asim_nm_tours["origin"].astype(int)-1, + asim_nm_tours["destination"].astype(int)-1] +asim_nm_tours["dist_bin"] = pd.cut(asim_nm_tours["distance"], range(51)) + +nmtd_dist = pd.concat([tm1_tours_nm.groupby(["dist_bin"]).count()["hh_id"], + asim_nm_tours.groupby(["dist_bin"]).count()["household_id"]], axis=1) + +nmtd_dist.to_csv("outputs/nmtd_dist.csv", na_rep=0) + +# non_mandatory_tour_scheduling + +tm1_nmtours_tdd = tm1_tours_nm.groupby(["start_hour", "end_hour"]).count()["hh_id"] +tm1_nmtours_tdd = tm1_nmtours_tdd.reset_index() +tm1_nmtours_tdd = tm1_nmtours_tdd.pivot(index="start_hour", columns="end_hour") + +tm1_nmtours_tdd.to_csv("outputs/tm1_nmtours_tdd.csv", na_rep=0) + +asim_nmtours_tdd = asim_nm_tours.groupby(["start", "end"]).count()["household_id"] +asim_nmtours_tdd = asim_nmtours_tdd.reset_index() +asim_nmtours_tdd = asim_nmtours_tdd.pivot(index="start", columns="end") + +asim_nmtours_tdd.to_csv("outputs/asim_nmtours_tdd.csv", na_rep=0) + +# tour mode choice + +tm1_tours = pd.read_csv(tm1_tour_filename) +tm1_jtours = pd.read_csv(tm1_jtour_filename) + +tm1_tours["tour_mode_labels"] = pd.Series(mode_labels)[tm1_tours["tour_mode"].tolist()].tolist() +tm1_tours["tour_mode_labels"] = pd.Categorical(tm1_tours["tour_mode_labels"], + categories=mode_labels) + +tm1_jtours["tour_mode_labels"] = pd.Series(mode_labels)[tm1_jtours["tour_mode"].tolist()].tolist() +tm1_jtours["tour_mode_labels"] = pd.Categorical(tm1_jtours["tour_mode_labels"], + categories=mode_labels) + +tm1_nmn_tour_mode = tm1_tours.groupby(["tour_mode_labels", "tour_category"]).count()["hh_id"] +tm1_nmn_tour_mode = tm1_nmn_tour_mode.reset_index() +tm1_nmn_tour_mode = tm1_nmn_tour_mode.pivot(index="tour_mode_labels", columns="tour_category") + +tm1_jtour_mode = tm1_jtours.groupby(["tour_mode_labels", "tour_category"]).count()["hh_id"] +tm1_jtour_mode = tm1_jtour_mode.reset_index() +tm1_jtour_mode = tm1_jtour_mode.pivot(index="tour_mode_labels", columns="tour_category") + +tm1_tour_mode = pd.concat([tm1_nmn_tour_mode, tm1_jtour_mode], axis=1) + +tm1_tour_mode.columns = ["atwork", "non_mandatory", "mandatory", "joint"] +tm1_tour_mode = tm1_tour_mode[["atwork", "joint", "mandatory", "non_mandatory"]] + + +asim_tours = pd.read_csv(asim_tour_filename) +asim_tours["tour_mode"] = pd.Categorical(asim_tours["tour_mode"], categories=mode_labels) + +asim_tour_mode = asim_tours.groupby(["tour_mode", "tour_category"]).count()["household_id"] +asim_tour_mode = asim_tour_mode.reset_index() +asim_tour_mode = asim_tour_mode.pivot(index="tour_mode", columns="tour_category") + +tm1_tour_mode.to_csv("outputs/tm1_tour_mode.csv", na_rep=0) + +asim_tour_mode.to_csv("outputs/asim_tour_mode.csv", na_rep=0) + +# atwork_subtour_frequency + +tm1_work_tours = tm1_tours[tm1_tours["tour_purpose"].str.startswith("work")] + +asim_work_tours = asim_tours[asim_tours["primary_purpose"] == "work"] + +tm1_atwork_freq_strs = ["", "no_subtours", "eat", "business1", + "maint", "business2", "eat_business"] + +tm1_work_tours["atWork_freq_str"] = pd.Series(tm1_atwork_freq_strs)[ + tm1_work_tours["atWork_freq"].tolist()].tolist() + +atwork_tour_freq = pd.concat([ + tm1_work_tours.groupby(["atWork_freq_str"]).count()["hh_id"], + asim_work_tours.groupby(["atwork_subtour_frequency"]).count()["household_id"]], axis=1) + +atwork_tour_freq.to_csv("outputs/atwork_tour_freq.csv", na_rep=0) + +# atwork_subtour_destination + +tm1_tours = pd.read_csv(tm1_tour_filename) + +tm1_tours["distance"] = distmat[tm1_tours["orig_taz"]-1, tm1_tours["dest_taz"]-1] + +tm1_tours_atw = tm1_tours[tm1_tours["tour_category"] == "AT_WORK"] + +asim_atw_tours = pd.read_csv(asim_tour_filename) +asim_atw_tours = asim_atw_tours[asim_atw_tours["tour_category"] == "atwork"] + +asim_atw_tours["distance"] = distmat[asim_atw_tours["origin"].astype(int)-1, + asim_atw_tours["destination"].astype(int)-1] + +tm1_tours_atw["dist_bin"] = pd.cut(tm1_tours_atw["distance"], range(51)) +asim_atw_tours["dist_bin"] = pd.cut(asim_atw_tours["distance"], range(51)) + +atw_dist = pd.concat([tm1_tours_atw.groupby(["dist_bin"]).count()["hh_id"], + asim_atw_tours.groupby(["dist_bin"]).count()["household_id"]], axis=1) + +atw_dist.to_csv("outputs/atwork_dist.csv", na_rep=0) + +# atwork_subtour_scheduling + +tm1_tours_atw_tdd = tm1_tours_atw.groupby(["start_hour", "end_hour"]).count()["hh_id"] +tm1_tours_atw_tdd = tm1_tours_atw_tdd.reset_index() +tm1_tours_atw_tdd = tm1_tours_atw_tdd.pivot(index="start_hour", columns="end_hour") + +tm1_tours_atw_tdd.to_csv("outputs/tm1_atwork_tours_tdd.csv", na_rep=0) + +asim_atw_tours_tdd = asim_atw_tours.groupby(["start", "end"]).count()["household_id"] +asim_atw_tours_tdd = asim_atw_tours_tdd.reset_index() +asim_atw_tours_tdd = asim_atw_tours_tdd.pivot(index="start", columns="end") + +asim_atw_tours_tdd.to_csv("outputs/asim_atwork_tours_tdd.csv", na_rep=0) + +# atwork_subtour_mode_choice - see tour mode above + +# tour stop frequency + +tm1_tours = pd.read_csv(tm1_tour_filename) +tm1_jtours = pd.read_csv(tm1_jtour_filename) + +tm1_tours["tour_purpose_simple"] = tm1_tours["tour_purpose"] +tm1_tours["tour_purpose_simple"] = tm1_tours["tour_purpose_simple"].str.replace("atwork_", "") +tm1_tours["tour_purpose_simple"][tm1_tours["tour_purpose_simple"]. + str.contains("work_")] = "work" +tm1_tours["tour_purpose_simple"][tm1_tours["tour_purpose_simple"]. + str.contains("school_")] = "school" +tm1_tours["tour_purpose_simple"][tm1_tours["tour_purpose_simple"]. + str.contains("university")] = "school" +tm1_tours["tour_purpose_simple"][tm1_tours["tour_purpose_simple"]. + str.contains("escort_")] = "escort" + +tm1_tours_atw = tm1_tours[tm1_tours["tour_category"] == "AT_WORK"] +tm1_tours_nmn = tm1_tours[tm1_tours["tour_category"] != "AT_WORK"] + +tm1_tours_nmn["tsf"] = tm1_tours_nmn[ + "num_ob_stops"].astype(str) + "-" + tm1_tours_nmn["num_ib_stops"].astype(str) + +tm1_stop_freq = tm1_tours_nmn.groupby(["tsf", "tour_purpose_simple"]).count()["hh_id"] +tm1_stop_freq = tm1_stop_freq.reset_index() +tm1_stop_freq = tm1_stop_freq.pivot(index="tsf", columns="tour_purpose_simple") + +tm1_jtours["tsf"] = tm1_jtours[ + "num_ob_stops"].astype(str) + "-" + tm1_jtours["num_ib_stops"].astype(str) +tm1_tours_atw["tsf"] = tm1_tours_atw[ + "num_ob_stops"].astype(str) + "-" + tm1_tours_atw["num_ib_stops"].astype(str) + +tm1_stop_freq_joint = tm1_jtours.groupby(["tsf"]).count()["hh_id"] +tm1_stop_freq_atwork = tm1_tours_atw.groupby(["tsf"]).count()["hh_id"] + +tm1_stop_freq = pd.concat([tm1_stop_freq, tm1_stop_freq_joint, tm1_stop_freq_atwork], axis=1) + +asim_tours = pd.read_csv(asim_tour_filename) + +asim_nmn_tours = asim_tours[(asim_tours["tour_category"] == "mandatory") | + (asim_tours["tour_category"] == "non_mandatory")] +asim_joint_tours = asim_tours[asim_tours["tour_category"] == "joint"] +asim_atw_tours = asim_tours[asim_tours["tour_category"] == "atwork"] + +asim_stop_freq = asim_nmn_tours.groupby(["stop_frequency", "tour_type"]).count()["household_id"] +asim_stop_freq = asim_stop_freq.reset_index() +asim_stop_freq = asim_stop_freq.pivot(index="stop_frequency", columns="tour_type") + +asim_stop_freq_joint = asim_joint_tours.groupby(["stop_frequency"]).count()["household_id"] +asim_stop_freq_atwork = asim_atw_tours.groupby(["stop_frequency"]).count()["household_id"] + +asim_stop_freq = pd.concat([asim_stop_freq, asim_stop_freq_joint, asim_stop_freq_atwork], axis=1) + +tm1_stop_freq.to_csv("outputs/tm1_stop_freq.csv", na_rep=0) + +asim_stop_freq.to_csv("outputs/asim_stop_freq.csv", na_rep=0) + +############################################################# +# TRIP +############################################################# + +# trip purpose + +tm1_trips = pd.read_csv(tm1_trips_filename) +tm1_jtrips = pd.read_csv(tm1_jtrips_filename) + +tm1_trips["orig_purpose"][tm1_trips["orig_purpose"] == "university"] = "univ" +tm1_trips["orig_purpose"] = pd.Categorical(tm1_trips["orig_purpose"]) + +tm1_jtrips["orig_purpose"] = pd.Categorical(tm1_jtrips["orig_purpose"], + categories=tm1_trips["orig_purpose"].cat.categories) + +tm1_trip_purp = tm1_trips.groupby(["orig_purpose", "tour_category"]).count()["hh_id"] +tm1_trip_purp = tm1_trip_purp.reset_index() +tm1_trip_purp = tm1_trip_purp.pivot(index="orig_purpose", columns="tour_category") + +tm1_jtrip_purp = tm1_jtrips.groupby(["orig_purpose"]).count()["hh_id"] + +tm1_trip_purp = pd.concat([tm1_trip_purp, tm1_jtrip_purp], axis=1) + +tm1_trip_purp.columns = ["atwork", "non_mandatory", "mandatory", "joint"] +tm1_trip_purp = tm1_trip_purp[["atwork", "joint", "mandatory", "non_mandatory"]] + + +asim_trips = pd.read_csv(asim_trips_filename) +asim_tours = pd.read_csv(asim_tour_filename) + +asim_tours = asim_tours.set_index("tour_id", drop=False) + +asim_trips["tour_category"] = asim_tours["tour_category"].loc[asim_trips["tour_id"]].tolist() + +asim_trip_purp = asim_trips.groupby(["purpose", "tour_category"]).count()["household_id"] +asim_trip_purp = asim_trip_purp.reset_index() +asim_trip_purp = asim_trip_purp.pivot(index="purpose", columns="tour_category") + +tm1_trip_purp.to_csv("outputs/tm1_trip_purp.csv", na_rep=0) + +asim_trip_purp.to_csv("outputs/asim_trip_purp.csv", na_rep=0) + +# trip destination + +tm1_trips["distance"] = distmat[tm1_trips["orig_taz"]-1, tm1_trips["dest_taz"]-1] +tm1_jtrips["distance"] = distmat[tm1_jtrips["orig_taz"]-1, tm1_jtrips["dest_taz"]-1] +asim_trips["distance"] = distmat[asim_trips["origin"]-1, asim_trips["destination"]-1] + +tm1_trips["dist_bin"] = pd.cut(tm1_trips["distance"], range(51)) +tm1_jtrips["dist_bin"] = pd.cut(tm1_jtrips["distance"], range(51)) +asim_trips["dist_bin"] = pd.cut(asim_trips["distance"], range(51)) + +trips_dist = pd.concat([tm1_trips.groupby(["dist_bin"]).count()["hh_id"] + + tm1_jtrips.groupby(["dist_bin"]).count()["hh_id"], + asim_trips.groupby(["dist_bin"]).count()["household_id"]], axis=1) + +trips_dist.to_csv("outputs/trips_dist.csv", na_rep=0) + +# trip scheduling + +tm1_trips_tdd = tm1_trips.groupby([ + "depart_hour"]).count()["hh_id"] + tm1_jtrips.groupby(["depart_hour"]).count()["hh_id"] + +asim_trips_tdd = asim_trips.groupby(["depart"]).count()["household_id"] + +trips_depart = pd.concat([tm1_trips_tdd, asim_trips_tdd], axis=1) + +trips_depart.to_csv("outputs/trips_depart.csv", na_rep=0) + +# trip mode share by tour purpose + +tm1_trips["trip_mode_str"] = pd.Series(mode_labels)[tm1_trips["trip_mode"].tolist()].tolist() +tm1_trips["trip_mode_str"] = pd.Categorical(tm1_trips["trip_mode_str"], categories=mode_labels) + +tm1_jtrips["trip_mode_str"] = pd.Series(mode_labels)[tm1_jtrips["trip_mode"].tolist()].tolist() +tm1_jtrips["trip_mode_str"] = pd.Categorical(tm1_jtrips["trip_mode_str"], categories=mode_labels) + +tm1_trip_mode = tm1_trips.groupby(["trip_mode_str", "tour_category"]).count()["hh_id"] +tm1_trip_mode = tm1_trip_mode.reset_index() +tm1_trip_mode = tm1_trip_mode.pivot(index="trip_mode_str", columns="tour_category") + +tm1_jtrip_mode = tm1_jtrips.groupby(["trip_mode_str"]).count()["hh_id"] + +tm1_trip_mode = pd.concat([tm1_trip_mode, tm1_jtrip_mode], axis=1) + +tm1_trip_mode.columns = ["atwork", "non_mandatory", "mandatory", "joint"] +tm1_trip_mode = tm1_trip_mode[["atwork", "joint", "mandatory", "non_mandatory"]] + +asim_trips["trip_mode"] = pd.Categorical(asim_trips["trip_mode"], categories=mode_labels) + +asim_trip_mode = asim_trips.groupby(["trip_mode", "tour_category"]).count()["household_id"] +asim_trip_mode = asim_trip_mode.reset_index() +asim_trip_mode = asim_trip_mode.pivot(index="trip_mode", columns="tour_category") + +tm1_trip_mode.to_csv("outputs/tm1_trip_mode.csv", na_rep=0) + +asim_trip_mode.to_csv("outputs/asim_trip_mode.csv", na_rep=0) diff --git a/setup.py b/setup.py index 0f4719a90..940142f3a 100644 --- a/setup.py +++ b/setup.py @@ -3,33 +3,31 @@ from setuptools import setup, find_packages -with open('README.rst') as file: - long_description = file.read() - setup( name='activitysim', - version='0.7', + version='0.8', description='Activity-Based Travel Modeling', author='contributing authors', author_email='ben.stabler@rsginc.com', license='BSD-3', url='https://github.com/activitysim/activitysim', classifiers=[ - 'Development Status :: 4 - Beta', + 'Development Status :: 5 - Production/Stable', 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.5', 'License :: OSI Approved :: BSD License' ], - long_description=long_description, packages=find_packages(exclude=['*.tests']), + include_package_data=True, install_requires=[ - 'numpy >= 1.13.0', - 'openmatrix >= 0.2.4', - 'orca >= 1.1', - 'pandas >= 0.20.3', - 'pyyaml >= 3.0', - 'tables >= 3.3.0', - 'toolz >= 0.7', + 'numpy >= 1.16.1', + 'openmatrix >= 0.3.4.1', + 'pandas >= 0.24.1', + 'pyyaml >= 5.1', + 'tables >= 3.5.1', + 'toolz >= 0.8.1', 'zbox >= 1.2', - 'psutil >= 4.1' + 'psutil >= 4.1', + 'future >= 0.16.0' ] ) diff --git a/verification/README.MD b/verification/README.MD new file mode 100644 index 000000000..4ca5caff7 --- /dev/null +++ b/verification/README.MD @@ -0,0 +1,36 @@ + +### Verification example setups + +Full dataset skims and 2,732,722 households in full dataset + +### 10% sample settings + +``` +households_sample_size: 2875192 +chunk_size: 1500000000 +num_processes: 1 +``` + +### 10% sample OSX single process + +``` +python simulation.py +``` + +### 10% sample OSX single process - 3 shadow price iterations + +``` +python simulation.py -o output_sp -c configs_sp -c ../example/configs +``` + +### 100% sample OSX single process - 10 shadow price iterations ctramp method + +``` +python simulation.py -o output_sp_ctramp -c configs_sp_ctramp -c ../example/configs +``` + +### 100% sample OSX single process - 10 shadow price iterations daysim method + +``` +python simulation.py -o output_sp_daysim -c configs_sp_daysim -c ../example/configs +``` diff --git a/verification/ancillary_data/10_pct_hh_ids.csv b/verification/ancillary_data/10_pct_hh_ids.csv new file mode 100644 index 000000000..75cb62f3a --- /dev/null +++ b/verification/ancillary_data/10_pct_hh_ids.csv @@ -0,0 +1,287520 @@ +household_id +821855 +1594225 +303611 +1306783 +1024245 +701659 +658383 +107593 +1363065 +1747144 +2863450 +2819379 +2760441 +25657 +701662 +821860 +2848117 +2832025 +821866 +107599 +982356 +1594228 +2693477 +350284 +565183 +565179 +701660 +1443827 +982358 +701664 +727807 +658385 +2848120 +1594242 +565192 +2848140 +982362 +2760447 +565221 +2863457 +2717723 +1285870 +1363067 +821873 +1747146 +2832029 +565196 +565190 +1594244 +2848133 +1896790 +1594233 +1594234 +2687063 +658392 +2717724 +727814 +982359 +821871 +503495 +701670 +2687066 +727817 +821872 +226754 +1285867 +727810 +1306794 +2687069 +1443838 +821891 +2848152 +1233969 +1594252 +1406861 +906213 +771551 +565244 +701689 +484567 +821887 +821893 +503496 +2717725 +565347 +565349 +2863465 +2717732 +821900 +565314 +565354 +565280 +565298 +1896799 +1306821 +565274 +727835 +1443843 +107608 +2222414 +821923 +2760472 +1306846 +2687089 +701698 +1443859 +2848160 +1306840 +565273 +565256 +1406878 +2098511 +2687077 +1081616 +2693489 +1081614 +1594263 +565272 +1594256 +2687076 +932108 +2098509 +982368 +2048203 +2760461 +1285893 +1034777 +658407 +2760478 +821930 +565345 +1131395 +821929 +1594272 +565353 +909293 +2848163 +701713 +727832 +565285 +2863475 +2366306 +2863462 +1285892 +565268 +982374 +2687084 +565306 +701710 +1025219 +932111 +821940 +701706 +821906 +2717731 +2693491 +2760467 +1285894 +2693504 +1285897 +2848175 +1131398 +1747158 +226773 +565514 +107725 +822188 +2098515 +1285907 +107695 +763872 +2048263 +763905 +2819414 +565616 +2048323 +658423 +822143 +2819682 +107622 +1594323 +822112 +821952 +1286007 +565526 +2819992 +565368 +25689 +1285994 +1644953 +1952723 +1286011 +1285923 +1967887 +2819436 +982404 +356715 +1644967 +287508 +565430 +2819602 +2819430 +1644956 +2222445 +932143 +763886 +303646 +1443886 +1644955 +1594316 +2819774 +2819819 +1285946 +822176 +25743 +982416 +1340793 +25776 +2819433 +2098551 +1967843 +982381 +2819672 +2222448 +822049 +822044 +25793 +1285912 +2819889 +25686 +565498 +2819522 +1443911 +25693 +1286026 +107692 +2760483 +25737 +2819708 +982415 +499597 +2819562 +1594300 +565450 +25738 +2819772 +1945975 +2819536 +2048256 +2222453 +2819931 +2819918 +200979 +2819814 +2048354 +2222474 +2819387 +1645000 +2819923 +1952720 +1443956 +2048324 +2819798 +2819440 +1644962 +565589 +1443947 +256296 +107711 +356717 +226778 +107680 +1443894 +2819597 +1443892 +822181 +2819875 +370135 +303634 +1285939 +2819678 +256298 +2222430 +2819500 +822059 +2098538 +565505 +1644988 +2820025 +1285906 +25847 +1967847 +565401 +2819928 +2819842 +763944 +2820019 +565414 +565483 +2820000 +1594306 +982426 +25797 +822166 +1486884 +1406907 +565584 +2048213 +25834 +25819 +2222465 +2819496 +2819577 +2819800 +2222436 +1340791 +565490 +107635 +1486876 +822114 +1967871 +2819607 +1406896 +2819952 +822079 +2222470 +1594313 +822159 +1967865 +763935 +1594289 +226760 +25843 +25734 +565611 +982387 +822132 +821966 +822052 +2819693 +1165182 +2819867 +1285936 +2819709 +2222437 +25735 +932140 +822035 +2819821 +1285926 +2819698 +1945958 +932125 +25798 +565576 +2819692 +2222435 +25679 +2819418 +1285909 +1406887 +2048360 +763914 +982405 +763903 +1967867 +1340797 +431924 +2819848 +565367 +25732 +2819805 +982414 +2048258 +2819899 +25704 +2819484 +2048363 +565364 +701752 +2098540 +1285950 +2819458 +2819976 +982389 +565402 +1644977 +2048259 +2819629 +2819650 +2819539 +25726 +763919 +2048237 +2819703 +2048341 +2222476 +2819799 +565518 +2819905 +1967857 +107643 +2819950 +1285902 +565495 +2819441 +763931 +701774 +356710 +2048290 +565509 +2819662 +1087102 +2222422 +982399 +25756 +2819694 +2819747 +1285969 +2819648 +2819847 +1486886 +2819865 +565416 +906218 +2819592 +2819598 +2098521 +822135 +200967 +1967831 +2819804 +2048299 +1285990 +822160 +822128 +1594287 +1967875 +25849 +1286158 +107795 +2760556 +2222662 +1952766 +2760523 +1286031 +565846 +25991 +1594428 +565691 +763955 +1340801 +2832211 +107792 +107966 +303690 +2760525 +565927 +108011 +2832143 +2222572 +2048627 +822485 +1286130 +565718 +1119797 +1259311 +2832184 +1594406 +565919 +1286161 +565842 +701785 +26055 +1594331 +1306934 +822386 +2760554 +822353 +822418 +822286 +1306923 +2048482 +1896816 +1651023 +303708 +1119784 +565854 +2832156 +2048473 +566006 +822507 +2048620 +2760579 +1119803 +226780 +2048631 +2832116 +2704266 +2071585 +565941 +658517 +2704240 +108016 +2222584 +287567 +1286187 +107979 +2677116 +565944 +107866 +1651004 +2222706 +107929 +565968 +107739 +565739 +2048520 +287549 +822374 +566021 +25888 +1651082 +1119795 +303719 +2222568 +1594333 +1645026 +2222632 +2820053 +822254 +107754 +1024285 +2222578 +822325 +1651083 +822486 +932158 +1306959 +1747168 +1286032 +107960 +763973 +566133 +226790 +566137 +2832200 +822482 +1444073 +822460 +107787 +658490 +822354 +1443985 +2820041 +2048616 +822383 +565972 +565765 +1119785 +1594377 +303689 +2832178 +1645024 +1444119 +1099496 +26048 +107920 +2222689 +303649 +2832158 +25956 +566194 +25923 +107826 +1594328 +386698 +565783 +26000 +2048509 +566228 +2760488 +1363126 +2820100 +822359 +565906 +566111 +25961 +1952747 +822449 +566123 +2071587 +1651053 +1594399 +2048408 +25872 +303668 +2832190 +2760635 +566119 +2704243 +982449 +1747198 +1444029 +2832197 +1842590 +1651048 +1406934 +2760527 +565883 +1444076 +1286044 +1119793 +1896817 +565793 +2760536 +1233979 +2704273 +2071591 +484571 +2222530 +822402 +1967895 +566167 +2222590 +2222624 +1444112 +566205 +1651050 +1747192 +1594334 +2048512 +566189 +1306952 +25941 +25930 +1306925 +822429 +2222518 +2048574 +1306953 +2677121 +565643 +2048419 +822279 +1306892 +565792 +2760605 +2820057 +1931821 +2760672 +26047 +26030 +565917 +566211 +2832238 +25881 +1286128 +565950 +2760643 +256309 +982484 +1286172 +1259302 +565642 +2820035 +107882 +226793 +1259292 +1594417 +763957 +107817 +287546 +2048496 +107973 +2760548 +1286152 +822316 +2222705 +565951 +1952780 +107959 +822415 +107918 +1119812 +701802 +1952769 +2048565 +2832162 +1443987 +2760608 +2704268 +1594432 +2222596 +822216 +1444049 +287542 +822491 +822481 +1444134 +1444042 +25898 +1306926 +565914 +658465 +566082 +2048613 +565879 +1259303 +287556 +1286178 +565687 +25939 +822362 +658495 +1931824 +1363095 +1024270 +822357 +2760505 +2048501 +658509 +565708 +1444116 +566190 +822305 +1306943 +1259295 +107884 +2760540 +2832077 +303706 +2222703 +1651027 +565861 +2832075 +566170 +1286199 +566078 +107802 +565878 +2048447 +25915 +727865 +566063 +565969 +1651019 +1594448 +287537 +107728 +2677106 +565767 +1363115 +763958 +1945983 +2832138 +822211 +1034802 +822478 +1594369 +107863 +1651016 +822450 +2048395 +108031 +1444117 +1286094 +1594363 +107783 +1983162 +822252 +565644 +822345 +26041 +658437 +822368 +2760538 +1651098 +727874 +2222587 +25921 +982474 +1594402 +2048575 +565653 +566002 +566096 +25951 +2222553 +303684 +2222547 +303725 +2760626 +1306885 +1444046 +107998 +1444060 +763972 +565847 +1286169 +2048625 +2048410 +822437 +1896819 +822335 +2048485 +25877 +1651091 +2222620 +107839 +1286034 +701797 +2832191 +2222684 +2820098 +107986 +2048488 +2820068 +565963 +1286210 +25875 +107803 +26016 +822382 +386705 +565750 +107994 +1286092 +822501 +2760667 +108026 +2025148 +2760562 +108021 +1594343 +566008 +822503 +822205 +565719 +2820095 +107796 +822444 +822259 +1363096 +2760521 +1952771 +2071595 +2820093 +822267 +2760585 +2760674 +1286237 +2832107 +25940 +982517 +565798 +303658 +1651111 +107842 +822490 +1406941 +566754 +2821961 +764002 +566618 +287678 +566679 +26901 +566584 +201146 +26735 +2366356 +108040 +566274 +2693557 +982555 +2820229 +2687326 +1286311 +2820540 +26743 +2820160 +1286253 +1651139 +906309 +982567 +2820419 +2280105 +1406975 +2822102 +2821430 +566757 +2822197 +26905 +2366363 +566457 +2366317 +26992 +701953 +2822080 +2822439 +566729 +764048 +2821198 +2822077 +2687284 +108132 +2822127 +26238 +2758698 +2280102 +566830 +1821106 +303755 +2821323 +702102 +1594455 +1967969 +2820490 +1407006 +1286255 +2285230 +2820138 +822604 +26229 +2820726 +566874 +26357 +2821975 +287620 +566610 +108052 +566481 +1196233 +982574 +26401 +702062 +2822097 +566435 +2820158 +2820140 +1651163 +822633 +701911 +566353 +566349 +2822318 +822576 +26542 +764016 +26073 +566695 +2821962 +1645043 +26679 +566570 +822641 +2820375 +108047 +303737 +2820378 +701986 +1286346 +1087117 +2822302 +1967989 +2820912 +431980 +566731 +26641 +822640 +2687147 +356745 +2820128 +2821444 +1651173 +566598 +1286260 +2693572 +2820931 +566368 +822652 +566515 +201152 +2821181 +1511213 +303766 +1511214 +2820458 +2821583 +2821713 +2821950 +1286326 +108143 +2820359 +764075 +566603 +566826 +982526 +2820420 +26658 +2285248 +2821282 +1363138 +566760 +2821448 +287710 +2821397 +566674 +2820343 +1173894 +822572 +26474 +2010083 +26509 +2822317 +1087114 +2822083 +26271 +763991 +701875 +26883 +108112 +982540 +2821665 +26254 +2820232 +2820562 +701948 +2366358 +26124 +2820854 +566793 +2822235 +201135 +2821677 +1511228 +2821184 +822638 +303760 +2821240 +1651136 +1511222 +566309 +2366350 +2821205 +2687329 +26090 +26483 +201093 +2820592 +701845 +2687267 +26995 +26322 +2687249 +566265 +2822410 +2821466 +26177 +2820997 +26928 +303761 +2820356 +2822161 +932210 +566316 +108151 +566412 +2821821 +26246 +26091 +906253 +2820621 +26524 +2822148 +303756 +1140771 +764027 +2820602 +702126 +2820955 +566538 +763993 +26310 +2821595 +2821968 +2820429 +26171 +1983175 +1967929 +2821382 +2820185 +26982 +1983168 +303759 +566553 +201155 +566623 +108153 +702063 +822557 +1511180 +26552 +2821080 +2821704 +287580 +201059 +2820683 +566863 +226807 +2820472 +26515 +2821416 +702166 +1119834 +1173905 +1645075 +701822 +2822204 +26550 +201103 +1259318 +1967905 +2687170 +2280089 +2821826 +1946000 +26138 +26647 +1363151 +2821130 +2821476 +2687227 +2821840 +566485 +2820710 +1511179 +566750 +2821531 +702147 +26574 +982535 +2687236 +702026 +2821201 +2822082 +702099 +2821938 +2366411 +1967967 +2821232 +201101 +2820771 +2822231 +2821159 +701967 +26405 +566883 +566254 +2820517 +2821257 +2820466 +2687283 +456539 +906279 +566620 +2820535 +566410 +26365 +2820551 +287695 +287681 +822546 +2687135 +2821801 +2822271 +1173916 +26332 +26866 +2821292 +2820494 +702207 +2820975 +2822177 +566852 +822594 +26718 +1402897 +26891 +2822291 +26488 +26117 +2820680 +2693548 +2820541 +201142 +503506 +2822269 +26256 +108129 +2687176 +566433 +727896 +1486897 +2048633 +2822153 +1406978 +108128 +26848 +1286300 +26575 +702184 +764033 +2820514 +26277 +2820780 +2687265 +2820305 +1363145 +566563 +2820523 +26333 +2822260 +2010076 +2821539 +201057 +26212 +2820957 +26233 +702076 +2822370 +1946022 +566821 +2820521 +26823 +287589 +2821609 +2822321 +2821661 +26861 +566841 +2820529 +2821909 +2687285 +2010082 +1651159 +2822367 +287704 +2687131 +201009 +764047 +2366387 +2820146 +1024325 +822665 +702189 +566509 +2687204 +566628 +2821401 +2822384 +287600 +566279 +1651166 +287599 +287595 +2821984 +26425 +932177 +566703 +566460 +2821731 +701828 +108085 +1087125 +26808 +26795 +201102 +2820758 +2366372 +26273 +1286266 +906249 +2821256 +2366366 +2821243 +26513 +2820992 +566426 +26872 +1680403 +26410 +2822386 +1967931 +1286306 +2820409 +1651131 +201077 +2010079 +2820301 +2821843 +26445 +26093 +2820798 +2821747 +566636 +26793 +2820453 +26929 +1266066 +1340862 +566299 +2821714 +1379105 +932198 +1406947 +1444165 +108050 +2280121 +2820822 +932221 +566535 +201040 +2821667 +566607 +2822020 +27026 +1406967 +1406963 +287658 +201049 +1645086 +2821548 +701871 +822567 +2820897 +2821684 +2687105 +431950 +2820350 +2820580 +1379103 +2820885 +26696 +1645050 +1051223 +386714 +2280093 +701960 +701838 +27017 +2822378 +1286333 +356756 +2820370 +2822085 +431954 +1967956 +2820689 +1024316 +2821010 +287608 +1967996 +26396 +566825 +26294 +702056 +566411 +1645089 +658521 +727891 +328729 +1286328 +26109 +566805 +26983 +1379104 +566355 +2822346 +26989 +201128 +1340831 +2366397 +2821919 +701965 +26340 +566694 +701827 +822637 +764040 +1645038 +26496 +566436 +26573 +702141 +2366323 +2821759 +431940 +2821832 +566571 +2821941 +108083 +982545 +2820288 +201042 +2758694 +566267 +822655 +2820236 +566843 +2822429 +26076 +431941 +1406956 +1173909 +1486904 +2366390 +2821265 +566693 +108109 +26489 +1983167 +2820126 +2822245 +764018 +201143 +2821427 +26533 +2822360 +108041 +566270 +566727 +1511223 +26104 +566877 +2820893 +370156 +1024303 +2821738 +2820581 +982566 +566557 +2820938 +2821933 +26239 +1024340 +702025 +1286319 +26247 +2820676 +2821557 +566614 +1196245 +906307 +2821467 +566336 +2820186 +2821164 +2820639 +2821567 +2822169 +26224 +26752 +1406951 +2820366 +2821943 +822624 +1967980 +1967912 +566291 +2820764 +701907 +370158 +431928 +2687190 +1651130 +1967966 +566397 +982527 +566836 +566659 +2280108 +1306970 +1967962 +2820118 +2821495 +2822284 +1645092 +701881 +2687189 +566454 +2687212 +1406969 +2820623 +1051222 +201099 +2821981 +2820264 +370155 +2821923 +2821308 +26133 +701917 +2821154 +2821514 +2821370 +2821669 +702182 +764011 +2820364 +2821659 +287649 +1651120 +26782 +2820270 +566762 +2821039 +1286317 +1286262 +2822414 +701841 +764091 +2366319 +1173910 +2687230 +702142 +303735 +26554 +2821011 +26814 +2820607 +1286269 +2821290 +2820973 +26595 +2820784 +2821578 +906270 +1651157 +26491 +982557 +26787 +2822276 +2821384 +566771 +566646 +2820587 +26132 +26765 +26427 +702303 +822793 +1651216 +27164 +27293 +27122 +822948 +1594503 +2761148 +727926 +982616 +2222910 +1444329 +567417 +567226 +2761262 +27376 +2098776 +27377 +370226 +764130 +2761193 +431986 +2832296 +499603 +432005 +567436 +2760754 +1809933 +823204 +108637 +932269 +702300 +566981 +702254 +2222972 +567317 +484586 +567050 +108636 +1286472 +1444289 +1087145 +386745 +1651249 +1444173 +1286478 +566954 +2760937 +201213 +2223103 +2098786 +1286424 +567397 +1651247 +303858 +108432 +822954 +702310 +456614 +1511262 +27437 +2760716 +2098667 +370237 +27242 +2222813 +303902 +108205 +822984 +108563 +1645136 +27288 +658584 +27303 +1259340 +27137 +27188 +2760838 +566997 +2760772 +2223028 +456593 +2223039 +2222961 +982584 +2098648 +906334 +1286399 +567371 +1087152 +1444419 +256334 +1286403 +1070324 +27323 +287840 +2222943 +2760887 +567401 +108299 +1896836 +822691 +1651239 +982620 +108575 +27307 +822787 +432018 +370251 +2761049 +822953 +108471 +356794 +2222959 +658530 +1340874 +226833 +1444220 +27179 +1444382 +27232 +2760902 +1645127 +2761162 +1396392 +2760963 +1651179 +822712 +108306 +2760985 +27226 +702233 +566904 +567160 +1645131 +386738 +906351 +2761272 +108443 +1931829 +287850 +567474 +2760811 +108388 +356772 +822898 +108371 +2098720 +764167 +1645159 +2760913 +2222974 +2761310 +822910 +2222757 +567208 +226857 +822864 +303781 +303815 +764202 +2222859 +361973 +1444346 +764123 +567100 +2098814 +27322 +567211 +2761004 +370211 +1057645 +226853 +566968 +567428 +2760989 +2098559 +823058 +27125 +2832278 +2098656 +1286409 +1444230 +1511246 +2761109 +1747267 +1196255 +567137 +823206 +2222955 +2098597 +567454 +27233 +566953 +2222766 +2222750 +2761137 +2223095 +2222860 +1363165 +1340877 +822934 +2760853 +1444317 +567521 +2832294 +1747237 +2677138 +764188 +822875 +2098704 +1087135 +2098629 +27284 +822739 +2760888 +2761231 +1821127 +2761225 +1407061 +1721679 +2760876 +2223063 +287831 +567257 +108348 +727903 +2761277 +2760718 +764174 +823052 +456607 +1931840 +431989 +567326 +27256 +1511243 +2098740 +1444336 +27058 +27369 +822966 +2760981 +108241 +2832260 +370192 +658527 +567080 +2098680 +456605 +1259328 +1444459 +567266 +1034840 +1645139 +370212 +2761061 +1286489 +2760809 +2223138 +1099523 +2222999 +2222755 +456627 +2223002 +2761263 +2223014 +1594563 +932290 +370188 +982625 +1119846 +1896845 +1444409 +27430 +702218 +108196 +2761185 +1307008 +1286417 +567035 +108408 +658589 +2761030 +764193 +2105635 +2761289 +822673 +27370 +2098676 +702272 +567349 +27389 +1088508 +1651267 +2832292 +27316 +567260 +356779 +1286385 +1444407 +2761176 +1896830 +567036 +287849 +1087146 +2222772 +108359 +566998 +27378 +1286487 +201170 +1645154 +2223123 +27385 +27120 +108174 +764141 +108182 +108345 +2098655 +822782 +27162 +303828 +108553 +27292 +108269 +1099528 +287858 +2761096 +287757 +1363175 +567546 +822993 +108517 +1747251 +822895 +1511266 +1034832 +1173930 +456561 +567345 +823075 +764114 +2760724 +27031 +1407051 +2760970 +2761266 +456586 +658543 +370196 +27453 +566960 +658541 +1306975 +27126 +27309 +823123 +567004 +567068 +822748 +1407063 +2761110 +567166 +303860 +303906 +1931832 +108220 +2222919 +702271 +303893 +2223027 +567530 +822684 +2222783 +456557 +822779 +1119871 +27231 +2760706 +1034836 +822889 +2222938 +2760815 +456596 +27216 +2098685 +2761238 +702256 +2760996 +108448 +658569 +1444421 +1119835 +1444208 +2677150 +822718 +2677141 +567499 +1651195 +370204 +567152 +1286458 +108198 +567187 +1363167 +1651258 +484600 +2760863 +1286438 +702226 +2760802 +567096 +27405 +823066 +303819 +1511283 +27279 +932254 +287772 +1651188 +2344773 +108524 +1444187 +27426 +822941 +2223051 +764138 +2223072 +2098665 +108565 +932257 +702292 +567057 +484598 +27219 +1286473 +823140 +27379 +256338 +2761165 +822951 +2222855 +2222977 +2761080 +1997089 +1340879 +822686 +1024378 +303770 +2098744 +345263 +823122 +982590 +2832266 +1286431 +764163 +27169 +1444299 +702277 +1511259 +658532 +764122 +108595 +822853 +567169 +764143 +456617 +764175 +108332 +2098731 +2223043 +742999 +1651226 +2222941 +567099 +1651181 +1306994 +2760800 +27066 +1594528 +1896839 +108360 +823055 +1444422 +2223124 +1594509 +1196249 +982589 +2760804 +1444455 +2761243 +1407058 +27460 +566983 +1173928 +108404 +108533 +2760819 +2761119 +567332 +108613 +108423 +2761037 +1407017 +1286382 +287816 +1645133 +108197 +27434 +1051227 +27280 +1444255 +456558 +822672 +2677153 +2098672 +256339 +566971 +2222727 +822693 +2098760 +27407 +287807 +1024354 +2222927 +1024368 +27290 +1286423 +1286393 +1363159 +823191 +823099 +567553 +658568 +567323 +370230 +822921 +566999 +567485 +356791 +287825 +27446 +27181 +108619 +1444201 +823143 +567476 +822811 +1099534 +764223 +2098712 +1444330 +702232 +1444221 +1594516 +567241 +303850 +1286361 +823151 +456601 +303855 +2222854 +27113 +566915 +287815 +1645166 +2344767 +2223100 +287859 +2760806 +822842 +2761005 +2761036 +932244 +567339 +567438 +1034823 +566917 +386730 +982587 +2223079 +567535 +2098809 +1024353 +1645104 +567861 +2223172 +109379 +1286538 +2677161 +727956 +1594606 +303986 +201285 +370353 +108882 +226904 +370356 +27798 +27882 +108769 +2677167 +1680443 +109458 +201253 +287906 +109034 +727942 +1444474 +256426 +702359 +1594570 +823275 +109399 +658646 +287930 +287889 +1594709 +109555 +109652 +27574 +27603 +702436 +567608 +2727182 +109444 +370301 +256434 +2223221 +1594702 +823250 +2727137 +109009 +27830 +2048637 +370441 +28034 +27675 +728043 +109197 +728026 +1809935 +1809940 +226945 +109404 +256370 +27802 +109195 +1444538 +226903 +932318 +2727178 +1594651 +1363197 +304093 +28054 +764237 +256587 +567726 +109667 +1400343 +108890 +256393 +109564 +1099563 +226943 +227008 +109016 +2693614 +1747380 +27608 +1444513 +370363 +108925 +28145 +28175 +27615 +109226 +567738 +28219 +2761372 +702385 +109716 +108918 +658626 +108885 +370297 +2761368 +2832308 +108703 +823234 +27537 +304067 +2048676 +370357 +28001 +1594645 +108731 +226926 +109779 +1340891 +2761386 +28126 +1363233 +304066 +1444503 +287890 +1099575 +109494 +2223228 +256533 +27584 +982649 +567849 +1594656 +27888 +109358 +370327 +256606 +28072 +28207 +108722 +256603 +567562 +109679 +2223157 +27558 +1747365 +567591 +108704 +567569 +108714 +28026 +27946 +370355 +567864 +108967 +1286506 +1747369 +287884 +1340890 +1594629 +109590 +1307018 +702406 +567932 +28090 +2717765 +27828 +2223239 +567767 +256392 +567744 +256437 +108835 +567942 +109514 +109276 +256670 +201295 +1747285 +27930 +567984 +108827 +1234022 +27569 +702434 +109084 +109136 +702367 +2098830 +1594637 +567579 +567758 +108969 +303994 +27677 +256673 +2693587 +727994 +226949 +1400340 +256649 +1594672 +567609 +27874 +658652 +567617 +370354 +1842592 +1444511 +256659 +336957 +823225 +109554 +1400332 +109390 +109611 +256490 +1594635 +226931 +728050 +227062 +823242 +108797 +109249 +28135 +108973 +28196 +109630 +109261 +109083 +28029 +27522 +1594633 +109198 +303969 +567757 +108699 +1340901 +1363245 +1594627 +567910 +567877 +370359 +303919 +256524 +109010 +227004 +28186 +27799 +727997 +28181 +1152874 +227036 +256599 +108874 +27973 +109670 +256607 +1594678 +108751 +658650 +109634 +1747332 +227047 +1594695 +567996 +1234086 +2758705 +1594684 +702374 +201257 +1747346 +28050 +109329 +567939 +2693599 +2048636 +1363177 +2677155 +256493 +27919 +658627 +27534 +108700 +27797 +108963 +567859 +109044 +2223220 +287875 +1594590 +28131 +1747292 +256357 +201291 +1594663 +108706 +109492 +370340 +109334 +1842601 +28006 +28160 +370279 +567841 +1363213 +28113 +109189 +567981 +227063 +28097 +226938 +370373 +28005 +256566 +1651274 +256577 +2693594 +109096 +109363 +227078 +2048682 +109271 +567800 +109484 +226982 +109356 +1809944 +27898 +108863 +27600 +109093 +2758701 +2758713 +1594694 +27777 +304112 +27909 +256430 +256661 +370392 +1099572 +743006 +823248 +304058 +1594578 +1152869 +303931 +109292 +108910 +28221 +567618 +2693606 +2223152 +28038 +1747391 +567713 +567975 +109153 +823293 +227074 +568008 +823238 +823261 +1234063 +2832313 +27597 +256451 +109575 +567625 +567684 +108954 +1286517 +2693596 +226958 +2098834 +336950 +1594671 +28033 +702353 +567819 +728044 +27953 +823227 +567640 +1057663 +303995 +27982 +109095 +226991 +109643 +1444465 +287868 +109108 +1747398 +109296 +109734 +658656 +2223264 +27924 +109769 +1747372 +27673 +370400 +1444504 +27915 +109301 +1034842 +256482 +226905 +287932 +728017 +226872 +109295 +2223198 +28120 +2693593 +27510 +256472 +2761334 +256396 +109588 +226977 +27488 +28018 +109142 +1152871 +27672 +109305 +226990 +2761356 +109637 +1340897 +109280 +1444475 +109729 +27502 +303913 +226901 +370277 +1286515 +2717767 +932322 +256516 +1594643 +567590 +1747295 +27969 +304064 +567695 +727989 +823304 +28143 +27685 +728023 +227096 +1747324 +227012 +109007 +27613 +2727158 +27881 +27778 +109433 +1363229 +1234084 +1594686 +1099571 +370448 +27867 +109048 +27609 +2727130 +2761324 +256473 +28167 +336945 +108777 +109602 +109347 +109097 +728014 +109225 +28217 +2761347 +658645 +226920 +303975 +1931845 +109526 +1234020 +27892 +256518 +27966 +1259348 +28012 +27520 +27992 +109799 +109396 +727972 +27618 +932333 +27976 +728027 +226971 +108975 +2758730 +28077 +28000 +2098828 +28184 +256592 +658665 +27822 +256604 +2048661 +109274 +109470 +2223192 +567907 +823244 +304087 +28069 +27739 +906355 +1594710 +567863 +256488 +109406 +28008 +2761337 +109272 +201265 +1594617 +2693600 +109508 +1234074 +2832298 +256441 +28061 +28083 +567908 +1234070 +109394 +932352 +1363211 +2761384 +2727125 +226962 +2758717 +2048685 +1400347 +303982 +743010 +109234 +109149 +108965 +370346 +109553 +109419 +567693 +2223143 +568016 +227084 +256464 +256366 +567926 +2727134 +568299 +2048869 +28474 +702533 +2223334 +568294 +568170 +823361 +702518 +304176 +28450 +1680462 +2048899 +658698 +28296 +28267 +2048818 +110174 +1645185 +28345 +568135 +28506 +28516 +2048769 +1821134 +2048795 +2344812 +932377 +823312 +2677186 +110107 +1444573 +2506720 +110154 +1594742 +110136 +2048859 +28433 +110129 +109813 +2344809 +1594726 +28383 +568072 +28316 +2048750 +2761416 +2761452 +28558 +2048733 +1594808 +110172 +1594855 +1594722 +110166 +1373795 +568245 +109816 +28468 +2048730 +503509 +2761507 +1594836 +2048875 +1234116 +2761508 +28313 +2048759 +110189 +1594872 +2048748 +2761408 +982688 +568042 +2223290 +568285 +2048786 +1747457 +28355 +109865 +823310 +1511323 +28439 +28531 +2223325 +110147 +823348 +568169 +982696 +728086 +702513 +287936 +823326 +702464 +110112 +2761541 +2048743 +823431 +109973 +568233 +568186 +110036 +2761411 +2048833 +1444603 +2048757 +932373 +1594786 +370453 +2761440 +110053 +2048729 +304141 +110011 +28435 +1594773 +1594882 +1594858 +568226 +110161 +28519 +1594813 +823384 +456631 +1307044 +304153 +568223 +109997 +2048901 +28357 +28525 +2048814 +823389 +28423 +568065 +932370 +2048712 +1363255 +932381 +110034 +1234159 +1384888 +568107 +110101 +28295 +1234113 +823423 +1594822 +28322 +1070327 +109961 +702541 +568252 +1594868 +568075 +28253 +2761530 +568096 +823351 +1389522 +2048791 +2048723 +1389525 +1511336 +110146 +1594812 +568079 +702487 +109823 +1286555 +2048892 +227119 +1119914 +568243 +2761414 +2223357 +28459 +728102 +1389521 +28452 +982684 +1594797 +2223364 +823473 +109955 +1444604 +1594731 +2761442 +28517 +2761505 +568199 +28438 +764246 +1594806 +110055 +1034852 +2223313 +2761444 +2761521 +109988 +110084 +304168 +1340917 +28311 +28504 +109844 +28453 +1234150 +568111 +1821133 +1363248 +287944 +568305 +823426 +28399 +484627 +28545 +1511318 +1511316 +1747426 +2048763 +568119 +2677183 +2223272 +28447 +2223358 +702515 +1119894 +1363309 +658683 +2761412 +432026 +823409 +304161 +1747410 +304170 +28407 +2677192 +28239 +1119905 +1747453 +28248 +287935 +28361 +28343 +109822 +568208 +110069 +1373798 +109980 +1594861 +28442 +1747409 +1119892 +2048870 +2223385 +1131425 +1747451 +568286 +1363325 +1234142 +2677193 +568209 +28501 +110125 +1594870 +1511339 +110033 +932380 +2761518 +2048809 +823475 +109965 +1651283 +1651289 +2223399 +110085 +1099587 +1444595 +1307030 +109901 +1511334 +1363273 +109950 +823453 +823410 +110070 +227122 +1747423 +702520 +1340916 +728126 +110177 +304131 +2048856 +823408 +2048822 +356814 +304165 +658677 +823350 +1594917 +1700165 +1307049 +28600 +1952787 +1444667 +110224 +2223408 +1444618 +764247 +1444644 +1340919 +823525 +1444614 +823485 +2223435 +823608 +1340920 +2223483 +2223430 +1444646 +28624 +823521 +1594904 +2223422 +823593 +932393 +1444661 +28612 +823587 +823536 +1444671 +1809957 +823512 +201324 +28591 +823574 +28623 +110210 +823481 +1952790 +1444640 +1119921 +764253 +982741 +2223474 +1057677 +2048952 +2223429 +568325 +982743 +932390 +702557 +823487 +702553 +823581 +982730 +1234161 +1664531 +982717 +1444647 +110249 +28587 +764248 +2223423 +764262 +1594924 +2223442 +256692 +2223463 +568328 +702550 +1952786 +28579 +227138 +2344819 +1594910 +110196 +982702 +2223478 +2687341 +2223462 +1594923 +1444627 +1444633 +568344 +764251 +823606 +2223419 +1444649 +823605 +2048918 +227143 +2761549 +110262 +227142 +28640 +110261 +256694 +2741683 +568381 +110254 +1594950 +982759 +28661 +1444710 +658712 +2048963 +110304 +568389 +568400 +1952792 +110331 +2098842 +906364 +823647 +982763 +2727192 +568416 +110301 +28659 +1444695 +702566 +1444707 +110334 +2704287 +28673 +568414 +28657 +764269 +982752 +28654 +568407 +1444706 +2223489 +1444700 +227148 +2049002 +2761560 +1152878 +2223492 +1486922 +28690 +568409 +1444693 +110305 +568399 +110285 +1444690 +2048962 +2223529 +110278 +1511348 +110318 +1594949 +932405 +568421 +2223535 +28656 +2223525 +110339 +764270 +2049044 +2761570 +932407 +1407086 +2223595 +2223587 +1444743 +1645189 +2727193 +823663 +2223555 +1946027 +568433 +1594958 +1407087 +2223601 +2223576 +823669 +823674 +2223598 +2049028 +1444748 +2223567 +1594965 +1286582 +2761563 +702570 +2848193 +1407088 +823685 +1165198 +1307052 +1444720 +110343 +568426 +982823 +111965 +257124 +29185 +111040 +2832388 +1119996 +201347 +257406 +111902 +568466 +28909 +110556 +110933 +1931914 +1119963 +256942 +111926 +29193 +568479 +112170 +257531 +111518 +111640 +2822453 +1595072 +2025154 +110714 +111324 +110840 +2223920 +2223853 +257463 +257265 +256891 +257031 +2025179 +982882 +29161 +2344982 +256807 +110709 +29458 +1444812 +1747471 +2506728 +28954 +111496 +29362 +111819 +982868 +257549 +568539 +28981 +28992 +2025219 +823698 +257461 +227183 +28917 +257064 +111426 +256777 +982796 +110756 +2025215 +256747 +257239 +111727 +29454 +1444807 +2025190 +112221 +29052 +823739 +1099612 +111571 +2832413 +257158 +110874 +111806 +111850 +256706 +29083 +257149 +111936 +110428 +112006 +110649 +304190 +568486 +2223880 +257133 +256968 +2223639 +29516 +982809 +2832348 +110727 +112262 +29373 +1120016 +2223968 +256754 +982937 +1594985 +1931918 +728155 +823775 +28968 +111494 +28912 +29296 +110758 +2344966 +2677199 +2345020 +256808 +257489 +2025173 +110976 +2223875 +111265 +2223937 +256773 +568694 +257047 +728212 +110975 +702580 +111030 +256710 +111329 +568500 +257626 +2025193 +28849 +29144 +2344904 +2025182 +111687 +2223928 +2344923 +1809968 +1119988 +111927 +257582 +1810006 +702571 +568484 +257423 +2223607 +110721 +982893 +29140 +29279 +111394 +29103 +110600 +2677212 +257367 +29388 +823719 +982879 +1511354 +110966 +256776 +568648 +28839 +256993 +110513 +29396 +2223942 +658726 +823780 +112152 +257658 +304218 +1931955 +2049050 +29294 +28759 +1119979 +110795 +257094 +658722 +2344983 +111512 +112229 +2344833 +2025214 +28874 +29267 +2223604 +823760 +257553 +764283 +112198 +110921 +2025206 +764281 +982891 +110638 +28895 +29042 +112128 +1594968 +110952 +2832368 +112226 +29079 +257029 +256758 +982905 +1120008 +257459 +257471 +256953 +110398 +111274 +568505 +257569 +110973 +728179 +29429 +257346 +28941 +111520 +111572 +1594987 +1070354 +110632 +257529 +2832385 +2223724 +111159 +29037 +256901 +29390 +112241 +257168 +1931920 +112194 +702581 +257198 +568640 +256824 +1120002 +110824 +29493 +1747470 +110511 +982787 +2223963 +257038 +568465 +112020 +110374 +111047 +29017 +2761624 +1444832 +2223784 +257313 +304199 +2223925 +2223949 +110470 +1259384 +110527 +29251 +112193 +111847 +2344906 +982873 +2761622 +111079 +2345014 +29434 +29450 +110413 +110996 +256729 +2223971 +110439 +1594972 +111146 +2223708 +111877 +1119985 +111189 +257333 +256761 +257498 +111382 +110407 +110692 +823772 +28894 +256913 +257237 +28758 +304196 +658729 +111060 +568521 +112094 +110793 +29134 +568457 +28882 +568716 +110396 +29090 +110404 +304220 +111893 +1931887 +29236 +2223900 +111570 +2223624 +29102 +111339 +256982 +2344975 +28884 +702586 +112172 +111363 +982919 +256927 +110815 +728227 +110438 +111015 +257542 +2223610 +728211 +257101 +370457 +29159 +111720 +111483 +1595064 +257554 +112104 +112101 +1389536 +111905 +702582 +1931948 +256782 +256803 +28952 +111887 +111582 +568491 +29283 +111411 +982865 +257354 +111779 +29179 +568569 +568576 +728194 +111852 +1595032 +111986 +256722 +823782 +256988 +110938 +256892 +110642 +112069 +1444771 +111488 +1595066 +110923 +29053 +111314 +28921 +111197 +110621 +29069 +2049065 +982950 +2677203 +257285 +2727197 +702578 +257609 +110356 +1373806 +256705 +2223649 +110484 +1931949 +1444777 +110734 +257264 +2832374 +29320 +29153 +29171 +256785 +28939 +2223620 +111388 +28778 +568534 +1594993 +111273 +1444834 +1810014 +110623 +257152 +111873 +728209 +111713 +256724 +111396 +1444754 +111179 +257428 +256920 +304194 +110862 +112136 +257281 +568573 +110464 +201351 +257088 +29168 +111025 +2223921 +2223715 +257301 +112250 +2344860 +257347 +111244 +112153 +2344978 +110805 +29231 +28831 +256784 +111332 +29459 +257123 +111586 +1511353 +568558 +2223815 +111251 +256791 +111959 +112205 +568721 +257547 +28904 +28792 +29022 +111425 +728172 +2098848 +110988 +568556 +2677196 +503510 +29124 +2025161 +112219 +111688 +29061 +728225 +257028 +386752 +257107 +111402 +110841 +257316 +658732 +111784 +257380 +110634 +2223944 +28867 +111938 +982785 +1931951 +823788 +287972 +2344917 +568551 +110411 +2223828 +287967 +256726 +112036 +111706 +2344943 +287974 +111985 +29496 +1680477 +29199 +110804 +1595075 +112201 +1119948 +110520 +110486 +110918 +29197 +1931939 +256857 +257561 +2344954 +111125 +1119992 +1373809 +29245 +29232 +2307201 +111456 +110889 +2025244 +257516 +568533 +568459 +29250 +702613 +112256 +257558 +110906 +111276 +257450 +568620 +2223641 +2223613 +1286591 +1595087 +112217 +257527 +1119998 +111327 +1594981 +111487 +1747481 +111253 +1931936 +484657 +2223884 +2832401 +702587 +1444773 +823699 +256775 +257298 +29247 +982854 +227222 +982846 +28886 +2344995 +1747469 +29085 +1594973 +256917 +28942 +568671 +568468 +2344859 +110904 +110843 +2223676 +823793 +1931886 +29081 +29295 +2832370 +484659 +1595090 +1444814 +1444801 +568447 +257644 +2344879 +111967 +2223698 +111603 +2832422 +1810020 +823705 +257211 +111357 +1595028 +257272 +982845 +257291 +982842 +110802 +257246 +2223799 +658779 +112230 +111031 +112089 +983051 +2049339 +1259415 +2761703 +1445040 +1444878 +823945 +2761862 +112299 +1445145 +2049258 +2761711 +2224712 +983047 +1444904 +2224339 +568812 +112624 +1595193 +257689 +29768 +2224213 +823891 +29721 +1444880 +1983190 +1445006 +2049277 +824093 +2002759 +982981 +2224551 +823936 +764290 +29662 +227250 +112383 +29865 +2224037 +112687 +1259417 +29846 +823846 +2761795 +823844 +2761831 +1099622 +29570 +824017 +2761929 +29592 +2345033 +568933 +1444958 +2761639 +1445039 +728260 +568746 +824034 +982985 +823814 +2224541 +2761637 +2049206 +1444953 +728250 +2832455 +257740 +29572 +1445236 +1445193 +2027760 +1595141 +2224216 +2224198 +2224183 +2408865 +112681 +2761771 +2025259 +112546 +823919 +1595144 +1595175 +1444988 +2025269 +29679 +112409 +112418 +568756 +1931962 +2345078 +2408877 +29591 +1444859 +2049221 +568911 +1402937 +2224113 +112303 +2224164 +112612 +2761793 +112541 +1444983 +2761908 +1286606 +2224218 +2408888 +728257 +824066 +2822488 +112519 +2307212 +1595233 +2049259 +2224623 +2822471 +568892 +824109 +823976 +1747495 +2345077 +29619 +568837 +2224417 +2345062 +2224078 +1595130 +112385 +823870 +2224310 +823981 +484661 +824055 +2224510 +1444882 +2049227 +2224356 +2727221 +1120021 +1651350 +1445168 +2727229 +1445214 +112365 +2224571 +764300 +2224336 +823879 +1595140 +982999 +29763 +824011 +1595158 +112470 +983032 +2224351 +1286594 +2224347 +112518 +982971 +568752 +2224032 +1445100 +824005 +1952830 +29575 +2224335 +1259407 +112340 +2224342 +2224592 +2224283 +2224445 +2408869 +824081 +2761654 +823952 +29682 +2224221 +2224491 +1445081 +29535 +1651348 +764312 +823893 +2345043 +2224444 +568775 +764315 +2224616 +2224704 +29823 +1445013 +112376 +1595110 +2408886 +2224154 +112591 +823938 +29663 +29888 +2224073 +2761647 +112449 +1444927 +2224468 +1946030 +2049106 +2761931 +823806 +2761805 +1445130 +2761847 +1595202 +2727225 +29741 +2761800 +2049133 +2761865 +2224070 +1445221 +702638 +112623 +2224548 +1595229 +2224467 +823922 +112406 +29626 +2224693 +1511358 +2761651 +1120033 +1402939 +29581 +2224049 +1445241 +1983192 +112453 +568873 +2345124 +112577 +112386 +112599 +29597 +29868 +823951 +1595236 +824091 +2049310 +2408880 +112506 +1445003 +2224448 +112549 +1286626 +2224669 +983024 +568745 +1407089 +29800 +2687346 +823929 +1445025 +112296 +2224624 +2025277 +29695 +304277 +29604 +2224673 +1444912 +1444907 +1445190 +568880 +1444975 +112484 +1286624 +2345056 +2025285 +2049192 +658782 +824008 +2761716 +2822492 +112474 +1384898 +1445142 +568737 +304255 +658792 +112464 +2224705 +2761688 +2224387 +29661 +824024 +484665 +568747 +1444872 +1259411 +823851 +1165206 +29869 +2049169 +1286602 +2822480 +29879 +112475 +2049154 +2224690 +1445136 +112646 +29852 +1445049 +2345091 +2822513 +112598 +2027755 +2224160 +112654 +29909 +2408885 +1445140 +257675 +2049292 +823877 +1259403 +2049205 +568895 +1259424 +2345115 +2224379 +823928 +1444854 +112628 +2049187 +823942 +29931 +824018 +2224694 +1445125 +1445010 +2761631 +112626 +1445163 +1952824 +2224323 +112566 +112600 +2025278 +2049150 +2224094 +2049207 +2224631 +658795 +2345122 +29791 +2224311 +2345164 +1595106 +2345139 +2224517 +29590 +1445082 +823865 +2224206 +2687347 +2224100 +2224318 +2822503 +29924 +370469 +112710 +568922 +2224013 +2224250 +568738 +112408 +2049096 +1595248 +2345050 +1952833 +823820 +2224312 +823802 +2224014 +2224117 +2049295 +2224636 +2727224 +2224275 +2002758 +2408864 +2224728 +2224537 +2761754 +2224279 +2224628 +257745 +2224040 +2761838 +2049153 +112582 +2761940 +112332 +2098853 +2049255 +2761881 +2224574 +824037 +1444971 +1445149 +2224579 +568861 +29808 +1810036 +112690 +2224316 +2727212 +2049278 +823848 +2224006 +1680484 +728248 +764291 +2345097 +2224260 +764332 +2848283 +2848325 +2345172 +1700182 +2848252 +2224857 +2049356 +29955 +1407133 +2049426 +824207 +386776 +1445284 +702647 +2071624 +2848329 +1445270 +2071601 +569002 +2224848 +2224793 +764337 +1407121 +568970 +1651354 +1407139 +2049478 +1651355 +983072 +824113 +568995 +2049453 +983099 +1700181 +824126 +2848208 +764341 +2848207 +2848316 +2848229 +2224805 +824197 +2345167 +2049349 +568967 +824193 +2848310 +568973 +29947 +1407130 +2071606 +2049485 +112731 +2848492 +112727 +658801 +2049381 +2848374 +2224738 +2848467 +432034 +2049457 +2224800 +2049438 +2848223 +2345171 +2848231 +824238 +2848468 +304282 +824225 +2848458 +2848297 +1700183 +2224837 +2049340 +2049420 +2848292 +2848440 +1445258 +1445280 +2049398 +2848249 +1445314 +1595265 +824243 +257750 +2848415 +2848224 +1407114 +2049465 +1445255 +1445265 +824130 +568987 +2049362 +1407116 +1445324 +2224852 +1651352 +2071602 +2761972 +1595280 +824184 +824226 +2049378 +2049455 +568941 +568976 +2049385 +304285 +1595273 +2848319 +1445285 +983071 +2848295 +304287 +1511363 +824180 +1120037 +112716 +2848328 +2224792 +2224758 +2761968 +771564 +2049481 +2848322 +2345186 +2848517 +983095 +702648 +2848506 +824155 +983114 +2049472 +824211 +1700179 +2761945 +112722 +2345182 +569004 +1595254 +2224741 +1407119 +568946 +112907 +2224928 +112895 +112796 +112815 +2049512 +112887 +257818 +2848542 +112851 +112794 +2822528 +2224883 +2848689 +112780 +569015 +824267 +1407157 +2848707 +983123 +257777 +1407203 +824271 +432044 +2848610 +29981 +1445365 +2848642 +257797 +257789 +2848614 +658824 +112844 +112776 +112797 +2224892 +983138 +932433 +432056 +1445364 +2224879 +2848580 +2848529 +569013 +386786 +432067 +1445355 +983141 +304303 +432038 +2848544 +112763 +304312 +1407168 +29982 +1445361 +1445362 +2848532 +2071628 +112811 +2848540 +2224927 +2848684 +386797 +112834 +247052 +112769 +257815 +112902 +1445357 +386777 +1445375 +112859 +1034866 +112820 +2848594 +112779 +2224876 +658821 +2848618 +257808 +304321 +257810 +569010 +2049500 +2848617 +2848633 +29976 +2761985 +658814 +569026 +112842 +2822530 +824250 +112740 +112774 +257832 +2848687 +2224944 +569017 +257811 +112739 +112884 +569029 +350317 +432069 +2848632 +983129 +702744 +932435 +1373832 +1396398 +2693635 +2762091 +1307079 +2727253 +702798 +569337 +702729 +2717799 +2863486 +2832486 +2002761 +702809 +1196268 +1986758 +2693661 +728307 +2762111 +702696 +1120052 +2224972 +1307123 +2863515 +2693652 +2762066 +569419 +1400375 +824351 +2727247 +728303 +569426 +569213 +569220 +1088509 +112938 +1651379 +1307100 +112933 +1234193 +569453 +2863529 +658882 +1983210 +728338 +569267 +658885 +2822534 +1363347 +658860 +702742 +1952857 +2762014 +1373841 +569068 +569270 +1363349 +1896852 +2863483 +1363366 +1070366 +1120044 +569067 +2717805 +702801 +112959 +1307138 +569382 +1983207 +569406 +2762094 +569283 +1595298 +112917 +2863585 +569216 +569445 +2762071 +728369 +569440 +728275 +1747526 +112945 +1896853 +1595300 +456638 +702676 +702791 +2761998 +356827 +1952853 +2761996 +227261 +569130 +983156 +1896855 +112922 +569301 +569215 +1747518 +2863565 +2863591 +658870 +658928 +569357 +702671 +658851 +1373837 +569539 +2762063 +702760 +2693659 +1986782 +569201 +569145 +1363382 +1595287 +569324 +824317 +569247 +2677229 +2002767 +112921 +658970 +569298 +569050 +569232 +1259433 +702736 +1952852 +569134 +2706071 +658839 +1363354 +2224968 +2049534 +1400368 +569412 +2727263 +569524 +2863576 +569105 +569331 +702713 +1595294 +702655 +2727238 +2687378 +2848746 +771569 +1986759 +569404 +1700211 +2832471 +1307090 +658915 +824331 +569393 +370478 +728346 +569376 +569244 +112936 +569066 +658834 +2002772 +1747529 +2762002 +569282 +728320 +569541 +2717806 +2832469 +2848722 +728356 +658861 +2863534 +728342 +1747508 +569474 +2762144 +728286 +2727240 +1445384 +658907 +2693657 +569345 +745045 +1700210 +728318 +2762087 +304329 +702816 +1595302 +658908 +2727250 +569047 +658967 +569424 +1346438 +112929 +112952 +569343 +702685 +569310 +2727236 +702783 +824307 +1595319 +1363352 +2717796 +569269 +2762129 +569410 +702758 +658987 +983161 +569461 +2727251 +658855 +569203 +569072 +569535 +112925 +1363405 +2863590 +1651378 +569116 +658866 +569491 +569305 +569259 +569178 +2863566 +2762135 +1997170 +2762076 +569416 +569311 +824340 +702730 +569459 +703046 +1651397 +569972 +2098929 +569712 +304339 +659146 +569887 +304352 +983202 +1120069 +702945 +703144 +2366432 +570075 +702897 +570086 +702976 +659246 +570542 +703071 +569798 +569607 +2025308 +2762292 +2762157 +569713 +703066 +570522 +1234245 +570185 +570173 +570132 +702839 +2002775 +659192 +728378 +570327 +113021 +703017 +570509 +659360 +703130 +2225037 +2098941 +2049631 +703177 +2366428 +2225005 +659403 +2027766 +2002773 +2225077 +1716975 +569873 +2098940 +2822724 +2822556 +2224991 +728412 +702917 +361976 +703113 +2822599 +2822664 +659333 +570467 +570052 +728502 +370484 +569939 +2098903 +659227 +824370 +702876 +570202 +569700 +569962 +702843 +569680 +2049624 +1445417 +824383 +2832553 +702820 +728480 +2098893 +569682 +113016 +983180 +1234223 +2832543 +2762269 +2049554 +113023 +569885 +2832521 +1721687 +2049571 +1595352 +659003 +569784 +2762291 +2098890 +2762174 +570029 +570511 +2762251 +1234244 +2822568 +570091 +569667 +570018 +1363439 +569849 +728453 +570452 +113019 +1952923 +484681 +570355 +570322 +2225102 +2225003 +739535 +570272 +570220 +659004 +1234222 +2822688 +570343 +570034 +2822638 +569662 +72246 +569634 +1651409 +1400380 +1445431 +569601 +569597 +702865 +570114 +570124 +2366462 +2049567 +728419 +2098947 +570361 +2049574 +2225061 +2224995 +2762147 +702872 +570241 +2366471 +659257 +703200 +2225101 +2762197 +2225067 +659132 +702852 +570050 +1511379 +1488316 +570545 +2822717 +824409 +659000 +569862 +1196287 +570051 +983221 +1363451 +659082 +1234236 +569830 +503522 +2762181 +2822602 +659205 +659020 +570300 +570048 +570305 +370503 +1307177 +1445423 +570306 +570316 +2762247 +570379 +569656 +659398 +1234232 +1196289 +569859 +2025330 +1307167 +703100 +569778 +570402 +569582 +112979 +570375 +2822590 +728485 +1373862 +2822654 +570017 +570312 +2822691 +112998 +1307234 +569974 +569596 +2822625 +569745 +2822666 +570405 +702996 +659392 +569727 +702823 +569870 +2822586 +569986 +386812 +2225001 +728523 +570191 +1651399 +2832561 +703032 +201371 +702912 +2832562 +570354 +1099652 +570035 +728423 +570207 +569877 +659088 +703204 +2224998 +2832509 +659272 +659188 +570468 +569786 +703090 +569669 +658992 +659327 +570243 +659038 +1234213 +702985 +370494 +1307164 +570175 +659354 +570037 +569915 +1932015 +570166 +2762173 +659253 +569917 +570470 +1952880 +659276 +1389547 +1595351 +569756 +824392 +2366455 +569992 +2049596 +570204 +728416 +659195 +2105677 +824375 +1396407 +570069 +2832511 +570439 +336968 +2366443 +2762161 +1363445 +2049645 +2224987 +659247 +1099646 +1445425 +570397 +569930 +2832512 +703007 +1445451 +1445421 +570188 +703037 +569740 +570044 +1373844 +659081 +1970332 +570378 +569901 +2822658 +718582 +569694 +728524 +570435 +659277 +2049650 +703115 +703035 +1952916 +570274 +728405 +30009 +2225064 +1373851 +1810042 +1384914 +570087 +1234237 +728457 +570186 +659102 +569549 +2049639 +659397 +1932000 +824378 +2822553 +2822554 +570174 +728414 +659296 +304348 +2224997 +2822645 +1286648 +2822671 +659225 +1384918 +2366453 +1488317 +703155 +702870 +227268 +2762199 +569768 +1307199 +2832522 +702834 +702896 +728511 +569674 +728408 +1307195 +659351 +1307188 +659029 +702892 +304344 +570263 +1363408 +1445448 +2822567 +30016 +983204 +2049598 +2822677 +112996 +703196 +2225056 +503526 +1346447 +570500 +1939641 +2225187 +1983254 +2307224 +2741712 +739537 +983251 +1983270 +703209 +570661 +2225195 +1946044 +2225118 +2741703 +1373877 +570566 +2717836 +2225190 +2762308 +1373893 +2098965 +570665 +1445475 +113045 +1286687 +2717827 +1445467 +1983272 +2687407 +1307287 +2762314 +2345200 +2098963 +1286735 +1286688 +1952933 +1595362 +1286729 +2408918 +1968014 +983233 +1286743 +2693677 +1445486 +1307251 +1821150 +113067 +2741717 +2105690 +659412 +1286732 +983237 +1373879 +1946055 +1821152 +1307281 +1952942 +2049667 +2225126 +1286711 +2366474 +2408909 +2225112 +2225140 +1983278 +2518602 +1488318 +824472 +113046 +1993232 +2049705 +2225184 +570584 +2693689 +2098967 +1821148 +659421 +2225143 +113043 +1307298 +2225162 +1373903 +2741074 +570614 +2704298 +1595373 +113068 +1946047 +1983268 +113053 +1821156 +570683 +1340951 +570691 +1340945 +1445534 +2549878 +743045 +2693692 +728535 +659455 +2098983 +659451 +2727283 +983262 +2225221 +1266079 +113119 +1993241 +113126 +983259 +2741076 +503532 +113110 +2345226 +113125 +2693691 +570703 +570730 +1946074 +1445541 +2717848 +1340941 +1307327 +2225224 +2225245 +1952947 +1307339 +824488 +1307348 +1307351 +1286766 +2049724 +1983283 +1286786 +1511390 +113131 +2049728 +570864 +2273465 +932452 +30053 +2822727 +2049740 +30046 +983269 +824537 +824543 +1445552 +824545 +570785 +703237 +570812 +1445562 +201373 +1946079 +113148 +1716989 +703241 +1340960 +824536 +2704312 +570769 +1747544 +570857 +1821163 +703251 +570742 +1384927 +703281 +983270 +336971 +703243 +764369 +2098984 +824531 +30038 +1340967 +30061 +1307367 +1286807 +1363463 +2225251 +1234258 +570821 +659470 +570801 +1716987 +570784 +703274 +113146 +1286791 +30048 +570835 +1340969 +1983294 +570866 +728539 +288024 +1340963 +113136 +571009 +824580 +30070 +570934 +499613 +1286814 +113187 +1384944 +257864 +1307389 +570960 +2687442 +1373917 +227301 +1099674 +570928 +824586 +2706089 +1034882 +503544 +456649 +571002 +1747553 +113196 +570930 +824583 +1099711 +703343 +2748973 +2098990 +2621770 +571088 +571077 +1307388 +570931 +571091 +1363469 +1392613 +743051 +345265 +2704326 +1842609 +728547 +571093 +2704327 +113180 +932457 +1932031 +1511415 +2748979 +824559 +370537 +370540 +113192 +728546 +571105 +824581 +570976 +456646 +571020 +703388 +703352 +1363489 +1842616 +503549 +703338 +1511397 +1307378 +734858 +570893 +570914 +703300 +1932028 +1511403 +571017 +1051233 +1721693 +703290 +703304 +983283 +570983 +353124 +703321 +503552 +2013251 +1099712 +570955 +1307399 +2717873 +2687435 +570881 +2549890 +659477 +1196333 +1165208 +113165 +2704362 +2621771 +2683540 +2683535 +113197 +227278 +570986 +2098995 +484692 +370531 +1363478 +703362 +113166 +113201 +257854 +570936 +370530 +570926 +983281 +2704357 +747634 +703345 +356842 +1340984 +659494 +1932027 +1363486 +2687437 +1363488 +571063 +1120082 +659543 +1373919 +1099680 +2706083 +571078 +2748977 +571057 +659479 +1842625 +1384943 +2704337 +1307392 +571034 +2621774 +570953 +1307398 +703349 +703301 +571045 +1384932 +983289 +113195 +570912 +1392610 +1983309 +113178 +703397 +703402 +356844 +1983313 +1896859 +571187 +2225283 +1445603 +703411 +30076 +571194 +1595404 +1373921 +745548 +728581 +824628 +824651 +227311 +1595400 +370552 +1307409 +1445576 +1340996 +1307410 +2717897 +1286828 +1968071 +906367 +1821164 +703458 +2704389 +571174 +1286829 +1400397 +571142 +824619 +2748990 +2848751 +1234281 +703406 +1896866 +113219 +703415 +1363505 +1286830 +932468 +824627 +824645 +2049750 +703426 +1120106 +1165209 +2693707 +932472 +739542 +2049763 +1983328 +703455 +2366494 +1396426 +571125 +1340991 +703441 +2506740 +1196352 +1993272 +1234300 +728623 +703533 +1234284 +703490 +571352 +1445663 +1952973 +2687465 +1595450 +1120120 +1896880 +2225290 +1363527 +571327 +1983341 +2408936 +1445644 +571358 +2717931 +1286861 +30081 +571213 +2693752 +659610 +2277282 +386829 +2758743 +571348 +824673 +2717919 +2748995 +2049801 +1120112 +2693733 +1384989 +728606 +370565 +2549899 +1286844 +2687454 +1286842 +1157189 +703512 +456693 +824676 +659586 +1173950 +1595451 +571350 +2693723 +1107492 +1286860 +1993270 +30085 +753037 +571254 +227327 +484709 +1286847 +1955605 +2693713 +1445650 +728616 +1286851 +1595437 +739544 +432082 +1400406 +2693737 +2687468 +1993258 +728600 +1983364 +1307432 +932482 +659568 +113238 +456694 +2693754 +1196349 +703481 +1445627 +703483 +1952985 +2225303 +571276 +571231 +113240 +1389561 +1307434 +2366510 +728611 +1099734 +484713 +2099016 +824681 +1363524 +1952991 +1486935 +571271 +703558 +1952988 +571275 +1402949 +571297 +2049795 +2693748 +1099726 +703519 +571404 +571226 +659556 +1363521 +1307448 +1131434 +659578 +571248 +2717917 +571332 +456673 +2408944 +1396429 +571421 +1952975 +1983365 +2049779 +257882 +2049797 +336979 +1340999 +1993269 +1363515 +1384985 +2099020 +703516 +1595424 +2049798 +2225288 +1445610 +659561 +1384990 +2717916 +2677237 +2728721 +743071 +2355215 +2225297 +1595445 +1400402 +1363538 +361983 +571328 +2049792 +1384976 +1993262 +1234320 +2741084 +1993311 +1445740 +2677240 +2225334 +1993309 +113335 +1595536 +1363544 +571490 +2693758 +227329 +824772 +2621796 +824793 +824687 +113276 +2049863 +1983395 +2225316 +1307495 +571496 +2693813 +113343 +113300 +2225331 +2225320 +1363543 +824785 +1993302 +1400409 +2717991 +113339 +2687519 +2225374 +571474 +2693782 +571534 +2049853 +1307449 +983325 +113306 +1234319 +1307486 +1341025 +1993318 +2693764 +2687532 +1286927 +113337 +1595491 +2225446 +1445694 +1983382 +2717969 +1341015 +30104 +1445693 +386845 +2225477 +1120142 +2758758 +257893 +1081658 +1081657 +824693 +370573 +824758 +2677239 +227332 +571488 +1373929 +1445723 +1286933 +2687543 +1131440 +1070395 +659643 +1953015 +1511433 +2099030 +30087 +1968102 +703576 +2225367 +1993290 +1511437 +2225360 +824824 +2225431 +386848 +113362 +1946087 +1286894 +932490 +2225419 +113323 +113370 +824805 +824707 +1445679 +824700 +2693802 +2693811 +1896889 +1896892 +2225337 +1307453 +2345245 +2704412 +1196367 +1983415 +1896886 +113309 +659659 +30106 +824790 +2704407 +2049872 +824833 +2049864 +1445742 +2687529 +2345235 +2025347 +2345236 +1445691 +1595539 +571526 +2717979 +1595525 +2717984 +824777 +571505 +1286877 +2408961 +2225424 +983350 +571482 +2225342 +257909 +1993315 +571426 +824696 +257892 +1307478 +1286920 +571431 +1341019 +456697 +113319 +113359 +113328 +1286870 +1234315 +824752 +1286866 +1595497 +983351 +571537 +571441 +1445744 +2687496 +2717954 +2225474 +983330 +1120125 +2408950 +2687491 +824794 +2687526 +456695 +113287 +1983416 +1983399 +113356 +824708 +257887 +571571 +2758756 +1595520 +1953004 +659711 +2225701 +227341 +1968114 +1445958 +1287008 +1363559 +2693837 +1081666 +2718012 +659661 +257934 +2225684 +1511446 +2762599 +2762372 +825022 +571803 +571724 +932492 +2225608 +2225624 +1993324 +824939 +571988 +2277297 +571814 +571845 +2762420 +571828 +983397 +1595747 +113474 +484737 +1445865 +2762407 +2225489 +571969 +983444 +1307590 +571770 +1307570 +1946111 +1307606 +1993325 +2687572 +825213 +1081674 +2762459 +1363562 +1234326 +1511444 +1445955 +2049900 +2717994 +1287093 +824911 +2762607 +659693 +764390 +825082 +30169 +2693843 +659679 +1993354 +571987 +983411 +1363600 +113555 +825180 +824866 +1287035 +1445857 +1307585 +2225613 +2762390 +1595701 +1595555 +1445837 +1446014 +2506752 +113404 +1287075 +1445765 +743077 +2049928 +1993331 +825149 +113422 +2762614 +825170 +113544 +571767 +1286946 +571760 +2762606 +825007 +1287028 +2225604 +1595710 +113418 +2693830 +2762544 +659672 +113542 +2677247 +1993334 +2049892 +2225692 +571982 +2693869 +571919 +659729 +1287014 +571912 +571694 +1373951 +1445940 +571890 +1307525 +659722 +2762392 +1034920 +2225582 +2741091 +825046 +571611 +824880 +1445784 +1595668 +1595759 +2345259 +825108 +370589 +1946103 +113388 +1131455 +2762590 +2762481 +2225656 +1081675 +2225583 +824865 +2762630 +1445888 +2832574 +2049922 +30145 +825114 +572003 +1287041 +571954 +1595662 +824975 +824901 +825012 +2049939 +1445995 +30152 +825177 +2762408 +30114 +2762380 +1307588 +1595638 +2225649 +113395 +2225564 +1595676 +227340 +825189 +728644 +113432 +825106 +1595557 +484748 +1595725 +2762482 +2225544 +824929 +2762497 +571831 +571986 +1307564 +1946105 +1595751 +1983436 +1287062 +1595730 +1968126 +825067 +1445981 +764383 +2832576 +1445881 +113444 +825157 +2049889 +2762640 +2687555 +1595596 +1445919 +30134 +2762505 +571689 +2762626 +1307619 +1445768 +571624 +825035 +1595727 +2049966 +824952 +1595633 +386859 +1946106 +571691 +1396438 +113504 +113459 +2762485 +2687566 +1968117 +370590 +1307526 +2225690 +2225585 +2225673 +983384 +1946107 +571730 +753039 +2225605 +571917 +2762379 +1373953 +386860 +1445860 +571719 +484750 +2758770 +824888 +2762521 +1234335 +2727298 +1131453 +2762368 +1595595 +113394 +659721 +227359 +1445816 +2225508 +227342 +1445883 +1946109 +1445926 +1445945 +571665 +1595707 +1993343 +1307510 +1595559 +1595716 +2345267 +1131452 +1286992 +571675 +1983427 +825004 +2762565 +2225538 +824854 +825006 +1287098 +1363555 +1445842 +1234328 +1445835 +1286978 +1287070 +113460 +2762625 +370588 +2506751 +825047 +571638 +1595620 +571838 +113475 +2225584 +571628 +2762580 +1307586 +2225697 +1287033 +825167 +2832578 +825091 +2049938 +571592 +2762542 +1946120 +2727297 +1595616 +2762511 +1363563 +1307537 +571886 +304405 +2687599 +825069 +2762358 +1287047 +1363606 +571804 +1445764 +2762357 +571904 +825160 +571817 +257927 +2225635 +2762401 +30156 +2762395 +2225516 +824879 +571999 +1307594 +2693833 +1968128 +1446231 +1196375 +2099074 +2687640 +113696 +370606 +572094 +1446055 +764440 +1595833 +113839 +30185 +2225843 +1932047 +825557 +1087185 +2050093 +113699 +201394 +825560 +659773 +1287161 +2762739 +30244 +2225854 +1259466 +1446131 +1446149 +825412 +572257 +1932059 +659784 +113836 +356863 +825295 +2050091 +113861 +2408990 +825522 +2225816 +1407232 +1287136 +30319 +386898 +2099087 +1120173 +2762933 +825444 +572386 +288033 +825436 +983608 +1307646 +572144 +2762858 +764459 +113848 +572108 +288053 +288056 +572289 +1595864 +113661 +113744 +572409 +825425 +572269 +1446155 +113597 +1946164 +932546 +1595780 +2025357 +825575 +304421 +1651502 +1446084 +2693905 +2762783 +1595883 +113616 +2762674 +1595900 +227398 +257941 +728693 +113580 +2763032 +825645 +1953063 +932523 +983533 +2763020 +2704450 +2704439 +2050088 +825334 +572318 +1446080 +2762737 +728692 +1446157 +113668 +825552 +1234355 +304431 +113603 +983592 +825246 +1287159 +2763037 +1259460 +304457 +1173954 +825512 +288040 +1595890 +2762778 +572368 +386883 +1373964 +2762720 +30338 +1259446 +825364 +2763155 +2225789 +2225837 +1196387 +764427 +2762738 +1120215 +2762714 +2050035 +1081680 +764404 +1446214 +1287122 +728665 +1595764 +983512 +304520 +825554 +113758 +227371 +1595775 +1651518 +825373 +572135 +2049996 +1120162 +2693899 +2693902 +2763128 +932553 +2693895 +2762761 +572276 +386891 +1595849 +1747605 +1953049 +2409001 +2762662 +1120237 +728701 +2762680 +1595853 +1407237 +825285 +983468 +825501 +1747598 +572075 +825638 +1287152 +113785 +2763187 +2762986 +2762786 +659797 +825433 +1120229 +1446217 +2225743 +1196386 +764455 +1446107 +983544 +728676 +113880 +1446118 +2762780 +30277 +2762808 +2099053 +304530 +113676 +572072 +932537 +572104 +484757 +1595838 +2704426 +1234357 +2763002 +2225749 +1511482 +825343 +1287126 +1373961 +572317 +1595938 +2762910 +932525 +1810055 +764419 +932541 +30233 +703625 +572042 +1259476 +825497 +2762880 +764438 +1651473 +2762748 +227372 +2687623 +113837 +2225712 +983553 +2225827 +113817 +572262 +2050012 +1595822 +2762799 +1595913 +386890 +1081685 +2762973 +2099060 +2763061 +2225829 +2762828 +1651522 +30354 +1024408 +572419 +1446247 +825390 +2762904 +1120180 +2763031 +983562 +1024407 +1120208 +825372 +113767 +1747620 +1747597 +113709 +932543 +728696 +2225846 +1120189 +2225858 +2225762 +2763127 +728654 +2763183 +1259471 +825520 +2409013 +1511457 +30271 +983626 +2225773 +764447 +1446227 +1087173 +572302 +572037 +113823 +30316 +728663 +728681 +825229 +2225779 +2687662 +2762968 +764415 +1446232 +2763042 +2762760 +825495 +1932046 +1120177 +825578 +1953077 +2762934 +1595919 +2366531 +2409016 +2762706 +2762969 +983551 +932568 +2762853 +1287189 +2727331 +113797 +1287108 +304525 +30300 +1946141 +1087181 +1287171 +2225860 +456727 +288050 +825450 +1120224 +659749 +2762774 +2762953 +932522 +2762684 +113782 +825249 +356858 +1651510 +1983470 +1595879 +30211 +1307632 +2225838 +30183 +113672 +304523 +113754 +350331 +1446174 +825247 +257973 +2762749 +2099067 +1595898 +30192 +304454 +2762970 +983624 +2727309 +1120221 +825489 +2225793 +2225738 +1234339 +659761 +572133 +1087175 +572219 +983496 +1511496 +113815 +825316 +2763058 +227421 +932572 +30187 +1747618 +484752 +2762911 +2763119 +113573 +356856 +572054 +1651515 +1287184 +113867 +2225750 +983561 +825320 +113831 +1234362 +1120217 +1120204 +1287178 +572285 +572140 +1287194 +728706 +1287203 +572303 +1446244 +1259477 +572291 +825475 +2050079 +113866 +113683 +2225850 +2366532 +983594 +456733 +1446136 +825532 +227416 +1446087 +764461 +2409023 +304489 +2693910 +2762688 +2225825 +825328 +1651524 +572383 +1953042 +983453 +1595787 +30227 +825348 +1307631 +30224 +2099049 +2693886 +1953095 +572384 +659794 +257974 +728659 +1810051 +113834 +2687669 +1946148 +1446036 +1446199 +1651458 +2762686 +703613 +2762829 +2763177 +1595880 +572169 +2718043 +113679 +825264 +304549 +1407233 +932565 +113621 +113790 +304474 +1087178 +2704473 +764411 +983613 +2225751 +825468 +983547 +572164 +2762700 +1120174 +1747612 +2762756 +2762899 +2762757 +30225 +1363631 +1131466 +2763055 +825635 +1087180 +2762855 +2763080 +2225748 +2727304 +1287132 +825368 +825358 +288041 +2050083 +1446089 +113578 +825847 +825811 +703670 +932577 +30452 +2763270 +2763228 +1446441 +1596059 +1596009 +350334 +825834 +1645206 +484763 +825918 +113986 +1596027 +2225950 +1287294 +304577 +1596018 +114032 +1446275 +2071656 +572476 +113951 +825995 +113911 +572516 +983712 +572678 +30374 +288061 +703676 +825823 +1446342 +1234364 +825740 +2071654 +1287295 +2050130 +825831 +114143 +932597 +825787 +1287258 +572503 +113956 +201418 +1287223 +764493 +906385 +1446349 +825925 +983715 +2071648 +572502 +1645204 +1596028 +2763243 +1307689 +2763263 +304566 +30456 +227429 +288063 +572703 +1932070 +1446325 +728713 +1446253 +825677 +1596010 +572683 +2225921 +30448 +572471 +1596043 +1511514 +1307690 +2226035 +826021 +30376 +1810057 +1446412 +1403556 +572470 +1287241 +1595977 +1446353 +113892 +764495 +572450 +572664 +30429 +2225886 +2050120 +114053 +1287271 +1700251 +386906 +2050211 +572440 +456738 +2225947 +1596005 +659818 +2050158 +30382 +1407256 +30398 +1120243 +1446338 +572436 +1024426 +2225865 +257994 +572576 +825949 +825718 +572696 +983683 +1446365 +572490 +2050215 +1595951 +1596030 +572582 +1446385 +1446389 +572618 +113919 +825853 +1152893 +825959 +1651554 +304559 +703669 +2050157 +2225971 +932596 +983664 +113885 +825982 +1932077 +825743 +30412 +1596032 +572719 +825666 +2226011 +826012 +1511517 +2822749 +201419 +432092 +1596068 +572722 +825879 +2225872 +572539 +572542 +1259482 +825849 +258003 +2225993 +1341056 +1446296 +2050185 +2050108 +825802 +114052 +825751 +1596061 +659809 +825828 +572478 +386910 +1595988 +572724 +2050222 +572686 +983698 +1446396 +113904 +113964 +2366557 +2050119 +932580 +30405 +825785 +2050176 +764477 +113948 +1446438 +2366564 +2050112 +1700246 +1446363 +825963 +572563 +30426 +764492 +1446448 +2071642 +2832591 +825746 +659820 +1287257 +114124 +1446305 +288060 +1287274 +764500 +825690 +2225961 +2050172 +572480 +572466 +572506 +114129 +114050 +825863 +572733 +1287301 +1446262 +2050165 +1651545 +1596023 +30391 +1446361 +572614 +2226038 +2226006 +932583 +572730 +825809 +1595960 +30441 +30395 +1446274 +370616 +572607 +113894 +2050152 +2071664 +2226007 +2225915 +572624 +113982 +2366559 +2225941 +30457 +257991 +456739 +1287228 +764523 +386908 +825972 +1759757 +2677266 +114253 +2277311 +659916 +1446512 +2549905 +288096 +573083 +1307701 +30562 +2226206 +2693926 +826137 +1993357 +572744 +114281 +2687674 +983737 +573110 +1932115 +114250 +1759774 +1446531 +1446477 +573104 +2226184 +2050288 +572914 +1651610 +1759779 +1266092 +1035073 +572903 +304681 +572793 +573049 +503577 +2050275 +2369272 +1596157 +304692 +1035111 +304729 +573037 +304643 +1446552 +1596130 +1596241 +2050290 +826166 +2050308 +1747657 +572928 +1446464 +983768 +1759759 +304678 +573084 +2409153 +1373996 +659890 +983784 +764543 +2677261 +983731 +1759772 +30540 +2050303 +114195 +304719 +1120251 +2687679 +2226287 +288104 +304658 +1234368 +2050282 +826295 +1035084 +1932102 +1747683 +659901 +1035112 +1596150 +2226296 +2687680 +983755 +30556 +2226183 +572860 +1446495 +826261 +572992 +659905 +573064 +2226075 +1035071 +1307746 +572866 +484779 +1373988 +572842 +1651592 +304667 +1373968 +288116 +826039 +1596240 +573050 +1446530 +114168 +114182 +826107 +2409121 +2050235 +2226214 +2050299 +1446576 +2369279 +114287 +1307795 +1596124 +1373984 +2409140 +826148 +1596088 +826319 +1307764 +1287361 +1596219 +826152 +1287360 +258024 +2369274 +1307760 +2050321 +826163 +2409044 +1259500 +826162 +2226069 +1446510 +304731 +826170 +1651585 +2226262 +2226170 +114191 +2226163 +659862 +1034951 +1596224 +826303 +114238 +573024 +573013 +2226126 +1446463 +114284 +1035072 +1307708 +826151 +826186 +572854 +572829 +1446528 +114279 +1287387 +304712 +659851 +2409138 +983739 +1035051 +2050296 +659857 +304693 +1234383 +304580 +304637 +1596110 +826066 +1287369 +2226080 +1259512 +1287342 +1259515 +1932106 +1651633 +2369291 +304620 +304726 +2409102 +1446540 +503579 +1363644 +2226282 +983738 +573071 +1035049 +258017 +572890 +304596 +1259527 +288098 +1596152 +1993355 +572821 +764544 +2409053 +1596197 +572768 +1287335 +826227 +572784 +2277309 +114188 +1035110 +2226258 +2409045 +2226297 +2409134 +983787 +2226113 +2226194 +573046 +1307711 +573105 +1596144 +1034986 +1596143 +1953114 +1651570 +2409100 +304588 +826309 +1287321 +826116 +1035076 +2226215 +572755 +826292 +573021 +1307763 +572794 +304625 +1446511 +983794 +826045 +1596160 +572916 +114216 +288086 +1307772 +2050326 +1446513 +30549 +304606 +2763273 +983773 +2409039 +572920 +1651581 +304636 +288115 +288091 +2226211 +826155 +2226237 +1721700 +304610 +1035021 +288107 +304660 +826196 +826299 +1307758 +572994 +503572 +1747639 +572742 +1946181 +2693931 +1035068 +826122 +1307771 +1596185 +2687695 +1446479 +2226288 +2677277 +572991 +659910 +1446484 +1307747 +2687681 +2226165 +1932092 +1307794 +1446557 +826262 +1446571 +572857 +114261 +826305 +2226123 +2727348 +826089 +2050309 +1721713 +1287362 +114193 +1747656 +573095 +1596162 +1596234 +826259 +1446482 +2226146 +1596167 +1259517 +2763276 +386947 +983789 +2226122 +573051 +573162 +659980 +826482 +2621817 +2226472 +1307810 +258056 +2621822 +1446670 +114322 +1596376 +2050398 +114408 +1363657 +1315342 +1287400 +1407269 +304744 +2763283 +573317 +2226320 +1946195 +2226389 +1946209 +826457 +386966 +573161 +826437 +1747693 +703727 +1446636 +826342 +826365 +659982 +2415686 +1131488 +826490 +573214 +1307855 +114388 +1596300 +386955 +114367 +826438 +2677286 +2099095 +1287403 +1596403 +1651644 +659938 +1932144 +304746 +826341 +573119 +1385006 +1596327 +1596395 +703720 +826498 +573177 +1511556 +573365 +1596269 +983847 +353126 +703740 +932620 +1446712 +1307827 +2226447 +1346459 +573242 +1747712 +826535 +1651651 +1363652 +826414 +2226382 +1287426 +1596324 +1596282 +1035120 +1596353 +30585 +2226436 +1968139 +573353 +573359 +2693953 +1363715 +1596420 +1596306 +1486942 +2693963 +386964 +2226328 +1287415 +1081705 +1664542 +1685047 +573279 +826514 +114319 +2273596 +573209 +659949 +573127 +2050379 +1035138 +1716994 +1488323 +2226346 +826523 +826326 +2226512 +1596361 +2050451 +304755 +2226471 +2226325 +2226525 +1747698 +2226432 +1389576 +1596316 +484840 +983819 +1596381 +573121 +573152 +2693965 +258035 +1287399 +484835 +1993372 +1307812 +484783 +1810065 +2226444 +745556 +826344 +1446651 +573326 +2226487 +1234400 +2621815 +2226317 +114421 +573166 +2226423 +1596291 +573222 +1402972 +573245 +2763286 +1120275 +1932146 +659950 +826479 +1511537 +728734 +728729 +983814 +1716997 +983816 +14 +2099094 +2226302 +2050339 +1120269 +573375 +728738 +2226467 +1993387 +826453 +573247 +2226339 +743080 +2226359 +2029064 +2050341 +1363724 +703707 +573175 +826434 +1946206 +1035124 +2226476 +1446629 +2226303 +1993391 +1983482 +703724 +573168 +2409181 +1810066 +573165 +304747 +826325 +826345 +703702 +1307803 +1120291 +1968141 +30583 +1307845 +1939646 +2050405 +1446715 +573259 +114406 +728721 +1983500 +1983489 +1596406 +1400412 +573265 +1993376 +826336 +2050411 +2758800 +484793 +386965 +826462 +1363646 +826449 +30591 +2226351 +2226498 +2226491 +1081695 +1341090 +114383 +1307802 +2226336 +1932138 +2226431 +2226310 +1363661 +573314 +1511543 +2226497 +826381 +114397 +826406 +227455 +703748 +764550 +1363679 +826377 +2345313 +2226494 +2226429 +2409169 +227448 +659944 +1081702 +386961 +1307856 +2345307 +2050404 +2693955 +2226504 +573357 +2050446 +484858 +753046 +1287490 +1363742 +573555 +703807 +1946228 +826758 +1446721 +1896948 +2226695 +2741100 +983848 +30612 +1896957 +2547405 +1716998 +2050528 +826575 +1596500 +573665 +114487 +660010 +1446758 +826748 +2345359 +660033 +1596525 +2226562 +2226844 +2226558 +2345331 +2345394 +2050671 +573451 +2050628 +1596575 +2687722 +573556 +2050696 +2050592 +1658557 +114456 +2050512 +114512 +573414 +1363740 +2345352 +826708 +1363741 +1596480 +1993400 +1446810 +1946222 +2050649 +2050483 +826639 +573678 +2687727 +826558 +2226595 +1596514 +1446749 +114545 +826754 +1953138 +1953124 +1287440 +2226672 +826563 +932644 +826591 +1596538 +826777 +1446797 +1953140 +2226757 +2050473 +573457 +826564 +2226582 +2226587 +826607 +2226630 +304759 +2050627 +2050560 +826781 +2050643 +826648 +2226758 +1446904 +1596568 +1374028 +114504 +1596499 +2050684 +114535 +2050632 +573519 +2226810 +114454 +826551 +660060 +826720 +1287511 +826795 +1596532 +573477 +1968162 +2050539 +2226682 +2687728 +304763 +826662 +2226693 +2226599 +2226835 +983889 +2226568 +2226660 +573672 +2050542 +2345375 +573621 +484874 +2409211 +660058 +2226635 +2050591 +573472 +2027785 +2050619 +2345398 +1596626 +573692 +328744 +2050614 +1968147 +2226604 +2050664 +1511559 +1385012 +2226791 +573668 +2050564 +573552 +1446803 +2050598 +2693989 +1341095 +1596462 +1446833 +1287453 +114511 +826823 +1596593 +1596617 +2687711 +30630 +2226779 +2226601 +983915 +30626 +826599 +1446901 +2345410 +1446834 +1946227 +2345388 +826674 +2366589 +2050533 +2687734 +2050657 +1596433 +2050641 +484881 +2366591 +728771 +1446805 +1446819 +2226659 +728774 +2050548 +932643 +2226864 +2226539 +573612 +1446827 +114469 +1596546 +1446885 +573524 +2345324 +114467 +826819 +1341092 +2226790 +2547399 +227471 +826824 +1968151 +2226687 +2050559 +2226614 +2345343 +2050501 +573613 +2345401 +2693988 +2345392 +2547406 +2226631 +2050646 +2277365 +1446734 +573432 +2050534 +1596535 +2050546 +2345402 +573550 +764560 +983857 +1307944 +826709 +573430 +1234410 +2226726 +826683 +2050494 +826603 +573623 +2050655 +826766 +2547425 +2050487 +2050651 +2050609 +2226763 +2226843 +1896936 +660007 +2050683 +983922 +983919 +2677291 +1983518 +573481 +370625 +573411 +2050640 +1596522 +2050662 +2366590 +2050471 +2226704 +2345338 +1374031 +1446903 +1596603 +114480 +573641 +1658559 +573676 +826589 +1120296 +1896939 +826645 +826578 +2226837 +1596516 +1596576 +2226600 +2226749 +1446809 +1287508 +1896961 +2050455 +1596562 +2226611 +1446783 +114507 +1993420 +573513 +1307910 +826623 +1287479 +2050475 +1446888 +114529 +1446768 +114534 +30641 +2409235 +1596630 +826893 +2227016 +2226909 +2227006 +573782 +1447012 +2345427 +2627409 +2050787 +386986 +826988 +2409234 +2050838 +1946271 +1596723 +826939 +703835 +2226913 +827040 +2226976 +826854 +350341 +2227020 +1446959 +826974 +573775 +2050825 +1707999 +114568 +2694005 +2227015 +1596688 +2687752 +703845 +2227030 +2025396 +2409229 +728784 +1447006 +2050706 +1446941 +1407274 +1446962 +2687767 +983926 +2050837 +1446981 +573880 +1446961 +1596644 +573832 +30649 +983972 +304765 +932661 +1341133 +114558 +932656 +114600 +1369191 +1596678 +2226886 +826881 +2727360 +1993441 +1896965 +1596637 +2227004 +932658 +1993453 +1596704 +1946270 +2025408 +1259542 +1259543 +1341109 +1685048 +703821 +1446947 +2050727 +484907 +2227096 +1946252 +1446946 +2027797 +827049 +983933 +30637 +1307961 +1596701 +2226990 +2345423 +2345418 +1596664 +2227051 +827046 +1651657 +2226906 +1747756 +764561 +2050801 +2227008 +1234438 +2694007 +1747746 +2227069 +573826 +573790 +826944 +2277367 +1120309 +2050835 +1946263 +1721730 +764563 +660096 +826853 +2099136 +2099120 +826925 +573828 +1932157 +1946275 +2227017 +826962 +1968172 +1035156 +573743 +1374039 +573731 +1374042 +745564 +1363772 +1447030 +826971 +2727361 +826848 +2409225 +826899 +2227060 +2706104 +2227007 +2227027 +1596711 +1259549 +386997 +2741105 +1446982 +1596676 +2226899 +660083 +1402976 +827043 +2050746 +1363777 +826957 +1596714 +983966 +2687774 +983979 +826994 +1939651 +2687781 +573827 +2683545 +826912 +1721731 +1993447 +703825 +1287518 +114562 +573816 +2099113 +1993471 +2227018 +1363760 +826963 +1259544 +30633 +2099127 +1596653 +2226903 +983968 +2050810 +2226937 +1596657 +456762 +350337 +2050832 +2694003 +826874 +573805 +1307964 +1446988 +826885 +394213 +1081710 +2277377 +30632 +573723 +1446967 +2227082 +573852 +1259552 +1511579 +1983584 +574247 +1259557 +1120340 +2050882 +1099789 +1307990 +1717011 +2621845 +574242 +1308016 +1970350 +574112 +574204 +1993486 +728791 +1341185 +728808 +660131 +574139 +2621848 +1341158 +660216 +2677298 +2002806 +1983563 +456787 +660164 +2677299 +703871 +574372 +1953183 +1206654 +574298 +1447046 +1447039 +2627411 +573943 +574051 +573937 +2729539 +114641 +2227165 +2273469 +1983662 +1287615 +1363820 +574238 +728877 +827132 +574167 +1287567 +440148 +1968190 +1308009 +574364 +574337 +1287609 +574150 +114636 +1363793 +1341138 +1363803 +1287569 +1983633 +114669 +660173 +1035170 +660108 +1287604 +2366616 +1946301 +574082 +660230 +704052 +573977 +2366660 +1596734 +1664545 +2729541 +1287573 +703910 +932667 +456804 +573952 +827100 +1099788 +932681 +212143 +574000 +827124 +1983610 +2366654 +1287640 +574045 +728892 +574080 +2227198 +1983574 +574127 +574059 +1120342 +704111 +1341174 +201436 +2621827 +2506776 +573910 +703972 +2366604 +1287589 +574367 +703924 +2366655 +1983639 +1953180 +574361 +574046 +573906 +574003 +574023 +1341148 +2366621 +2366675 +932673 +704079 +2227193 +1287591 +2729497 +574287 +660202 +704015 +573891 +574342 +573988 +2002826 +574148 +2366602 +2227161 +114675 +703887 +1308019 +1259556 +1287624 +2227162 +2729536 +2621879 +573919 +114631 +1341203 +1983627 +827087 +1983622 +2050878 +574092 +1287565 +573896 +1287552 +2518274 +2227127 +1035174 +827102 +932676 +1374046 +1983617 +1447058 +456818 +1341196 +2227144 +1287551 +1389590 +1968197 +703905 +932670 +1983573 +1363815 +827115 +2227199 +703880 +983982 +574387 +227502 +574052 +1983604 +574324 +1287611 +1983651 +906406 +574141 +2227183 +574211 +1287632 +1385028 +456820 +827099 +728851 +703983 +1946292 +704057 +2366617 +574203 +574121 +2354055 +827140 +2366650 +574283 +2621852 +114645 +1983582 +1946298 +574263 +660106 +703907 +1447055 +574363 +2366637 +2729521 +1140783 +574021 +704017 +1363821 +703875 +2366672 +1287580 +704098 +2729527 +660225 +2227153 +1946307 +1287635 +1717001 +1287559 +227515 +728866 +1287634 +1363839 +574073 +718586 +2729516 +114664 +1196426 +1402993 +827121 +660181 +304781 +2366662 +2621855 +1287631 +1363817 +2050852 +2227146 +1307989 +114632 +573920 +1363840 +1363829 +2409251 +2366631 +827061 +728887 +574382 +1968192 +660209 +703899 +2050914 +1447060 +1287603 +1363792 +660174 +2621882 +574163 +574094 +1308028 +574091 +704073 +1983575 +370645 +1308005 +1447042 +1385020 +1983600 +574062 +739557 +1341180 +573981 +1402995 +1447088 +1402999 +2227288 +484921 +827276 +1308074 +574474 +827191 +2621913 +827187 +503614 +1363851 +30667 +1196452 +574550 +1447169 +1759803 +1447185 +2718130 +574580 +1447173 +574487 +984016 +1447167 +2050927 +30663 +114772 +114773 +2227290 +2227277 +2050979 +2227304 +574436 +1596854 +1099791 +827264 +503613 +2227217 +660295 +1447126 +387030 +1287657 +304786 +1035185 +1341216 +574459 +574555 +827223 +1120381 +660283 +574618 +1447101 +1983689 +370663 +2227215 +827212 +1120361 +2050988 +394214 +2227273 +1983680 +574417 +2366690 +258071 +1287665 +1596839 +827238 +1651668 +932697 +30698 +574433 +2227285 +1447094 +114739 +827166 +1447190 +1363854 +1596822 +1596810 +2227259 +30681 +2704542 +1821179 +1968207 +1983684 +1099793 +456837 +660257 +660259 +1234477 +114832 +574553 +574636 +660270 +2050920 +1407284 +30682 +2227311 +114799 +1099808 +1993513 +258081 +1968216 +2677313 +114762 +574627 +574492 +827306 +2621897 +1596811 +1596831 +2677319 +1983679 +2621905 +2227340 +370654 +984013 +827213 +1363881 +1447174 +1651667 +984002 +1234495 +827178 +2227235 +114691 +1363863 +574471 +1596780 +574444 +1120368 +1946319 +2227209 +574559 +2227239 +1363860 +114686 +1099801 +2415689 +827222 +574518 +1070431 +1120367 +2050985 +1287661 +114754 +114778 +660275 +2506781 +1993489 +1120373 +370665 +574446 +1308048 +2704522 +258069 +574639 +1107510 +114807 +932699 +1708000 +114747 +1700267 +114812 +114817 +932700 +1374064 +1120365 +827165 +387018 +1968206 +1035204 +1596843 +1363869 +2227296 +2227278 +2749008 +2050941 +1341226 +1759794 +114690 +114711 +114710 +1717016 +1596844 +1447158 +1120354 +574415 +2704527 +456833 +227517 +984060 +1287660 +574548 +2227280 +2549935 +2227279 +574617 +1596829 +574442 +114741 +704154 +114712 +2050925 +1234490 +1234492 +2227240 +1131502 +827184 +660265 +574630 +2227225 +1389596 +1308052 +574640 +704153 +827275 +387041 +574871 +2345496 +1403009 +1287758 +1596941 +2051035 +2227519 +2227659 +1596967 +2409296 +1363922 +2227457 +1447352 +574782 +574706 +827331 +827433 +1447240 +1993576 +1287748 +704180 +2227540 +499674 +827336 +1993551 +1897024 +2227624 +370672 +114912 +1120401 +827455 +1447349 +2366692 +2345491 +2409291 +2694041 +1447268 +1120407 +484934 +1596950 +574690 +1983715 +1932170 +827588 +1266108 +114871 +574740 +114918 +1596946 +574656 +574736 +2345506 +827436 +827543 +2409303 +827468 +2345472 +574819 +574777 +1596880 +827500 +1374086 +2227496 +574801 +827494 +1287721 +1341253 +660367 +1308104 +574837 +2227378 +499669 +1287710 +2050997 +1747797 +1983717 +2105707 +827479 +2687806 +1946335 +574855 +660337 +1447304 +574840 +2227554 +2051031 +728920 +2227346 +2227645 +2227489 +2025428 +2763291 +1287716 +1946330 +2051080 +1993571 +2345486 +114872 +2051075 +1953199 +2227365 +1447295 +1983709 +499660 +574815 +1946334 +1447281 +1447282 +1597001 +1385039 +2050999 +1447336 +574779 +574745 +114928 +827461 +704196 +2051013 +1596860 +2051085 +2227630 +1234511 +1035210 +2227637 +1447276 +984083 +984062 +1266107 +574773 +114854 +1983718 +114920 +30727 +114962 +2691045 +2718151 +1341242 +1403007 +1447312 +574730 +499656 +370686 +1447288 +114908 +704197 +499658 +1447329 +2227588 +2227492 +2227449 +1953203 +2694045 +827519 +114898 +827412 +574885 +114966 +2277390 +1447226 +1341250 +2227564 +2227534 +1983710 +1447348 +574868 +114866 +827569 +2227387 +1447277 +1287690 +2227581 +2227479 +728925 +574781 +2718139 +1511603 +1596948 +114899 +1596985 +1897027 +827523 +827324 +2227629 +827358 +1363910 +827528 +827391 +2741118 +2694054 +574770 +574739 +1596893 +574897 +2051078 +574889 +1680517 +2687825 +114906 +827422 +574796 +704179 +827538 +2369298 +2409293 +1447246 +2277393 +1234516 +2051049 +1447322 +1953207 +1259574 +574785 +574893 +1747782 +114950 +2227568 +30701 +2227570 +1993561 +1157194 +1596871 +2227525 +574874 +2409285 +1993566 +2687827 +2366695 +574854 +1447357 +2051083 +1993560 +2050996 +2227605 +484944 +499668 +984072 +2051042 +2227366 +1993534 +114954 +2687833 +2345481 +2099159 +499650 +1596987 +660336 +1234520 +499673 +1447216 +574832 +1259581 +1596870 +1447290 +1596921 +2345469 +1993537 +1596926 +2227594 +1447200 +827361 +1447225 +1308116 +2227556 +984085 +827330 +2694050 +574844 +1287737 +2227389 +1946327 +2051006 +336996 +114921 +660356 +2051021 +1315353 +2025419 +2227483 +827591 +2227474 +1946331 +827517 +1447355 +1596955 +1993543 +2227478 +827397 +1308120 +1447243 +1596976 +2227420 +1983693 +1596961 +2051047 +660351 +574857 +1287752 +1287713 +2704560 +574947 +2227661 +574910 +704205 +1597078 +1363963 +1907376 +30730 +1511606 +1346479 +1234551 +1597105 +115018 +2706108 +2345543 +1266109 +574957 +114994 +2694083 +2013291 +114985 +258085 +728935 +575054 +575090 +1953218 +1983746 +2227782 +984119 +1953226 +1099826 +1363956 +1597082 +2741129 +575103 +984125 +2105716 +1955610 +2366734 +1099825 +2227709 +2227660 +1447403 +574903 +2694097 +764589 +575034 +2051113 +115017 +2277398 +1287767 +2694073 +2549941 +258083 +2718167 +1447476 +2227756 +2227712 +2227813 +1597091 +2366748 +1035222 +2051104 +1308146 +2694084 +728932 +1946361 +827651 +2547430 +574982 +2741137 +1234560 +1953219 +660412 +1597072 +574948 +1287771 +1597077 +1234540 +1363970 +387065 +575122 +2051154 +1847028 +1287760 +1447493 +575088 +1953229 +387060 +2051132 +1447482 +2051150 +1341265 +1308153 +660388 +370696 +660428 +575011 +2227701 +2051112 +1206657 +1700274 +575121 +1447432 +1234534 +1747806 +827702 +1597085 +660444 +1447443 +2718172 +2366728 +1946340 +1447485 +2277397 +1308150 +1447454 +1287762 +2051126 +984128 +827654 +2704570 +1341272 +30736 +2227672 +1287775 +2345548 +2051133 +1234552 +1946357 +1341276 +1266114 +932730 +1374094 +2013289 +1287815 +2694078 +827723 +2727387 +2366706 +575014 +114974 +1651693 +2366744 +575061 +1447376 +2051152 +574959 +660385 +574961 +2227741 +2227845 +1287805 +575082 +2105719 +2051149 +484956 +1035228 +1993594 +1946367 +574943 +1993591 +574990 +575062 +2706110 +2051153 +827738 +1721739 +1447461 +574930 +660384 +1907375 +1983773 +1597086 +2227793 +1993582 +827688 +704209 +575015 +574974 +1346477 +575127 +660382 +2718177 +827640 +440151 +2273601 +2227667 +2051135 +2051162 +1447374 +356890 +2718202 +827804 +456840 +1447510 +2051251 +984144 +827909 +115173 +575190 +370706 +660510 +984185 +1287941 +984237 +1597178 +1447537 +2366751 +2718186 +2227972 +1385055 +2227883 +1897060 +2366750 +1597220 +575347 +2051208 +304823 +827874 +1946398 +984246 +115089 +827757 +2704593 +1597119 +1196469 +227558 +660482 +2758824 +2687861 +2409369 +30765 +1363976 +2051198 +2051237 +370702 +1364000 +2727393 +2227900 +2345617 +660536 +1968230 +575397 +1287850 +660526 +1287873 +1447668 +827992 +1308210 +1597180 +827853 +2345580 +1287933 +660524 +660476 +1597276 +1597182 +30761 +2051283 +2228004 +2227884 +1993616 +1597167 +2228045 +1447617 +575143 +1447671 +575346 +1447639 +984151 +984261 +1953242 +827888 +575348 +2227990 +2228068 +827801 +827933 +1363995 +575263 +827810 +1983813 +2345583 +2409371 +660555 +115213 +115085 +2228007 +1597156 +115182 +984161 +984187 +2409363 +827916 +1308175 +1287835 +660563 +827961 +2228061 +1597268 +1447629 +2051234 +828000 +2718200 +30773 +827981 +2749023 +2227923 +2227910 +2506788 +2051180 +827993 +2227961 +1447505 +827820 +827950 +1597247 +1374125 +2051197 +115071 +1511635 +1287851 +2345574 +2345558 +1447524 +370703 +2307276 +2227941 +984171 +575440 +827923 +2718203 +115187 +2099174 +1363982 +2228040 +827792 +575204 +2718187 +827984 +827754 +2227970 +1597129 +827784 +1407293 +1983798 +1447583 +660499 +575174 +1447568 +2506793 +115151 +827867 +115060 +984249 +575400 +1374123 +2051192 +1597157 +1597169 +2687872 +2227926 +1363983 +1447672 +1511634 +575336 +1447658 +2227979 +30772 +827808 +984263 +2227932 +1447531 +984227 +115105 +984148 +2227993 +1363999 +827805 +764605 +827966 +1447560 +1287852 +660533 +575239 +1597234 +30770 +1993625 +2227868 +1363985 +2741142 +2704594 +1035253 +827965 +827752 +1993629 +575469 +575150 +827779 +1035251 +1983812 +827809 +984147 +1363993 +764601 +2704606 +1287910 +1099831 +1374100 +984221 +2051187 +575165 +2228019 +2345594 +2694121 +2227971 +2345615 +1447595 +1385050 +115128 +575454 +575199 +2307272 +227547 +1287903 +575315 +1946375 +575377 +30748 +1287859 +2228011 +1946385 +2687856 +1447665 +2345559 +575460 +1511622 +827977 +115156 +575253 +227554 +728965 +2228012 +115186 +2345604 +1385049 +827744 +2687855 +115161 +1447677 +827872 +827988 +827941 +2409364 +1308236 +2285273 +1680521 +828050 +1597361 +771594 +575738 +115271 +1511649 +828161 +1447700 +575774 +2099213 +440157 +660570 +1099841 +704241 +828043 +2002830 +2228181 +932760 +743128 +1287969 +704315 +704227 +2706113 +201444 +575716 +828166 +932758 +575556 +728977 +115293 +575634 +2099223 +575739 +660638 +575597 +660567 +2409391 +115242 +575511 +456857 +828048 +729013 +304830 +2228180 +1364026 +115264 +115316 +2072219 +2228141 +704240 +1447827 +575571 +828167 +1597325 +704303 +575613 +1953250 +2228094 +828136 +2051290 +1597284 +764613 +1597291 +2228245 +2345664 +115298 +743122 +2228146 +575622 +2345621 +1597342 +115296 +115303 +2228122 +1597341 +2072215 +1597350 +2099199 +115241 +828127 +2228090 +115299 +828154 +2683552 +2099220 +1447718 +2051308 +739572 +115229 +1364009 +704329 +115230 +2099194 +456853 +1597326 +660565 +575663 +1447826 +1287945 +660622 +2345648 +2228161 +575700 +503641 +704276 +660585 +1897102 +2051336 +2366762 +1447777 +575685 +575520 +575703 +1447732 +1447775 +660621 +828097 +2228228 +1196471 +704299 +1341305 +1173973 +115295 +660589 +704268 +30783 +2228199 +2228115 +2345625 +227576 +1364019 +1897092 +704323 +575607 +2345638 +1511651 +743125 +704244 +2345658 +575495 +2051357 +2051366 +575617 +115307 +984279 +2051322 +575604 +575740 +575636 +1234573 +1597346 +828193 +2687882 +718588 +304828 +1511659 +728983 +1364007 +704307 +2099231 +115238 +2228109 +728973 +1597339 +484979 +2228091 +828079 +1035260 +704320 +984285 +456846 +1511658 +660618 +1447759 +2051320 +2228190 +739574 +2228145 +2051344 +2228240 +575584 +1447790 +115312 +2051316 +747644 +764614 +575593 +30779 +575628 +2228198 +932756 +484968 +660599 +1447820 +1374132 +456844 +1597308 +828041 +575497 +660578 +728999 +484982 +743133 +2763304 +1234572 +30806 +1897115 +345365 +984363 +456876 +2345677 +258137 +387103 +404794 +2506843 +201568 +387111 +499689 +350368 +1651715 +412403 +1842650 +2228307 +2228271 +456913 +575783 +2228340 +115329 +484997 +387119 +201505 +370758 +499688 +1447842 +115566 +227631 +115559 +115354 +345405 +115639 +420866 +30874 +30801 +420681 +420789 +418059 +350375 +499809 +304835 +1140795 +115649 +1597423 +420966 +115429 +456924 +1597426 +258278 +30889 +499765 +345310 +1597404 +412456 +485134 +485113 +421022 +337056 +115522 +328847 +420731 +115340 +2345694 +258239 +404801 +258199 +412340 +984325 +1897105 +345292 +350380 +485033 +115610 +115579 +412396 +420890 +115422 +420976 +2051397 +420675 +485006 +2051400 +387097 +30908 +984294 +115679 +485000 +258155 +1597420 +485105 +227596 +2506834 +115542 +115444 +456899 +115449 +115462 +2228293 +387100 +575789 +420766 +345376 +115346 +2621959 +201486 +2228325 +30885 +30856 +30853 +258305 +398037 +227715 +499801 +420921 +115555 +201477 +227659 +485110 +420800 +345358 +397977 +258251 +420776 +421016 +420752 +370737 +412375 +420737 +2228292 +575788 +420743 +115365 +456889 +420777 +201470 +397995 +420810 +932777 +387121 +337054 +397979 +420885 +420728 +432103 +258235 +201463 +350428 +115505 +420823 +2228392 +420946 +575782 +349628 +420956 +420784 +258211 +345311 +337059 +485009 +499737 +485091 +2228346 +258296 +1897139 +398007 +2228311 +2621972 +499724 +30828 +227627 +328809 +485064 +201553 +115364 +345360 +432096 +412452 +345347 +420868 +227724 +387120 +456886 +337038 +345287 +1785751 +345378 +418042 +2307298 +350384 +328764 +2273603 +115589 +2506820 +345328 +1897142 +729021 +115424 +227622 +1140799 +30904 +328839 +499827 +201534 +421122 +412401 +30868 +356919 +420761 +1597376 +1597421 +345366 +30931 +345289 +2549958 +247069 +370730 +115476 +1597409 +420873 +420793 +1897127 +2506856 +227644 +2506833 +201484 +1897111 +420765 +420997 +412424 +258131 +227585 +115477 +258171 +2228272 +420798 +484995 +328755 +2345674 +115439 +485030 +370739 +115600 +398028 +115382 +2228296 +258227 +575776 +1486949 +499703 +2105729 +420881 +432128 +201513 +1447835 +1134071 +412400 +258169 +420930 +247067 +456887 +2228394 +984352 +115389 +387099 +115455 +115563 +420741 +499713 +304834 +201542 +370720 +227658 +227628 +499880 +258287 +258166 +328814 +2051380 +350418 +1897147 +499836 +2099237 +704342 +2506828 +201493 +2051393 +418076 +115361 +350393 +115512 +499833 +115425 +115651 +30873 +30916 +499927 +499750 +420900 +499761 +2506807 +345359 +30847 +420713 +227625 +984344 +499788 +1597380 +1597405 +412393 +115427 +258109 +227727 +2228277 +2621967 +2228366 +421007 +421103 +227654 +30906 +499771 +412411 +30911 +420695 +2345670 +1700280 +201573 +499851 +421131 +398001 +412438 +345386 +418030 +30939 +201547 +258126 +984370 +456885 +420991 +984330 +412418 +227689 +421076 +115409 +485057 +201499 +2228281 +420905 +370733 +1597398 +227616 +258132 +499822 +2228384 +485029 +350427 +115604 +485150 +420790 +420688 +345313 +1842651 +115436 +984295 +342007 +30900 +30817 +1364069 +2051464 +1308320 +2627420 +2704618 +1308263 +576016 +2366772 +575854 +2687895 +1447899 +828473 +2345736 +1983850 +1447945 +2051548 +1035267 +1120439 +2228489 +2706126 +1088527 +575844 +1970365 +2228600 +2051578 +2518619 +575901 +828264 +1447961 +575937 +828466 +1939661 +828339 +704370 +1369204 +1721759 +575857 +575978 +247070 +2099274 +1448151 +828534 +1308265 +1983863 +575833 +576120 +576002 +2228741 +1597439 +2228783 +2051660 +1287978 +828563 +2307299 +2051506 +984421 +2228793 +499935 +2228759 +2621981 +575820 +1315365 +1364049 +1308273 +2228418 +576027 +2228441 +2051565 +1968256 +2027814 +575804 +828282 +2687894 +828552 +828323 +828446 +1597568 +2345727 +2627445 +660688 +828463 +1946437 +2355231 +2105752 +2051454 +1447979 +1597485 +2051521 +1308308 +828439 +1448018 +2228722 +1597506 +828276 +2415698 +984422 +575875 +1447967 +2228787 +2051608 +2228710 +576141 +1946415 +1288070 +1346485 +828512 +115755 +1341317 +1939665 +499939 +1448097 +1308315 +1447938 +2758841 +2051528 +2099257 +729038 +984426 +2051600 +2228499 +1721755 +1448112 +2366777 +2228506 +2228764 +764617 +2051683 +1993670 +575861 +1597499 +660661 +1374149 +828484 +2051656 +704375 +2687893 +575907 +2758851 +2099254 +304847 +2549970 +1447913 +1448102 +575945 +1364071 +1953258 +503672 +660709 +575841 +2749359 +2691053 +2228507 +2051532 +1287992 +1597442 +2228540 +828548 +1447932 +828379 +1266129 +1308297 +2105760 +2051474 +575998 +575831 +2105757 +1288098 +1448103 +1993659 +499941 +2051419 +828345 +1597541 +1288057 +828237 +828335 +2228603 +503659 +828351 +1288056 +828499 +1308311 +1993705 +1389609 +1448123 +1341321 +1389605 +984427 +2228616 +2228560 +115748 +1308319 +828245 +984386 +2051551 +1946434 +576058 +828289 +1120441 +2051620 +1946407 +1448058 +1511668 +2051424 +2051568 +984414 +1448094 +1341322 +2277417 +948597 +575896 +576043 +1407308 +828322 +2758842 +2051675 +2051559 +1983852 +1993668 +575981 +1374157 +1447910 +1597562 +2051583 +115779 +575884 +828432 +1287975 +828481 +575914 +1448107 +503678 +2051584 +1597513 +2409422 +2228666 +828343 +1308296 +2228699 +2277415 +828386 +2355232 +1447983 +660662 +575951 +2051606 +2345738 +828445 +828553 +1993679 +1597467 +1266126 +1035270 +1970362 +1288046 +764618 +2727400 +1993681 +1448163 +1070449 +2228682 +1897152 +2228532 +828293 +575997 +2051445 +1447918 +2072229 +828246 +2228464 +828517 +1721746 +2409420 +2105740 +1288085 +1597471 +984423 +1993703 +1410349 +1315367 +2506863 +115782 +2105735 +2228465 +1597571 +1448131 +828388 +503654 +2051642 +1288020 +2627448 +1099852 +2677342 +1315363 +2051667 +1288002 +1287994 +418083 +2051569 +2228551 +2051637 +2518623 +1993660 +1597453 +1288053 +575953 +828390 +2051461 +1341310 +1721762 +2369302 +2718228 +575822 +1288100 +576068 +1953256 +576013 +2228461 +984413 +828265 +1447914 +2228598 +575942 +660686 +828759 +1448173 +1651793 +1448411 +2228960 +1259641 +1259632 +2051830 +2415724 +2229084 +576212 +2229268 +1759869 +2229176 +2277526 +31023 +115813 +828608 +828948 +1597680 +2277513 +2229200 +1448286 +764646 +828917 +1448272 +576544 +1288146 +2229015 +1288133 +2273487 +1651872 +576174 +2229080 +2277545 +1747966 +764660 +1288121 +660743 +2229149 +2051743 +31014 +2550021 +2763347 +828614 +2051799 +1259633 +2228881 +115822 +2277429 +1448303 +576278 +828846 +1953277 +2763349 +828709 +2694163 +31022 +984446 +1651767 +115831 +2273608 +828921 +984468 +576334 +2051780 +2229217 +576354 +828761 +115877 +1448360 +115928 +2228800 +2229118 +1651770 +576410 +2694161 +2415752 +2677344 +1747884 +2105789 +2051879 +1448242 +288150 +304903 +1651808 +1993741 +115864 +828852 +1597671 +1308366 +1946441 +2415744 +2051865 +304872 +2229011 +304900 +2763374 +2229091 +2621985 +828747 +1747878 +1234616 +828619 +2228831 +1448414 +1651862 +115927 +1597659 +2627472 +828755 +1120447 +115846 +576506 +115856 +2229146 +1747926 +828821 +576182 +1747921 +1259637 +2277517 +576263 +1597636 +2229255 +2229243 +2277527 +2277550 +1288247 +828740 +1035381 +576463 +1651852 +2228978 +304922 +828769 +2229134 +1288147 +828587 +1651851 +2228923 +1721794 +1651801 +828923 +1288229 +1597697 +576226 +576207 +2051888 +1448355 +1523654 +984432 +2549995 +1651863 +2277543 +2622006 +1448211 +828583 +1288128 +2273502 +828660 +1448253 +2677357 +1288151 +2677349 +31013 +2622024 +1747918 +2415718 +2229103 +115861 +576515 +1597621 +2277497 +576421 +2763344 +1448280 +2229266 +1120475 +2277534 +1747869 +1747941 +2051736 +2229000 +2051808 +1448381 +828894 +1234617 +828915 +828844 +1259625 +2229054 +2228848 +2228895 +2051723 +1747929 +115917 +984442 +2273497 +1721790 +1259620 +2277541 +2277537 +2229101 +576433 +2051833 +2763318 +2051702 +828892 +1288215 +576413 +1597591 +2229181 +2027817 +2415742 +2229171 +984521 +2228830 +576214 +1288241 +2273615 +1107526 +1747885 +828744 +2228854 +1651769 +2277479 +2622030 +576440 +828790 +2051841 +2051701 +576508 +828824 +2051795 +2229025 +2229283 +828623 +115922 +1597608 +576551 +1448316 +576468 +115918 +2229001 +576272 +2627466 +1288132 +1259635 +2277437 +2622034 +1448181 +2229225 +2229059 +115930 +2051703 +1747870 +1747896 +1651794 +576221 +2228834 +576419 +1747906 +1448374 +1288179 +828857 +2229097 +1759819 +1035395 +984524 +2277535 +1747858 +1035358 +31006 +2415704 +72294 +1035306 +2415771 +1597631 +2763372 +576469 +2677354 +2763361 +2763395 +115857 +1035384 +828800 +576193 +2229175 +2229233 +1035305 +2228869 +1747904 +2229169 +2051747 +2763394 +1759818 +1448300 +2051897 +1234588 +2228967 +1448169 +1448239 +828816 +576542 +2229163 +1448415 +576198 +576285 +2550008 +1747891 +2627461 +984444 +2229086 +984450 +576344 +1448214 +2621995 +503681 +2277440 +30975 +1448347 +828584 +2051820 +576494 +2051720 +576455 +2229038 +2549998 +2687918 +576349 +2366786 +1448307 +2677368 +828590 +2277503 +2228926 +2415747 +30974 +1759826 +984495 +576253 +2229232 +1288158 +1288123 +1308377 +1259626 +576266 +984440 +828638 +828592 +2763330 +2229104 +2621993 +2763385 +2277463 +576194 +1308376 +2229125 +2627456 +1747964 +984434 +1448174 +115916 +2277511 +1035290 +115892 +828682 +1288196 +2622011 +1288153 +2229123 +1308368 +2694159 +1448203 +2277484 +660755 +1448265 +1288170 +1035303 +2763329 +828667 +115843 +2051758 +1308346 +2228882 +2229060 +2763345 +576537 +2228917 +1747873 +2051750 +828911 +660746 +2228924 +2229138 +1288165 +2229555 +2677421 +2277573 +1308459 +1448424 +485174 +1993746 +2229370 +576616 +2687930 +2506880 +2051956 +2099276 +829199 +1511680 +829122 +660800 +1308492 +2229413 +2409472 +1308527 +2051964 +2229435 +2506879 +31063 +1448470 +1448473 +1120503 +2052039 +2229451 +31047 +1308458 +2051958 +31034 +1374186 +2029104 +576769 +1448541 +1364096 +1341335 +2229424 +2677405 +31100 +2229483 +1597948 +660784 +1597833 +828966 +984538 +829219 +576688 +1448578 +2229531 +2677418 +2409471 +2229417 +485176 +1993745 +30 +829205 +932807 +2051983 +31079 +1523656 +1308466 +2229312 +2277577 +258344 +2229496 +576786 +2229442 +2229572 +1448490 +2229441 +31048 +115942 +1747981 +1308523 +2052017 +1511677 +829169 +1308440 +1448529 +829158 +2229551 +1448547 +576770 +1597930 +576656 +2229506 +2727408 +1597779 +1448533 +2229388 +576749 +829183 +1597848 +1288261 +1597911 +1946461 +1597863 +576766 +116033 +1288266 +2345821 +576586 +2052029 +2229554 +31049 +1364089 +2229488 +2506885 +829108 +2409477 +829079 +2229523 +2758868 +2229606 +116044 +576629 +576650 +2229350 +1983870 +115970 +576627 +1597882 +2229301 +1448501 +2229609 +576787 +828963 +1288264 +576792 +1597854 +2627482 +258345 +1308452 +31044 +576790 +2029101 +2506898 +2345792 +1597941 +1288283 +72299 +2677376 +576753 +2229352 +2051909 +2506874 +2052041 +2099291 +576698 +2758864 +115937 +503702 +576735 +2704635 +1120497 +829110 +1448496 +829029 +1597918 +1511678 +829233 +2229612 +258349 +2229390 +829092 +2051925 +1597739 +829153 +2273617 +1448483 +2051951 +115990 +1597907 +2718254 +829109 +1448464 +258326 +576634 +1448518 +576713 +116023 +829141 +1288286 +576747 +116001 +1308532 +576774 +2704657 +576726 +2273511 +2051910 +1448595 +1983877 +1597864 +2704647 +1597725 +2229520 +829178 +2694166 +2704641 +984543 +2229336 +2052016 +1939667 +258325 +576601 +1597894 +115954 +31065 +829129 +984531 +576716 +1308421 +829130 +2229584 +2229382 +2229353 +115984 +576773 +2277569 +829016 +576661 +1308438 +2229321 +1747982 +115933 +2677379 +828957 +2345796 +258332 +116042 +2229298 +1597832 +1448528 +2105797 +1448593 +829054 +1953285 +1597887 +115969 +1597889 +1308484 +485173 +31068 +576741 +2051975 +1266150 +2273510 +1597844 +1308402 +2229487 +2409465 +1448564 +1523655 +2687920 +1597792 +1448556 +2051943 +1597943 +829123 +576719 +984528 +828962 +1288278 +1448594 +258330 +1597748 +984556 +1308491 +2229474 +1288418 +2758902 +2229910 +829506 +660845 +1448678 +577050 +2052076 +829433 +2229649 +704383 +1598082 +829626 +660863 +2718262 +2409523 +116126 +1448611 +2409555 +387151 +829407 +660833 +116210 +577029 +1288382 +258381 +1288439 +2229663 +2763450 +1598151 +829318 +1448833 +2550033 +1341358 +2677436 +1448724 +1308613 +116323 +2277585 +116166 +2409565 +984581 +829503 +1341366 +660816 +1598055 +1598222 +2763401 +116354 +829697 +577090 +1448656 +984621 +704408 +2677459 +577114 +2229971 +2229827 +829581 +576889 +829689 +1598180 +660913 +1598106 +1598047 +1288321 +1374192 +2229701 +116431 +1308638 +2409576 +2052157 +2694196 +2052162 +660848 +704409 +387139 +1598110 +31122 +577115 +576975 +116162 +829447 +984639 +577180 +984650 +227750 +2345892 +2229956 +116187 +1598122 +1448894 +2052135 +116315 +984646 +1288330 +660876 +1448654 +2687952 +1448659 +2345844 +258409 +1288484 +2409548 +829713 +1598115 +1717024 +577161 +2229774 +984578 +1308628 +829616 +576869 +116169 +2763481 +576986 +984635 +577037 +1598186 +31182 +116128 +2229915 +1288398 +1597964 +829479 +1288489 +258384 +2622053 +2229909 +31153 +31146 +1598018 +1598247 +116206 +1448714 +829352 +829266 +116411 +2029106 +1288415 +829514 +1983893 +1651894 +577190 +2052114 +660918 +829661 +1598089 +2105800 +1993783 +1308554 +258400 +1946467 +1374213 +1308640 +116065 +577032 +2622043 +577081 +1597972 +1364127 +2052084 +2687941 +829366 +2307313 +1598136 +31175 +2345880 +1598119 +984592 +660829 +660847 +2052112 +577198 +2229737 +1448727 +2506912 +258404 +1288365 +2052131 +1598067 +1993778 +1598194 +2229934 +2687964 +660834 +1946503 +1598147 +577171 +1448609 +576949 +1983882 +1448871 +1288344 +1364128 +1308647 +1448904 +1407331 +1308588 +1598221 +2718259 +1511684 +116312 +2758886 +829323 +1968271 +1364129 +1288428 +1448814 +2687939 +31154 +258398 +2229794 +1364104 +2763412 +984599 +829495 +984643 +2229787 +31184 +2677450 +829474 +1598126 +829386 +829629 +1598039 +829246 +1364105 +1308608 +577139 +576996 +576988 +577195 +1308621 +1448812 +258366 +1308538 +829259 +577169 +116296 +2229756 +116180 +387142 +2694203 +116435 +1035423 +2230050 +2229732 +660862 +2677439 +2345884 +1288350 +1598059 +116193 +1035424 +1308643 +2229664 +2763414 +1598213 +2547444 +1308629 +304931 +2763417 +576838 +2677451 +829314 +2277590 +1448780 +1448702 +116342 +1407330 +576951 +116444 +247073 +1288295 +1598188 +1598208 +1651899 +2229811 +577011 +984590 +116322 +1448703 +576891 +2229975 +1448762 +2409541 +2229648 +984660 +1308575 +1448775 +829715 +829480 +1598107 +2409558 +1288413 +829362 +829719 +258352 +829253 +31108 +2052063 +1448779 +116395 +2506930 +2229779 +2229998 +2229637 +2229747 +116078 +660860 +2691057 +2099295 +577150 +116317 +1341368 +31121 +1598144 +2687946 +227740 +829242 +829277 +116441 +2052073 +2763466 +660897 +1448835 +829311 +31166 +829437 +2409599 +116346 +2229926 +2763406 +1598200 +2506904 +764674 +577134 +2229863 +1288353 +829529 +1288446 +2229759 +2229752 +829551 +829652 +829369 +829326 +829709 +660879 +2763468 +2409600 +2687936 +2027832 +1993800 +1993779 +1448645 +1598101 +577157 +2052064 +829706 +1288420 +1664559 +1448713 +258359 +984628 +116295 +116159 +2741161 +1448777 +1953300 +2763439 +2677463 +660898 +116294 +1946513 +116220 +258416 +576920 +2229849 +2052124 +829656 +1448723 +1448751 +1374207 +704410 +116215 +116184 +1598050 +2409497 +829304 +2229929 +2052062 +829392 +1598145 +2052153 +116426 +2052165 +116225 +829330 +576911 +1747985 +1173979 +829388 +116243 +116083 +577145 +1598114 +2229651 +1747988 +829599 +2409572 +2718272 +1288363 +1035426 +1946469 +2052142 +1983899 +576856 +116109 +2409532 +577005 +2627500 +1448651 +829414 +829473 +1598252 +829389 +2763486 +984631 +1488333 +1035431 +116156 +2409605 +660891 +2230292 +2230117 +829882 +2366812 +1308666 +1598304 +1035441 +1308693 +1120529 +829891 +577468 +577356 +577261 +2230113 +829776 +2052360 +577314 +258436 +577482 +1070455 +2230210 +1448941 +1341386 +984686 +1449014 +2052228 +1598334 +2230098 +2052286 +984687 +31200 +116469 +1374234 +2230233 +577389 +577489 +2230114 +2718283 +660950 +1448984 +1308729 +2763529 +2230225 +1598276 +577242 +2052287 +1308675 +704449 +2345903 +116501 +660948 +577467 +2230120 +2230250 +704451 +2763524 +2230179 +829744 +577297 +1449066 +31203 +1364138 +116507 +2230242 +2550039 +1448975 +660938 +2052265 +116462 +2230144 +764688 +2230092 +1449095 +577265 +829901 +577219 +1448939 +2677482 +577493 +704472 +1449048 +2230212 +1234630 +829904 +2230103 +2230102 +577480 +1993826 +2052229 +2230129 +1449064 +350441 +1448997 +1598294 +704466 +1664560 +2230135 +2230156 +2230153 +350431 +577338 +2409615 +1449096 +577305 +577299 +1448991 +1651909 +2763527 +304951 +660942 +829774 +704458 +2029108 +829848 +2622081 +829863 +1946526 +1946523 +2052280 +116488 +577233 +2622078 +829759 +2230142 +829899 +1449058 +1449022 +2052297 +660943 +577298 +577386 +577274 +2230255 +829873 +1308669 +1364145 +394223 +1120521 +2099316 +1308696 +2052306 +1315371 +2052219 +1308740 +704424 +2230121 +577336 +2230223 +829856 +2052326 +1968283 +1449033 +577226 +1717025 +829750 +201587 +1598275 +577384 +2099317 +31189 +1449018 +116489 +829886 +2230302 +829734 +1374230 +1511702 +577371 +577477 +1449031 +2052232 +829861 +2230315 +577306 +2230134 +2052235 +577464 +1288495 +116458 +829763 +704441 +577381 +2052207 +1364140 +2052257 +829756 +2506933 +829854 +660925 +829819 +2052267 +577321 +1448966 +2230110 +2230467 +116609 +116561 +116596 +1288558 +36 +1341388 +227772 +830109 +2677496 +577589 +830025 +1449099 +577555 +2345915 +1449210 +116585 +1449171 +1449147 +2230548 +830087 +2345910 +2099332 +829967 +1449119 +1993827 +830149 +704482 +2052393 +830104 +2230587 +2369328 +2230349 +577593 +577588 +1932205 +830070 +2230581 +2230361 +660994 +830081 +984736 +1598392 +829940 +2105826 +1374237 +2277608 +830032 +2025473 +116604 +2230470 +984789 +2627518 +31231 +830151 +830150 +31233 +829999 +2627511 +830169 +2345911 +830007 +1449212 +2763544 +2230605 +2230491 +829983 +829958 +2627513 +1598418 +1374240 +2230338 +829952 +830043 +1288579 +830154 +398047 +2230453 +1907383 +1099872 +2230607 +116610 +2622090 +1449164 +116618 +830077 +116571 +2052367 +660995 +2763532 +1288550 +829937 +2025462 +830143 +2345914 +247074 +2230359 +830053 +830069 +984733 +116567 +984759 +2230481 +830126 +2230336 +1266164 +577592 +1288537 +2627520 +2230589 +116632 +2230404 +2230364 +1341392 +577537 +1099875 +116539 +829962 +2230507 +1449098 +2677511 +1341391 +247075 +829986 +577524 +661003 +2230423 +2622096 +830060 +984781 +830016 +1035446 +2848759 +2230612 +830089 +1983924 +116652 +577629 +2677512 +227778 +2230347 +116627 +830157 +829988 +1449132 +830092 +227765 +2230561 +258466 +829970 +1099867 +830133 +2369323 +1449156 +660961 +830111 +72310 +2052385 +830003 +1748009 +830076 +1993835 +2230330 +2758915 +2506945 +258454 +2758916 +1946553 +1288576 +304964 +830108 +1907382 +116540 +577647 +1449134 +577566 +2409655 +984797 +2506940 +2848757 +2230559 +829939 +2345909 +577607 +116645 +830030 +2345928 +116648 +1364158 +2409659 +1449228 +984740 +2415798 +258456 +2506949 +577556 +1449139 +2627517 +1099866 +2230551 +2230566 +1088530 +2052387 +577570 +1449194 +2105819 +31225 +2230439 +1449101 +729071 +577583 +830094 +830129 +830131 +116633 +1932191 +1598340 +1288587 +830001 +31223 +764700 +984767 +747648 +830036 +2547451 +764690 +2622089 +1308752 +2763535 +1511711 +258492 +704500 +2706142 +830314 +2627553 +2052511 +2105866 +2273625 +2230666 +2758918 +2105831 +2230757 +2230898 +1374244 +830199 +830229 +2230722 +2409710 +503730 +116711 +2369347 +2694241 +2230766 +1288665 +1288673 +116694 +1598434 +2230746 +2230773 +201591 +1598525 +577736 +2052517 +764713 +31257 +2230730 +304972 +2052521 +1598495 +116796 +1598531 +1288658 +2627539 +2230659 +830212 +2052468 +1308791 +577729 +1946565 +984848 +1288657 +1288670 +984847 +2286143 +2687988 +2052501 +1598430 +1288627 +830200 +2105859 +2758920 +577715 +830209 +704506 +2345967 +1748031 +2415827 +2230777 +2409697 +2677552 +1449367 +2763559 +1449352 +2230733 +2409676 +2277615 +304979 +1598466 +2052552 +830247 +1946567 +2230750 +1993846 +704498 +1341396 +2105878 +2052503 +1288616 +2230887 +37 +2052492 +984813 +2409707 +984843 +2694245 +116774 +1308784 +2694233 +2677551 +830327 +2832619 +2687997 +1449328 +116692 +2230749 +1946574 +577775 +2763564 +1288619 +2230788 +1946576 +1523683 +2230698 +2052474 +1449266 +2706131 +2105880 +2409698 +2688008 +2072244 +2687992 +1598457 +2052534 +116762 +1449242 +31258 +577767 +2369355 +1700292 +1511712 +704496 +1449326 +2230827 +830201 +830352 +2052444 +1407345 +2627575 +116799 +2052452 +2688001 +2694262 +2105841 +2230776 +1288594 +2366832 +2052484 +577679 +1598535 +2230717 +1721815 +1598536 +577701 +2718294 +2763560 +2230705 +830309 +2718293 +1288634 +830336 +116705 +1721813 +1598527 +2052507 +2273631 +116759 +1449238 +1308798 +1685054 +1107541 +2230692 +2230778 +2230804 +2627527 +577768 +2105838 +2683567 +1346498 +2230723 +1598503 +1598494 +2052461 +2409712 +31262 +2409684 +2622106 +2230912 +2105857 +2105862 +2369349 +830282 +577735 +1288596 +2704692 +1449359 +1070456 +2627531 +577669 +830290 +2506954 +1308774 +830365 +1598452 +2230844 +2105869 +2099345 +2105856 +1598465 +1598513 +577779 +2052496 +116763 +1341395 +830311 +1374243 +661030 +1598496 +1449276 +830244 +1120542 +31283 +1449277 +1748033 +1449248 +2230880 +577727 +1651926 +2627564 +932839 +1308801 +830596 +2550068 +1131504 +1308853 +2409744 +1897168 +1308882 +661093 +2230970 +2052694 +830467 +830474 +2718315 +2550100 +2052596 +2688051 +1449471 +661092 +2677572 +1410363 +2415859 +830508 +1131517 +1449380 +2231015 +577973 +2688062 +2231188 +830576 +830526 +1598555 +1374259 +577925 +2694297 +1035474 +2694280 +2550075 +2105921 +1308864 +2231121 +1308821 +2231103 +577832 +116829 +830585 +830444 +2052580 +577998 +2231072 +661048 +577950 +661050 +2345991 +577844 +984865 +2052665 +116841 +577941 +830429 +2550078 +2052715 +577977 +1308872 +2346003 +1598580 +2231204 +984857 +2231058 +1449579 +578026 +830551 +1131528 +1598587 +2052692 +1266184 +1369226 +1598660 +2231291 +2627601 +1449453 +2691074 +1407352 +2231059 +2105904 +2231152 +2231119 +2369367 +984861 +1288678 +830422 +1308884 +2688017 +2415855 +2231279 +1449530 +830473 +577892 +1598641 +2105892 +830466 +2550084 +2231008 +1035463 +2231168 +830487 +2691069 +2052651 +1598575 +2231032 +1685057 +1449451 +2052631 +577954 +2231144 +2230942 +1410362 +578009 +2052570 +2052593 +2231243 +1449411 +2231257 +830458 +1449429 +116818 +2550080 +2231290 +1308837 +1308826 +661056 +1315380 +577837 +2230962 +2506966 +2072245 +2052620 +2230935 +2688047 +116827 +2409735 +2688044 +2231092 +2230994 +2231050 +2105909 +2704728 +1598651 +984886 +1449463 +2231180 +1449483 +2052563 +1748035 +1449479 +1449502 +830537 +1449374 +661099 +1598570 +1598674 +1598661 +2622131 +2099360 +1598621 +1449536 +2704711 +577869 +2694291 +2231226 +116809 +2277636 +577877 +1993872 +830525 +2694283 +2231060 +1288679 +984876 +1993867 +1341420 +984883 +503745 +2694305 +1598594 +2704714 +2052582 +2029120 +1449425 +661079 +2230986 +704512 +1993862 +2677584 +2706144 +1308839 +577951 +2105903 +2231045 +2691072 +661094 +2415866 +2099355 +2231122 +2072246 +2052617 +503741 +1288687 +2052638 +830532 +1449461 +577821 +2052685 +2415844 +1598659 +2677573 +2273636 +1308885 +2758939 +830439 +830485 +1953360 +2409724 +2688024 +31295 +2694290 +2231159 +2230943 +2052675 +1449576 +577891 +2688042 +984867 +2052700 +116857 +1598553 +1308858 +1308844 +577908 +1983935 +2052599 +577922 +1651928 +2231160 +984894 +2550096 +1449523 +2415867 +2052666 +830478 +2277643 +2230918 +830593 +2230953 +370766 +1651927 +2409727 +2231115 +1449450 +2231042 +830522 +2704723 +2230922 +1364172 +1953368 +830507 +578015 +2727425 +1369227 +2231237 +1748093 +2415883 +1651958 +1288797 +2677595 +1759948 +2231398 +116869 +578186 +1449735 +1369231 +2105933 +2627654 +578217 +578054 +2231462 +1651968 +830784 +2052741 +764730 +2231457 +1308914 +31308 +1449642 +2231357 +1266186 +2694332 +2052729 +578056 +1308924 +258507 +1449739 +2409795 +31300 +2231454 +830725 +830695 +2415873 +2052791 +1759939 +2052765 +1748070 +1748079 +830658 +1449631 +1035498 +764726 +578228 +578226 +1374269 +2231316 +2231458 +305002 +1449742 +2677614 +578167 +2409762 +1721841 +1759932 +830623 +764727 +2231544 +2105950 +1721844 +2409765 +2231335 +2550122 +116913 +2231547 +1598727 +1748096 +1598722 +1035505 +1308932 +1288753 +578220 +1288777 +1288754 +830746 +2366841 +1035503 +830646 +578190 +1449767 +258512 +1374284 +578124 +2231320 +2622165 +2099365 +2052723 +1748048 +2231506 +2052745 +830683 +1308955 +1288723 +1598730 +2231538 +578072 +2683587 +830768 +1449658 +578088 +2277695 +1308942 +578210 +258501 +2105924 +578064 +2622166 +1449606 +2231420 +2409769 +830626 +1748087 +830736 +2277664 +2052773 +1449669 +764732 +1651971 +1449639 +116919 +2052836 +984916 +116914 +1449768 +1651994 +2694330 +2231463 +2550120 +2688067 +1374270 +2627651 +2231549 +2273650 +948607 +578153 +1651995 +1652025 +1449663 +984929 +830780 +578161 +116906 +1449685 +578206 +661117 +1748050 +830743 +2231425 +1652032 +2052790 +578227 +830604 +2052784 +1288820 +830671 +830663 +2622150 +2231415 +2105928 +578079 +2627635 +2231552 +830757 +116889 +1308953 +1748067 +2627655 +2231428 +116888 +258509 +2622151 +830613 +578049 +578164 +830763 +1449703 +2409789 +1449648 +503777 +2550110 +2231310 +830741 +1598699 +2409799 +2231481 +1449746 +2231399 +2718321 +2518642 +1748065 +1953375 +2052814 +2231322 +1449776 +2409797 +578101 +830753 +116927 +2409758 +1266204 +984934 +1598765 +2506976 +2507003 +1259666 +499958 +1449781 +830828 +1598756 +2052852 +2231641 +830804 +1057725 +421138 +948608 +1259658 +932854 +2346012 +2506993 +247083 +2052865 +421137 +31356 +1165247 +2231634 +31339 +201598 +31352 +1810126 +1842660 +1152928 +116932 +2355252 +485181 +2231658 +1259651 +906425 +1810127 +1449797 +2763589 +2346036 +1598732 +2369379 +2052855 +1266205 +2627657 +2506975 +1700333 +31364 +1748101 +2231660 +1511729 +1087205 +2231560 +1051246 +2231571 +2052857 +2444943 +2506982 +2231607 +830813 +1810120 +2052858 +356927 +1598735 +2409801 +1449801 +2547472 +2677632 +1822152 +2677638 +1259656 +1700319 +1449791 +1700311 +2346027 +1259664 +1748104 +1598764 +2507019 +1598767 +2409802 +2346017 +1598745 +2307327 +2231580 +1165246 +2346022 +2231633 +830821 +830810 +350442 +2763598 +2848779 +830836 +2763662 +2763665 +2763709 +2763622 +2763653 +2848775 +2763690 +2763698 +2763699 +2763661 +2763655 +2763696 +1407358 +2763647 +2763612 +2848781 +2231665 +2763707 +31367 +31366 +1946612 +1721861 +771652 +2231712 +2550205 +1598867 +1374294 +764749 +1700341 +1374296 +2832633 +1897183 +227808 +1449878 +578368 +578305 +2105965 +898812 +2286149 +503790 +985015 +932896 +2310368 +578274 +1822154 +31373 +1598822 +2052871 +771659 +227798 +830952 +2733573 +578355 +661140 +1645585 +578361 +1308958 +1315414 +830855 +676715 +1341439 +830934 +1081727 +2863626 +72345 +2627694 +830884 +984974 +2733851 +985008 +1598885 +2231694 +984993 +72338 +2099381 +1810149 +1315396 +1598823 +353136 +1449863 +2307331 +2003556 +729085 +1598855 +1717036 +1785757 +1449827 +743137 +2029143 +1659042 +382860 +2409825 +578257 +932880 +2733823 +1598850 +1907392 +1847060 +1488355 +1449882 +1449855 +578279 +1081729 +984963 +31398 +1598903 +2832677 +906427 +1822156 +771666 +2706159 +31391 +503799 +2310352 +1847047 +984999 +578327 +1449871 +2029148 +2029155 +1523706 +830957 +117010 +2749377 +2863615 +578277 +1598905 +2231673 +2020350 +31377 +1645587 +2733837 +212161 +1523724 +503797 +661146 +764756 +1234658 +2832671 +1511733 +578312 +227818 +2706151 +387157 +1748116 +1060926 +1700348 +1035518 +2307336 +1685071 +2622185 +1196489 +1598851 +1598861 +743139 +2013732 +362002 +1410403 +948629 +2346103 +1346512 +1076393 +2733835 +1598815 +503809 +503822 +2369417 +984997 +2444969 +1315389 +2346064 +2444952 +985024 +771661 +932875 +2733844 +370776 +404802 +984964 +503802 +1700338 +1060930 +2346078 +2694344 +1598845 +578381 +1970378 +764751 +2052872 +2507045 +1346526 +578363 +764755 +2507046 +2052882 +382862 +227813 +1288845 +2310379 +932885 +1088539 +578341 +2052873 +830849 +1511744 +1847053 +830920 +2550193 +2863613 +729082 +47 +661149 +1449821 +771636 +948639 +578369 +2409818 +830881 +948620 +1907390 +1598841 +1259669 +2020344 +578375 +2231699 +1206676 +1748119 +2832626 +2696388 +2310372 +1346535 +2346096 +1950025 +31390 +1488356 +1598788 +1165257 +676710 +356930 +72341 +1598852 +2231697 +2727442 +2550186 +1299823 +948633 +2310375 +2677645 +54 +1598896 +2550172 +2733847 +984956 +2231717 +2052900 +440166 +1449815 +1598786 +1488347 +948630 +2741181 +932882 +1700343 +1598900 +2029147 +2346102 +2231732 +503810 +1700350 +1206681 +2627661 +1449857 +1099898 +2052905 +2704740 +718595 +1511751 +2550175 +2720009 +2744170 +1993897 +2231731 +1810141 +2369391 +2310373 +2231693 +387159 +1364191 +578377 +503823 +72350 +1598842 +578285 +1176825 +578325 +2369401 +1598863 +1346517 +830987 +117063 +2749415 +661183 +2729589 +1748129 +676731 +831011 +1152938 +117059 +2106002 +1288855 +1523751 +578410 +578407 +771687 +2310382 +948652 +2409827 +2052915 +985037 +212167 +1308979 +1288863 +1665929 +1511776 +1081737 +1346550 +189634 +117058 +2355260 +1234675 +2106000 +1315430 +1315435 +1970390 +578418 +1598947 +831070 +1700357 +362026 +1598930 +212172 +2231761 +1847100 +1449920 +1120569 +117053 +1769452 +2627704 +1308966 +1081736 +1081739 +2733854 +2696398 +353141 +985050 +1748126 +2231747 +704571 +2550250 +1346546 +1369240 +2733852 +2550237 +771683 +2749416 +676739 +1748133 +31403 +1717038 +948648 +985058 +1700358 +661187 +1488360 +2355267 +578451 +2691085 +362016 +2106047 +704581 +2231745 +305024 +2550258 +117048 +1511754 +2231760 +2231744 +2688083 +578453 +985055 +1308968 +2683590 +117029 +2231769 +1299829 +1488392 +117050 +2749409 +948671 +370782 +909315 +704587 +578415 +2231751 +2231765 +948675 +1955631 +117045 +2106029 +1081749 +2355266 +362037 +2310387 +2444983 +1685080 +2550229 +1645601 +948662 +370791 +831092 +831068 +1076407 +1259672 +1374300 +2231764 +1410414 +1410413 +1449914 +2694356 +2720024 +1400441 +503868 +2694352 +676730 +1206702 +2694351 +2285279 +1076402 +31405 +1511773 +718599 +1386288 +661161 +1950039 +1449902 +831034 +1099904 +1234669 +1060948 +1315420 +831047 +2106007 +1523747 +2106037 +948657 +2694349 +661157 +305028 +1847099 +578444 +1665931 +831081 +2729588 +1488374 +2231773 +1488379 +704585 +985049 +2106010 +2550233 +117084 +831066 +2822875 +1364198 +2863643 +2822776 +2704747 +2847162 +704594 +2847151 +2822840 +2822882 +2822799 +2863645 +1341449 +2822861 +2822810 +2518657 +2010205 +2002840 +2847161 +2822885 +2822847 +1299844 +2822893 +2822781 +2822772 +2822816 +2822800 +2822866 +2822822 +2822883 +831096 +1598968 +1907413 +2369435 +2627786 +2355288 +1081763 +1939697 +1645610 +2550296 +2627801 +2106094 +2346115 +2106061 +503906 +2346114 +2106068 +1993908 +2072267 +2550280 +1598958 +1598975 +2627795 +1088566 +1598976 +985065 +771709 +1088567 +2310389 +1721875 +1748139 +771696 +2622205 +2706176 +2718340 +771727 +2369444 +771725 +985064 +1645608 +1950043 +2683596 +2518663 +2231791 +2627741 +2720041 +2749420 +1266234 +1081761 +1206710 +1523762 +2518677 +73 +831102 +578465 +503917 +1598959 +2749419 +1598973 +2627738 +503880 +1523774 +676760 +2052928 +2369455 +2355293 +578467 +676756 +2627729 +2518668 +503909 +831118 +2369451 +2310394 +2355294 +227832 +2355289 +2072269 +1081760 +831111 +1950041 +2627754 +2231779 +2366850 +2029187 +74 +2718339 +2409835 +1088571 +2106114 +2355291 +2369452 +503900 +1081754 +72 +72367 +1076414 +1081755 +2106069 +2099392 +1932240 +704599 +985096 +201613 +1748188 +2231953 +1748162 +2231938 +578611 +578585 +1400446 +2718357 +985140 +2231961 +2366852 +2704752 +1700369 +2307342 +1953406 +117189 +578678 +985139 +1983995 +661226 +578641 +578642 +704657 +2052961 +305045 +831158 +1088575 +212178 +1598996 +305043 +1847121 +456977 +985152 +704650 +1598980 +578665 +2409866 +2099402 +1897229 +117181 +1717052 +440176 +2758973 +578560 +1782708 +2758974 +1259695 +1449988 +661254 +2737919 +2622218 +2758963 +2763722 +201616 +2052950 +1983986 +2409844 +2346131 +985097 +2231863 +1025237 +985073 +2231881 +1717079 +704665 +1970400 +2106116 +704631 +1970401 +2720047 +1259675 +2718360 +456964 +578691 +578687 +1717054 +2720060 +1748153 +2231879 +1152946 +1847114 +1449964 +1897209 +831260 +1385087 +661260 +985148 +1983991 +985126 +2737926 +754456 +1234721 +932919 +704629 +2758967 +1897247 +1449948 +1341456 +456985 +2106137 +305049 +305033 +421144 +1449961 +1234694 +2706178 +1449975 +661216 +1599005 +1488406 +31429 +2677660 +2231944 +2622217 +2052954 +1407362 +831189 +2231930 +1341458 +1364210 +2231924 +2627802 +831136 +72371 +2720053 +1234711 +503924 +2231899 +1196501 +117110 +704682 +1953409 +1035532 +2763717 +2720045 +2231846 +2737914 +1748159 +1196500 +1717065 +578614 +288185 +831156 +1374305 +117139 +2106124 +1599006 +1983983 +1953400 +2720049 +1993918 +831179 +1847122 +305036 +117151 +1993929 +2099401 +1259702 +1081778 +1748189 +2106134 +2677656 +1847117 +2231963 +1953407 +2720059 +117163 +2718346 +1374309 +1374320 +831199 +2231929 +661224 +1374325 +1449987 +1081808 +1288878 +2550343 +578594 +305054 +1717084 +456974 +117215 +985079 +1234691 +578479 +117174 +2106132 +831147 +578556 +499976 +1983990 +1847115 +1907416 +1099935 +985136 +305048 +2020363 +2052951 +578709 +661203 +1288877 +2231868 +1259693 +1759960 +704636 +2718352 +1946625 +1599012 +31412 +1970399 +2409881 +72378 +2720057 +1196509 +1993912 +1717064 +1523780 +578613 +1986828 +2409849 +2231822 +2627804 +1748164 +578707 +661255 +2231903 +1081832 +1410427 +831140 +2749425 +1970398 +831125 +2231852 +1932247 +1983980 +1993927 +2231904 +985143 +704634 +1076422 +1748160 +1523784 +2733580 +578697 +1299861 +1897230 +117168 +1081776 +2550346 +831268 +2002858 +985077 +305035 +2550367 +2106142 +2759002 +704712 +578800 +1234769 +948700 +909330 +578792 +831302 +1060955 +2355307 +1599165 +2696447 +2507131 +2749046 +2758981 +1410443 +504024 +1986833 +1599186 +2763733 +2002869 +2749439 +1685093 +1259714 +305074 +1599144 +117282 +227870 +1993937 +117259 +1842678 +1700404 +831414 +948739 +117228 +2550378 +676794 +831385 +1346579 +2346178 +350456 +96 +86 +2749446 +1035547 +1785763 +84 +2550369 +2749453 +1955683 +504021 +117263 +578738 +1369250 +2010223 +2106165 +771759 +2518698 +387176 +1993931 +1450020 +1060951 +1346592 +370798 +382869 +1847153 +2346170 +2749045 +2010213 +2733867 +305073 +2232011 +2106150 +2346154 +1955673 +771785 +1842680 +771806 +342024 +1364217 +1757028 +2010217 +704722 +258580 +1315478 +1907418 +1700411 +2355302 +212193 +2232010 +342027 +324491 +2758990 +831292 +2763745 +2550357 +831427 +831450 +831387 +578775 +578717 +2720077 +72422 +831440 +704730 +1196523 +1721882 +387169 +1206729 +2696439 +1950061 +1234774 +831350 +2346162 +2733881 +948750 +117226 +2733865 +1410441 +2020381 +305067 +72407 +362052 +117289 +1769454 +387171 +504012 +932928 +72404 +2718368 +2744206 +2704757 +2749457 +2106163 +2763730 +2832698 +771820 +1364218 +83 +1234768 +2346179 +1680564 +1665935 +1700389 +1088579 +1523805 +2279279 +1374340 +2518683 +2758989 +1599096 +1810160 +2720063 +1060961 +1266256 +362056 +578711 +1523796 +771795 +1997199 +72384 +743162 +2627816 +2346145 +504015 +831358 +1700385 +1822169 +1346607 +1523816 +370802 +771763 +771787 +985254 +578821 +2720076 +2507124 +31439 +948707 +1389618 +2231983 +831399 +1523790 +578762 +2627844 +985161 +2749434 +1599120 +305070 +1369251 +504044 +1664573 +831355 +2749464 +503960 +1717090 +1599111 +2733872 +578754 +948724 +1680566 +1599158 +2706198 +2231972 +2507136 +1099943 +387167 +831422 +948735 +72399 +704734 +258577 +1599091 +2409901 +676797 +1645635 +2307352 +2677664 +2099412 +31452 +1120577 +2232030 +2020375 +1685098 +1206719 +1266245 +1759964 +1379500 +831378 +2232021 +2749455 +2696437 +1379498 +1748212 +1288901 +831413 +2507109 +578778 +661301 +764761 +985213 +771757 +1847134 +831328 +948722 +831313 +1346602 +72419 +2763757 +1176831 +117253 +2627846 +1984010 +1759963 +1721879 +1511795 +1700398 +771782 +117292 +1511800 +985162 +2307358 +1599150 +1599121 +985225 +1986837 +2627831 +2507125 +1259719 +504009 +1341479 +1259715 +1721877 +1386297 +2409906 +1523798 +831381 +2627833 +948711 +1374342 +227879 +1599142 +382868 +72425 +504006 +1266265 +117284 +1700376 +985209 +771797 +2733883 +578782 +1822168 +1748221 +676787 +2232040 +1950068 +2310416 +2507119 +2003562 +1374341 +831324 +948734 +2369488 +432143 +2445006 +2106159 +1757027 +771808 +2728728 +831316 +771776 +1997197 +764764 +258546 +2720078 +2758993 +342020 +2741188 +88 +831439 +350455 +1176837 +2106177 +2052979 +2307353 +2758987 +2550360 +117304 +1049796 +2550370 +504048 +1511813 +2518687 +1400456 +578791 +117269 +117301 +2346200 +1346611 +1450033 +504079 +1450023 +504069 +1810177 +504068 +743168 +2232128 +1785766 +117337 +1599256 +2232098 +2718374 +985280 +117353 +328855 +504086 +1486967 +370818 +2369509 +831493 +2696450 +2106215 +2099420 +831486 +2627862 +1376956 +362064 +743170 +2369502 +1346615 +2627848 +370817 +2232102 +2106205 +2232112 +2232109 +578890 +729109 +1374354 +72433 +1450044 +1523820 +909332 +676808 +2106191 +2518712 +1401778 +2052992 +1907445 +831501 +1386309 +1120601 +1970426 +2099417 +456999 +1346622 +440190 +1993944 +661348 +2369503 +1176843 +985297 +1315488 +1070473 +2106219 +831478 +2369506 +1599223 +578837 +831520 +704754 +1157214 +831460 +985275 +661336 +1599210 +1450041 +1374362 +2627847 +831497 +2232127 +1946638 +1401787 +504077 +1341486 +1680573 +2696456 +1386315 +736743 +370816 +743176 +1341491 +578834 +743173 +2286160 +2310427 +1379509 +1599274 +1599248 +2704765 +1450039 +2550394 +676804 +831490 +2369505 +2106198 +1970425 +2232118 +2232074 +2232086 +1259727 +1897275 +117339 +1364225 +2310431 +2020399 +2232079 +985277 +729113 +578899 +2749470 +1315495 +1379503 +1599240 +2733895 +1060971 +676811 +578883 +1088592 +1088593 +1599255 +2232067 +1234777 +1035552 +661350 +2310428 +1346616 +2013767 +831461 +748283 +661345 +1523835 +771848 +948755 +578840 +2627853 +2232106 +504072 +227884 +1955687 +1810179 +578888 +1386310 +1341493 +578887 +1299886 +2627866 +743193 +948758 +748282 +1401772 +2518713 +1450030 +1810174 +362063 +2741189 +771843 +2409936 +676824 +578927 +1847184 +504115 +117407 +729118 +2099441 +227913 +2749049 +831566 +1897286 +1599289 +1599296 +2409954 +2369517 +754844 +831567 +393857 +31478 +661365 +1599356 +440200 +578982 +771887 +2507155 +2445040 +2232167 +370821 +324500 +72448 +1450069 +2053012 +1700430 +1099968 +350461 +1847183 +1234793 +1196535 +2355326 +2053016 +2683613 +2053004 +2627874 +2622256 +1810197 +1717111 +2106230 +704801 +485223 +578940 +2232188 +1897289 +1396468 +1196547 +2550418 +2232146 +2733900 +2718386 +771893 +387203 +1897288 +831673 +1897292 +578970 +2622243 +1288918 +1346642 +1984037 +578954 +932981 +387199 +2053026 +831600 +2002873 +1599367 +2346220 +2550427 +831695 +1984039 +2550407 +1120614 +1266280 +2759010 +1346645 +1932284 +117364 +1234790 +661370 +328856 +2029235 +578956 +1748273 +1645640 +985312 +305087 +2550408 +1309016 +1450077 +2020410 +579016 +1997092 +2307368 +227895 +247096 +831720 +2052994 +1523840 +31474 +2622251 +72453 +704807 +578924 +1599319 +1748262 +2232135 +1346647 +1266278 +1599349 +831570 +117383 +2307369 +1081843 +704794 +1025249 +578965 +831658 +831693 +1057736 +2307362 +2445039 +578926 +387207 +704784 +1099973 +578922 +704796 +2409950 +258609 +2688107 +1599322 +362070 +948770 +831555 +504110 +504117 +2409947 +932983 +1599290 +1523843 +1523841 +1810207 +1099969 +771885 +1341500 +1993953 +305094 +1488432 +831547 +1700440 +1364232 +387202 +578991 +729128 +1907453 +2366864 +2622255 +831703 +440201 +704816 +113 +105 +305105 +258594 +1099976 +31475 +2507152 +1523857 +117551 +117435 +212207 +117545 +831740 +2346248 +1060979 +1847198 +1897314 +2677701 +2232224 +2346240 +704865 +985349 +1599407 +1206744 +1152964 +2677690 +1968325 +117540 +2507200 +1748300 +1341515 +1599584 +831749 +1680589 +2622294 +985355 +661387 +1450107 +2369537 +1599392 +1450100 +2622277 +1450135 +31602 +2677698 +1450218 +2232270 +31540 +831912 +457020 +2346265 +1599585 +2369523 +932994 +1450215 +201638 +2346277 +1488442 +831783 +1599525 +227964 +1717139 +1035585 +2099469 +1410478 +457046 +579099 +1810220 +2232299 +1946649 +2704770 +2106256 +2622274 +2232205 +579188 +2106248 +1120648 +2622270 +1341531 +457038 +370836 +117570 +2507219 +1060978 +117605 +328857 +2232258 +1748302 +227925 +2622285 +1599576 +831804 +2053036 +2053039 +1907469 +1599541 +1486978 +370835 +2307374 +1288933 +1488439 +1847206 +2706211 +579162 +1599492 +1847204 +31573 +1120639 +579062 +2232345 +2622282 +440202 +1165287 +1057745 +117523 +948777 +933000 +1385104 +2369528 +831790 +2232225 +1599423 +2718398 +1374373 +2232320 +831755 +831896 +831960 +2832709 +227917 +579152 +227946 +2409977 +2106242 +933013 +764780 +1099997 +1599558 +1932298 +1511834 +579132 +2232384 +579080 +1721891 +2232355 +1680587 +831894 +1100015 +2507210 +1968319 +743203 +2232327 +117538 +1450119 +771904 +227919 +1599441 +2409975 +2053092 +661371 +1599509 +1196559 +2232337 +1897322 +2550468 +305116 +1100027 +2550455 +1599387 +579155 +2550451 +1100035 +579030 +1341519 +2550478 +764795 +1599435 +1346654 +831866 +933005 +1259747 +909343 +2232231 +831834 +2307378 +579073 +485225 +2507175 +1842682 +831973 +2741191 +404808 +1403564 +906450 +2232207 +985399 +754846 +1025251 +764797 +1099981 +1060980 +2232283 +1986844 +933038 +985350 +1953428 +1450109 +117515 +31502 +1968321 +579172 +579166 +2622298 +579168 +1599422 +2518720 +2053054 +1599468 +2099456 +579057 +1341509 +579050 +831886 +771907 +1087212 +1100030 +1450211 +1599488 +985418 +661380 +2232412 +831800 +1315521 +1946642 +704877 +985428 +1374379 +227960 +117525 +985378 +985403 +985445 +985394 +350462 +305147 +985405 +1897306 +2550466 +2232230 +1523850 +1599434 +1341530 +2232208 +2744210 +831931 +2622269 +31523 +1152965 +2445045 +2733904 +831757 +1523863 +2706209 +1120625 +579082 +579108 +831827 +1450223 +1511833 +831881 +1099998 +579027 +579131 +1599571 +1511856 +2507190 +117552 +1717127 +704884 +31565 +985389 +2507195 +457019 +1599404 +1511843 +500002 +579182 +227940 +504134 +1234827 +1748299 +1599503 +1407376 +1234809 +2518719 +1685108 +117456 +117477 +1599475 +1599461 +1599580 +31604 +1897320 +1087208 +2232237 +2232221 +1486975 +831893 +2518725 +31607 +2355329 +2232354 +305126 +2346243 +831833 +1984046 +1152960 +579171 +2409998 +985446 +831851 +831938 +31596 +2346267 +906453 +948784 +2409989 +1599550 +1700472 +1511854 +831811 +985373 +1100019 +117486 +579093 +117510 +985368 +2053062 +1389621 +2072296 +2550445 +2832710 +579195 +2706215 +288198 +387229 +579269 +1259769 +2507242 +72473 +2518734 +661435 +2346335 +1299911 +1645652 +2010232 +1400465 +1450262 +2706228 +2733920 +1374385 +579243 +579215 +1748338 +2622313 +1822194 +832042 +661414 +1946661 +1748320 +1450255 +1968329 +212210 +579281 +1907479 +1315553 +661418 +2232443 +504162 +117656 +579200 +832052 +2749521 +1748322 +579247 +832013 +2627907 +1450278 +661421 +1288962 +387230 +1266304 +2759033 +985452 +1259780 +2733908 +2622310 +1299906 +1768306 +1341547 +2232455 +661415 +2232457 +1599657 +1288967 +1599676 +72475 +1599635 +337108 +2410006 +718617 +1748334 +1717147 +1599610 +2232474 +2729554 +2749518 +1897346 +1315554 +704898 +579203 +1599722 +117639 +1984056 +1364252 +579242 +2759044 +1450271 +832036 +1953437 +387227 +2053099 +1450276 +948800 +1315541 +504164 +1997210 +579233 +2507233 +1234850 +1599704 +704900 +2232478 +676851 +579197 +1685111 +2002880 +1523878 +1599645 +387226 +2718406 +1266307 +832054 +2749056 +832055 +1984059 +2622307 +117646 +227968 +2232451 +2346333 +2232482 +2759036 +1450273 +2232468 +258631 +1700481 +1599642 +1599714 +1599640 +387218 +1450288 +1950075 +1450236 +1081854 +771914 +2718423 +1309033 +661390 +1939730 +1939721 +1599628 +1206761 +2627922 +1120665 +1842688 +1993968 +2307387 +2232424 +933039 +2706236 +2749492 +985456 +1309028 +2232458 +1950083 +387219 +117638 +579212 +832039 +1025254 +579274 +370855 +1288996 +1088618 +1897347 +1599648 +832050 +2733913 +362075 +948795 +2099500 +370854 +2627912 +2445059 +1288971 +579210 +2369548 +2718424 +1721895 +1410490 +729137 +729143 +676841 +1822195 +832026 +2706214 +1249553 +2106303 +1599656 +1309045 +1450291 +832006 +704920 +1599667 +1993965 +2346340 +2759024 +1100049 +2507240 +1266305 +1288976 +72477 +1599674 +117647 +661395 +1234835 +1599711 +504161 +1511868 +743210 +1315549 +704922 +1986846 +1374387 +1100050 +1410488 +2354903 +117673 +948794 +2232481 +2737947 +258633 +2694398 +1047425 +1315536 +2366874 +1897354 +370847 +1100056 +1315540 +504168 +1599720 +754467 +832164 +2422257 +227997 +2763772 +117722 +2410063 +832242 +1897374 +1165305 +2106320 +764810 +2106326 +1700513 +2346351 +661499 +1346692 +1717157 +1986851 +579364 +1289023 +1664588 +661519 +2749534 +1309056 +1997215 +1400485 +832121 +1748346 +579427 +832106 +2232575 +2622340 +729163 +579449 +729165 +1450375 +227984 +1376965 +2346366 +1374444 +948804 +1364295 +350468 +2744227 +1081860 +2550526 +2550548 +2749524 +1599754 +832238 +2232550 +579387 +2518749 +661512 +579358 +227998 +1748345 +2355346 +985526 +1984063 +832151 +1700496 +832176 +2307394 +2627937 +2550523 +1315559 +1374413 +1810245 +2232554 +661521 +2727466 +2310460 +1665947 +1346722 +2518742 +2002889 +1385133 +1599791 +2369583 +2759045 +1847235 +1706713 +579433 +2518746 +661469 +2346365 +2410032 +2622333 +832123 +1385128 +579455 +227993 +1400474 +1234881 +305205 +2053106 +1385132 +1511876 +1299925 +985522 +1234896 +1599797 +1152975 +2627941 +228002 +1196570 +370862 +1346736 +1289026 +2518755 +1748351 +1364279 +579419 +2106319 +1450304 +909348 +1234903 +1289050 +1266316 +579361 +579421 +72484 +342036 +1341575 +117704 +1450397 +1259783 +579485 +1047429 +1234868 +1315571 +729185 +356948 +832152 +1700509 +743238 +1847232 +2106322 +832117 +2099509 +1374424 +1374449 +661508 +1450386 +504176 +579457 +1748365 +1993988 +1993985 +2003571 +2346368 +1599820 +1364275 +305193 +31616 +1450340 +985525 +1152974 +1309069 +1346682 +305188 +579416 +1400479 +832131 +1376964 +2232503 +2232611 +948809 +457054 +1986854 +579493 +212217 +2020432 +2232526 +1289039 +985486 +832223 +1450330 +579343 +500022 +2550544 +2507279 +1369273 +579335 +2410050 +1234902 +2410066 +1932321 +1450346 +258659 +1486984 +1984062 +2507250 +1599738 +1234897 +1346705 +1289041 +948812 +350470 +2053110 +1315557 +1234895 +1450334 +579334 +1599751 +579440 +2053118 +1968334 +2718439 +2232502 +2346380 +1289051 +579458 +832161 +579503 +1234871 +2759047 +985510 +579381 +2369562 +2749062 +704943 +2445069 +1266319 +1599736 +1299920 +228014 +579499 +2106315 +1907485 +832248 +117734 +1315564 +117752 +2072305 +305194 +1289042 +661520 +579375 +1993972 +2518744 +1450326 +2550567 +1070489 +2718445 +1259787 +579357 +1599832 +1374425 +832250 +2346381 +704954 +579332 +1386343 +1346704 +1717161 +579423 +1450377 +1315569 +2232593 +1450398 +2346364 +1450331 +985539 +1152973 +1953454 +2627944 +1374443 +2355340 +1450299 +2550518 +1932323 +1717154 +2627946 +227991 +31623 +579418 +1035604 +1364283 +1599839 +743255 +2106331 +2002886 +2232577 +2310457 +579371 +1599821 +832201 +117679 +2733930 +771927 +579435 +1450389 +1450362 +2704778 +2550522 +1374418 +2759046 +948803 +1599800 +1599785 +2445073 +1523897 +2550549 +2741202 +2346357 +2232605 +2718434 +704958 +1993974 +579300 +2445064 +2677721 +2410046 +1346685 +2232522 +2346382 +305199 +1450355 +2232601 +832141 +579472 +579482 +1135334 +2369567 +1035596 +31627 +500060 +117770 +2516254 +1599945 +1599922 +212220 +1450437 +2518771 +832361 +579574 +1748408 +1523904 +1374457 +2232685 +2053160 +832543 +2106341 +2410103 +353157 +1599957 +1599938 +985554 +948819 +2232708 +832493 +117810 +705035 +2346388 +350486 +31648 +1196584 +258696 +117812 +1364313 +579596 +258682 +1259805 +1599870 +1385137 +500038 +2106345 +832332 +579541 +1599880 +117798 +2507285 +2694412 +1120708 +579547 +1374456 +832330 +2550591 +117815 +1599882 +1717178 +1035618 +1379532 +832290 +832301 +2232735 +1599893 +2232686 +2232692 +832371 +1100084 +1259801 +288206 +2550577 +1847243 +1369280 +258694 +2763777 +1299927 +832348 +504205 +1165308 +1939736 +579568 +2694416 +1748391 +1152978 +31658 +2099552 +832277 +832394 +117852 +1120724 +909352 +676869 +2550594 +1511879 +985557 +832477 +1289079 +933096 +500062 +579544 +985636 +579556 +1450445 +485241 +2410085 +1599860 +579626 +1309083 +1035624 +1599902 +350473 +985614 +1081873 +832309 +832390 +1374467 +1315576 +2759063 +1748393 +1259792 +1025261 +2232679 +2232653 +985560 +2232652 +2027853 +2286170 +1081871 +356959 +2704786 +2550570 +2232664 +412460 +1035625 +2002891 +2518774 +1289071 +2232662 +2550592 +31673 +337112 +832463 +985622 +1665949 +353156 +2696475 +1450459 +832340 +832517 +2763786 +933077 +117825 +117791 +705016 +985606 +2099521 +258671 +2518767 +117829 +1165310 +579640 +771943 +2718467 +1599947 +117821 +2763788 +2366880 +2307406 +579536 +1120717 +2622370 +579595 +2763792 +2232665 +579615 +2099524 +771953 +1309071 +832286 +1450470 +2677729 +2099551 +1897401 +31678 +1289075 +485244 +2106349 +117799 +2099541 +1450413 +1599932 +1088627 +1081875 +1346739 +2232650 +72494 +1599960 +1259793 +985599 +579622 +2718452 +2507300 +832283 +421161 +1035612 +1206780 +832427 +933109 +832370 +705023 +2369589 +130 +2053145 +1511884 +2099558 +832317 +2677738 +1047430 +705036 +705014 +705029 +2346407 +579524 +705008 +2507294 +1897386 +1897391 +985575 +1897395 +754473 +1346750 +1374470 +705028 +2547510 +1680618 +2053202 +1035627 +705052 +1600058 +2099575 +1035629 +2053210 +579730 +31701 +832684 +832595 +832565 +1450502 +832676 +1450524 +1511912 +2507312 +72497 +1759983 +2410134 +2622426 +661563 +2622435 +387254 +117900 +1700546 +705056 +117957 +579692 +1984082 +31700 +2550612 +1364337 +579650 +2307414 +117939 +1196592 +2099559 +1088630 +1315587 +117862 +1374490 +1600006 +1748441 +661569 +1600003 +2072317 +661565 +2507309 +2232835 +832567 +2232837 +2232814 +1600037 +1907490 +832694 +933125 +832664 +579680 +2550616 +579717 +1100097 +2622405 +1700547 +1946711 +832685 +832561 +579754 +31714 +2232889 +661550 +2053204 +1600053 +1748427 +2346425 +387250 +2507318 +1748417 +1599997 +1076430 +1289082 +832670 +1400503 +579797 +2622408 +2677759 +2688122 +2518777 +764822 +579792 +117913 +676871 +705055 +1035632 +2072320 +1748415 +661571 +2550607 +1600043 +1600089 +832624 +2550611 +2346429 +2232785 +2099579 +764823 +1600015 +832666 +579751 +2410121 +2099573 +1376968 +705081 +832629 +2232839 +579660 +1600085 +579814 +1939741 +832669 +1748437 +297445 +117951 +1600087 +1196599 +2759075 +2507323 +1341606 +2232804 +579662 +2232796 +705048 +832656 +117949 +305243 +1346755 +579719 +1721903 +832689 +2053205 +117884 +1346767 +1100099 +985645 +1369285 +2232891 +2550608 +2232823 +579782 +2106362 +2355373 +832660 +2307416 +2410115 +579714 +1035635 +1748413 +579670 +1309101 +1717195 +2410136 +579734 +1984078 +2232828 +2232838 +661572 +1341603 +2622399 +1364340 +579721 +832654 +1234933 +1309091 +832550 +579700 +1946708 +2355370 +31710 +1346786 +2027855 +832699 +1374475 +1600052 +1120726 +832584 +1523917 +2518783 +2346428 +258716 +2677755 +1315588 +228036 +1374482 +1025262 +579768 +2355360 +1932339 +1364324 +117877 +212223 +2053181 +1717194 +2507331 +579766 +579804 +2718476 +1600049 +1600072 +1379535 +1341616 +2720146 +2099595 +579938 +2099593 +1953482 +1206788 +2346482 +457066 +1081928 +1600150 +1450570 +2232966 +661608 +1309114 +345422 +117987 +832845 +2233034 +2763808 +2029261 +661616 +1346798 +1450561 +1970443 +1196610 +1386348 +2369613 +1309130 +1289126 +832821 +1600126 +387273 +1994000 +2366897 +771976 +579897 +1482154 +1748464 +118025 +1120740 +1152987 +1700556 +1234965 +985672 +1600127 +2706265 +1346797 +387283 +1088634 +1970447 +2720153 +832829 +324521 +1600141 +1600161 +676883 +258732 +2020444 +440216 +832763 +1374516 +2233039 +2733942 +387290 +485255 +1081911 +985702 +258718 +117978 +2346435 +2346465 +2718495 +1401808 +1346803 +1100108 +2718493 +457062 +1309120 +2053221 +1152986 +1984104 +1081906 +1081900 +579898 +337114 +579971 +2346444 +504238 +2507334 +2718491 +2053238 +117988 +1600152 +832752 +1341622 +832756 +2310475 +2718488 +1289142 +1847251 +2020447 +579969 +2518794 +1984109 +370900 +504236 +1196608 +117997 +743282 +832865 +1309127 +504249 +832715 +2232982 +337116 +1897420 +2020451 +2233001 +832833 +370888 +2053229 +2106401 +2346468 +2002903 +2099591 +1176870 +1088633 +1196604 +2232902 +661610 +1385149 +2010238 +2727480 +1810260 +985681 +832726 +1259840 +832748 +1955737 +1120735 +1309128 +2232984 +1100124 +2232921 +2013787 +985698 +832841 +1060999 +832725 +1717215 +832754 +2518795 +2733945 +118010 +985708 +579908 +1234943 +2749553 +898827 +1035644 +118027 +579858 +1600137 +579987 +337115 +743280 +832727 +2688129 +258749 +228047 +228055 +1120741 +579921 +117965 +1081920 +258729 +1953481 +1450543 +985697 +1341627 +832714 +2759092 +1289140 +504248 +579843 +2720149 +440218 +1968337 +1986860 +387271 +2106385 +1100114 +1397264 +117971 +705148 +1450610 +228057 +2550648 +2346510 +832910 +1600204 +1600194 +579999 +2233070 +2346529 +1385153 +1986866 +985745 +212227 +1939750 +2053240 +2053261 +1289164 +2346520 +985717 +832918 +2027858 +2550651 +118090 +1600208 +1450579 +948842 +2622453 +1385155 +1374554 +31760 +1450608 +832878 +457073 +771984 +2763822 +1939746 +1400530 +985749 +2550649 +1700576 +1400526 +1289169 +504269 +1289159 +1389633 +2233122 +2053242 +118098 +1450615 +1374548 +118082 +118062 +1100128 +1939754 +201667 +1309138 +2550640 +2233076 +228065 +1299946 +661636 +1299947 +705146 +2759097 +2233078 +1946734 +2233060 +118083 +2099603 +1600195 +118114 +1341631 +2053264 +1374555 +580042 +1266344 +729215 +705171 +212228 +258752 +1950101 +2106427 +661631 +2106415 +118045 +1946724 +771986 +2759094 +2627983 +2507355 +832889 +2683623 +356970 +676893 +1374539 +72518 +2763814 +2759099 +985731 +1369292 +1450600 +118053 +2099599 +1600210 +1374538 +1081935 +2718515 +1950099 +1946731 +1950102 +2029267 +2106408 +1374563 +580051 +118093 +2622464 +1984128 +1450609 +2737967 +118041 +1939745 +661618 +118048 +1748481 +1376970 +2507353 +1081933 +31755 +580007 +118108 +1266352 +72512 +324522 +1946721 +1369297 +1946720 +1897434 +2053271 +2749074 +832872 +2507356 +1450593 +1680623 +1450605 +1450611 +2053262 +1600182 +1289172 +1061001 +2053252 +2099598 +1196614 +2346608 +2053315 +2410174 +2833772 +2834342 +2833639 +2763826 +31774 +2833430 +2834211 +2833602 +2233204 +500069 +2833648 +580112 +305275 +833107 +2833471 +2833204 +2835046 +2833778 +2833125 +504281 +2834573 +2410171 +1523953 +2833478 +2833732 +2833066 +580184 +772005 +2834171 +2832819 +2834254 +2847169 +1309152 +2847179 +1600317 +985841 +2832983 +2833092 +258815 +1309156 +2833197 +2833264 +2834337 +2833332 +2233176 +948849 +2834705 +2833986 +118195 +2346636 +305279 +1600402 +2835065 +1600284 +580150 +160 +2835165 +2833890 +324528 +2833706 +2834840 +832958 +1600265 +2835113 +1309161 +985854 +324572 +985859 +504300 +2832954 +2832825 +2834793 +833145 +2763865 +2832764 +2833925 +832942 +2834959 +258801 +2834459 +2832943 +2233166 +948855 +2834118 +2832973 +2834687 +1374579 +2507394 +2233234 +2834301 +833074 +1757055 +580193 +2834725 +1289219 +2029283 +2233154 +2834149 +2834385 +2834098 +833075 +2834122 +2834104 +2834899 +2833236 +2832808 +118126 +2833899 +2628040 +2834940 +2834356 +2834534 +2833007 +2832941 +1374570 +1047463 +324575 +2677816 +2029285 +2833766 +2763845 +2833860 +1374564 +118143 +1946766 +258805 +2833982 +1259860 +2628020 +1600302 +2834939 +2834894 +2834872 +2832897 +2835054 +2835010 +2832946 +2834427 +2834129 +350490 +393902 +833009 +2627998 +1939761 +2832919 +2834457 +2833034 +985808 +2835138 +2832933 +1600414 +2833966 +2834987 +580168 +1939759 +833077 +2832861 +2834062 +2833594 +2832980 +2628003 +1757069 +2627997 +2834965 +31813 +2833004 +2677820 +2832994 +2507382 +832988 +500172 +833030 +324555 +1600376 +2834520 +2834761 +832982 +2834495 +2834454 +1482155 +1450649 +31788 +2834679 +832998 +1748498 +833123 +2833251 +2833775 +580084 +1299958 +580079 +2834724 +2833162 +2833843 +1410543 +1523961 +2834302 +2834591 +2834088 +2627992 +2834906 +2233199 +833137 +288211 +1047458 +2834874 +2628054 +2835130 +2834829 +2835030 +833061 +580171 +2833298 +2677803 +2834012 +1259857 +2833934 +2763841 +2628008 +2833595 +504298 +2834455 +118205 +2833884 +2834585 +1759992 +1645670 +2833128 +2628076 +1369301 +2834828 +1309163 +2834127 +1450655 +155 +2053274 +2832831 +1450642 +833025 +2834273 +2233162 +2832765 +387300 +2833774 +832971 +2835107 +421162 +1600406 +393888 +324540 +2847183 +1035652 +31828 +393899 +2835103 +1035647 +2835116 +985862 +2833555 +2834922 +1600269 +2834568 +580080 +1450644 +2834994 +324543 +2833256 +2834403 +2834230 +2834292 +2833395 +2833523 +580123 +1289210 +2835062 +1950105 +2677851 +2677794 +833021 +2834708 +2833448 +393906 +1450695 +1600377 +1234975 +2834041 +2834999 +580104 +833141 +833128 +2832896 +1410544 +2053285 +1407396 +2834660 +2835152 +2346571 +2233202 +2628039 +2832802 +2834313 +2832977 +1600227 +1523969 +1700591 +2833911 +2628022 +2833094 +2834318 +1600413 +2834694 +31820 +2834032 +2346640 +2834772 +500163 +2834404 +1047475 +2833382 +985856 +2763855 +2369624 +1450682 +2310500 +580190 +440222 +948883 +1700595 +2835171 +2834655 +2628032 +500162 +1299951 +2628109 +1600325 +2834538 +1346805 +2029276 +2832832 +2834551 +2233203 +2741217 +2346572 +771992 +2834051 +31812 +2833978 +833079 +118194 +2833065 +833130 +1523952 +2833446 +2835027 +948847 +2834386 +2833796 +2833664 +2834059 +2833321 +2628102 +1523970 +2835192 +2834435 +2833368 +2834817 +324574 +2310516 +2833169 +2833868 +500081 +2763837 +2833821 +2834158 +2507401 +2834581 +2833090 +1299957 +2832966 +2834953 +1760026 +288214 +2835087 +2834530 +1035662 +2835067 +2833407 +2835028 +2835080 +1946756 +118160 +2834251 +2834312 +948874 +2833800 +2834323 +2628024 +2833358 +2834540 +2834970 +2834192 +2832780 +2834644 +2833564 +2833691 +1035669 +324561 +118185 +2833158 +2628012 +2507391 +2834656 +1341637 +2834614 +832963 +1266366 +1600380 +2833619 +2834569 +2507388 +387294 +2834436 +2834387 +72527 +2834008 +2834575 +2834220 +305278 +2834341 +1600404 +31821 +832991 +580157 +2834133 +2834867 +2233188 +1386353 +2233147 +2346624 +2833174 +2834843 +2832929 +2833013 +2834308 +2834165 +2833902 +2833460 +1759999 +2834111 +2507387 +1450685 +2834992 +2833877 +1600234 +2834175 +2833373 +2833618 +2833160 +2834649 +2833437 +2833068 +833133 +1645682 +2834474 +2833881 +1309139 +1488471 +2628021 +2833150 +2833331 +2834915 +2834453 +2834081 +2346586 +2834026 +2233184 +1748499 +2834812 +1700590 +833038 +2834107 +2834066 +2833451 +305268 +1700588 +387296 +2835070 +2835189 +2833861 +2835136 +2834469 +2628057 +2833363 +2833500 +2832830 +2346614 +1600378 +305276 +2834196 +1511935 +1600285 +2106442 +1946752 +2833412 +2053319 +1645672 +1600400 +2834768 +324591 +500180 +2835047 +1450629 +2628036 +580086 +1450698 +985786 +2233181 +2834582 +2832799 +1450712 +1946750 +2833993 +2833591 +2369618 +833125 +2834335 +2833392 +2835038 +2833671 +1700608 +2507397 +228069 +832951 +2310502 +500161 +2628042 +1600257 +580137 +2832990 +2833275 +2833063 +118247 +2233317 +580345 +305316 +2233388 +580267 +2053408 +1035720 +2233426 +305330 +118245 +1289327 +2053331 +2233339 +1450778 +1035766 +2622482 +833265 +1450856 +118261 +1450867 +1600503 +1450767 +1259885 +580397 +1450780 +118228 +1374622 +1600454 +1994044 +985915 +504303 +1760041 +324613 +2053335 +1847277 +1234979 +1309191 +833180 +833220 +2622491 +1289330 +305382 +580203 +833197 +31839 +2410194 +305355 +1450878 +1309167 +1035678 +1600510 +2547537 +1289236 +305323 +305315 +1120771 +2410232 +580216 +2550678 +2691131 +1932376 +305300 +580349 +1259906 +2233337 +2346654 +2233342 +258831 +2410240 +985917 +2622488 +1289251 +2053373 +1259871 +580316 +833230 +2622478 +580369 +1259892 +2233409 +933146 +1450739 +1047497 +1374627 +2410190 +1259898 +2053392 +833185 +1450842 +833193 +833269 +393933 +1600497 +1289302 +2718526 +833250 +1907518 +1760053 +580201 +661701 +305337 +661721 +1511941 +1035690 +324639 +1450755 +1953537 +1047516 +1600458 +1748517 +118294 +2233293 +1047480 +1289281 +1939779 +2550672 +1035753 +1047490 +2233326 +833191 +1955761 +1035765 +305369 +2706271 +985900 +1600482 +1025289 +580358 +580273 +2233282 +1486990 +2233379 +580290 +1600491 +1047522 +1600480 +2369633 +833272 +2628155 +580326 +1035736 +1450721 +1374602 +661717 +1946795 +772023 +1897463 +2694492 +1035747 +2688154 +580248 +833176 +2053338 +305336 +2410224 +324643 +2233395 +1953535 +1897437 +2369628 +1450747 +661716 +2622483 +985908 +2688145 +1645691 +2369653 +1315619 +1757077 +2029290 +833280 +161 +1289305 +2694460 +1950112 +2233467 +2628139 +2029286 +2677900 +1289245 +1450732 +2233290 +2233309 +1748531 +1120782 +580226 +1450850 +118271 +1748539 +118258 +1410556 +2233265 +1953508 +1035698 +2233451 +324621 +2233401 +118270 +705187 +772027 +1450859 +2233436 +2720165 +1450849 +2741218 +1450771 +305291 +2233356 +2233308 +2749567 +1757084 +118239 +1047529 +985887 +1450781 +580402 +580370 +305395 +2233404 +580375 +2053340 +1309166 +1953505 +1341652 +661670 +833253 +1511943 +504313 +1374603 +1035699 +1289314 +1450847 +580400 +1266380 +1266389 +1950122 +2622471 +324615 +1748537 +1259880 +2628152 +2628160 +2233343 +2677892 +2694489 +2233328 +1289315 +1760062 +1450868 +833173 +1289232 +1374597 +1600430 +2688141 +1450826 +1035741 +1748536 +2727495 +2677872 +1047507 +1289293 +2720168 +31842 +2727496 +2410207 +2346659 +305387 +580409 +580347 +2233449 +1047512 +228071 +580247 +1994046 +305413 +1645704 +1410564 +2233385 +305352 +2369635 +1450760 +1289254 +1757085 +833192 +1364368 +985904 +1946800 +2691137 +2518806 +985902 +2550658 +661726 +1600502 +933147 +1946783 +1450763 +2233368 +305349 +1450818 +1450845 +2053348 +2233275 +2233340 +1266388 +661718 +1266386 +1700613 +1600456 +1035710 +2233499 +504342 +2622507 +2369674 +1450898 +2764066 +2410291 +1939789 +2628169 +2704806 +2764102 +2233676 +2764017 +833420 +2727506 +2233651 +2233634 +2550719 +2233596 +2053542 +2233621 +2764050 +1946822 +2764004 +2718538 +2233712 +2622510 +1600537 +580454 +1645711 +2677907 +705200 +985931 +118304 +2410276 +1289358 +31850 +580568 +166 +833316 +2550705 +580553 +2622504 +580493 +2099634 +1760080 +1600539 +2688173 +2233541 +2029312 +580561 +2233709 +2628226 +2233578 +72544 +1364378 +2764106 +1760074 +31852 +1450915 +1176879 +2410289 +2683628 +1266400 +2233492 +2507410 +772039 +1081958 +1822209 +2628199 +118303 +2029318 +2072331 +2233473 +2233698 +2410293 +833338 +2346672 +1374631 +1120800 +2628207 +2346693 +833313 +580518 +1970456 +2053439 +2507409 +2233553 +833318 +2622505 +1932396 +1450921 +2053482 +1932392 +2764120 +2677917 +1600525 +1760081 +1450925 +2763896 +2233652 +2763990 +2550718 +2233636 +2233631 +2737968 +2053437 +833418 +2346692 +2759111 +2233489 +2053419 +2233696 +2233537 +2763994 +2106504 +2072332 +1450932 +2053458 +2233567 +2233564 +580514 +2764071 +580486 +2628173 +2622493 +2355411 +2233595 +2233690 +164 +833346 +2346694 +2355406 +2763905 +1410582 +504345 +2688162 +2550698 +2053509 +2763887 +1946809 +2233592 +580548 +2053444 +2053519 +2764040 +1450922 +2106524 +2053467 +2764023 +2410298 +2749568 +833419 +72546 +2718556 +2550692 +2550724 +2233603 +580444 +2053474 +2628170 +1450902 +2764085 +833341 +580516 +1968351 +2233587 +1289350 +2346690 +2233538 +2053544 +1266402 +2720183 +2410299 +2053459 +2233705 +2733952 +1939786 +1450911 +580450 +833390 +2106521 +1955763 +2053477 +2628219 +2718543 +2233591 +2233479 +661751 +2628191 +580530 +1970458 +1822214 +2518825 +2355412 +2053507 +1450939 +1600556 +324673 +2053422 +2691140 +2106542 +2691141 +2763934 +2718555 +1410576 +580554 +228073 +2233512 +2029298 +1600532 +2763881 +2053443 +1450927 +2764063 +504349 +705202 +676901 +705210 +2764112 +2029322 +2053540 +729221 +2763927 +2764025 +1309218 +661832 +2628237 +504355 +833502 +258851 +661844 +2764184 +258844 +2822948 +661831 +1700645 +661753 +580661 +2310531 +948899 +1315630 +118354 +1289389 +258875 +1369310 +2233745 +1523993 +2053549 +2507433 +2233795 +833493 +833500 +2764182 +2677938 +833496 +833474 +833487 +580589 +661798 +1450979 +1760097 +324676 +2691144 +2547543 +2677941 +2822939 +2346725 +705225 +2822916 +2848829 +580640 +580585 +2764144 +2764189 +118347 +948901 +1897470 +504371 +580653 +661761 +705219 +2822949 +118372 +2233820 +580647 +833458 +1700649 +1450978 +2346722 +772045 +504369 +2233777 +833457 +985948 +1374639 +580629 +324679 +2822925 +2507427 +1600602 +1600621 +118366 +1289388 +1600623 +2822917 +948904 +661817 +2764148 +2233787 +1450981 +118352 +2507437 +370913 +2848843 +754478 +258858 +2764202 +580620 +2733957 +2346727 +1488478 +743298 +2410313 +2822951 +661814 +661837 +2764150 +2286172 +1953568 +1939792 +118358 +1700639 +72551 +833428 +118356 +661756 +2233797 +833492 +1700646 +2764181 +833507 +2233762 +500195 +1600572 +500194 +2764152 +2507418 +1700655 +833454 +2346703 +1897472 +1760094 +1847291 +2106561 +661804 +1341676 +1600570 +2764206 +1600599 +1748548 +500201 +705270 +2233909 +1932403 +1451088 +2053582 +2848883 +1523998 +833633 +705233 +2848890 +118415 +2020459 +2310537 +1511966 +2233965 +1600679 +2234024 +2099664 +580970 +2106576 +581008 +580810 +1289408 +1176881 +2550742 +1810274 +1600688 +2233869 +1315645 +986048 +2728733 +118433 +661965 +258882 +2099651 +1234996 +986021 +2688183 +1907532 +2233897 +580951 +2410325 +2233950 +705251 +661941 +2694541 +986006 +118566 +2848914 +1374653 +1953572 +1364397 +581034 +2310539 +2234031 +1600655 +833652 +1035781 +833643 +2727509 +662032 +833569 +2099678 +2099665 +118458 +1025294 +2233907 +581027 +1700671 +986022 +1451056 +118423 +2310536 +118579 +833637 +833658 +1748562 +2694530 +118446 +661944 +580977 +1450989 +1299992 +1600711 +581041 +1700680 +1364383 +986005 +580889 +580723 +1451109 +1450996 +580816 +2053626 +228098 +580911 +1451059 +118392 +2688193 +661942 +1932399 +1932405 +2233956 +933171 +504383 +118466 +580999 +2848902 +228109 +118562 +305453 +1450982 +2029334 +1309256 +1451021 +764861 +833553 +1600661 +228095 +228079 +580785 +1450997 +118507 +662007 +581018 +2848892 +2053638 +305444 +118484 +581050 +2233837 +581029 +2547544 +580969 +833547 +661953 +705282 +580976 +118572 +2550748 +2688179 +580861 +1932400 +2848876 +72557 +833609 +2848894 +2233958 +2099662 +118412 +662027 +833673 +2233930 +580668 +31882 +2369711 +118394 +2694529 +305458 +580921 +2410328 +31888 +1600637 +504395 +1785777 +2863672 +662000 +118432 +1410597 +1364387 +705258 +833628 +2733958 +118528 +662006 +2106579 +705242 +1206805 +661924 +985995 +580691 +909357 +1600645 +2233946 +1309254 +580669 +305434 +2688191 +1289392 +2233868 +662021 +118593 +118524 +2310543 +580802 +118510 +1600664 +2106587 +2694538 +1309228 +1600685 +2355422 +580803 +2694527 +2366917 +118571 +2053594 +833539 +580794 +1451032 +2234014 +2233985 +986018 +118574 +580917 +504388 +2848866 +1451149 +2848856 +1451050 +580757 +1600731 +986029 +2053597 +661943 +833514 +1600660 +906476 +1717228 +457082 +118411 +2688180 +305442 +2410323 +705269 +2848870 +118500 +2053579 +2233968 +2233984 +662033 +2346731 +1451073 +2848864 +1289427 +581026 +2053586 +580680 +2233989 +2233824 +2848879 +2550736 +661966 +2863675 +2550735 +580706 +661934 +2233855 +2002911 +1309321 +1374689 +2053643 +2688217 +1748587 +1289597 +1374714 +2410337 +1289448 +581106 +1968361 +2020461 +1289565 +305502 +581151 +305535 +581193 +581374 +1289647 +581316 +581381 +2688271 +1946924 +1289462 +1600769 +2694673 +581236 +1953589 +1748575 +2848925 +305530 +1748574 +1600754 +1451209 +705310 +2053644 +2688210 +2764218 +2741228 +1309286 +1035801 +2688288 +662073 +1289572 +1289473 +1100157 +1309290 +2733603 +1364423 +2718586 +2053645 +1100149 +2704839 +1289645 +2764296 +2727518 +1968360 +1289467 +305485 +1488482 +2234050 +1364410 +1364428 +1600780 +581174 +2764291 +1946897 +581131 +581325 +305493 +1289530 +1953622 +1289636 +1346834 +1600773 +2002912 +662070 +581416 +1939796 +2764286 +581403 +581311 +581073 +2010244 +1946918 +1364403 +662066 +1364399 +2002913 +1309335 +1946875 +581262 +581398 +662047 +1309260 +705368 +305523 +705290 +1289657 +1289540 +729244 +1364413 +440225 +662052 +1717238 +581344 +1946935 +662099 +305472 +729250 +305461 +1364432 +2704822 +1946928 +1946898 +2764283 +581323 +2764228 +2688202 +1289596 +581245 +228123 +305497 +581092 +2688278 +2764276 +705364 +1289659 +1451211 +581111 +1374685 +1289650 +1341722 +581144 +1946941 +1984194 +2694587 +1289489 +1946887 +305533 +581063 +1946917 +2688215 +581375 +1984178 +705333 +581058 +1946944 +305501 +2688250 +1953639 +2727516 +581085 +2694636 +1984203 +581339 +1289661 +2764287 +2688231 +581341 +1364408 +1374719 +1385163 +581333 +504404 +1385165 +581099 +1984168 +581115 +2741227 +1289588 +2002909 +473962 +2848940 +1374676 +1364402 +662042 +370918 +1946878 +1984183 +2727515 +2694598 +1946892 +1341736 +1196627 +1600774 +2694657 +1953605 +2694605 +1946876 +457092 +2694567 +581172 +1600781 +1374718 +1955772 +705357 +2688293 +2696498 +1907538 +1289548 +833678 +581215 +457089 +2694606 +2764308 +833710 +1289474 +2234049 +833702 +1035797 +581194 +31903 +2694617 +2053640 +1946886 +2704840 +1953613 +2688262 +1289570 +1289637 +228128 +581137 +228118 +2764328 +1309307 +1289551 +1364398 +2764267 +2688257 +581383 +1946846 +1946913 +705349 +1289653 +2764290 +2234058 +705365 +1953581 +1152993 +2694549 +662077 +581292 +1289542 +1994073 +2688261 +2718599 +1309315 +1451210 +1374703 +581256 +1950135 +1341750 +2764352 +118633 +2688351 +31908 +2694719 +1717246 +2704866 +2688329 +2718670 +2688315 +1374750 +1289695 +1289724 +1946986 +1511994 +2764413 +986120 +581692 +1953690 +705385 +1748627 +833846 +833827 +2764446 +2688394 +705379 +581623 +118657 +933189 +1984223 +581513 +833849 +118634 +833763 +2764350 +324685 +118672 +2694732 +729264 +2694753 +581710 +1259929 +118650 +581548 +1259939 +305549 +662170 +1047551 +1035805 +1289698 +31905 +2688407 +2053672 +662121 +118649 +581640 +2688381 +833730 +2764384 +118629 +2704863 +1309376 +1364446 +662272 +2704874 +2764434 +581563 +1994107 +986112 +581603 +1946978 +2099684 +2764364 +581614 +2234089 +581564 +118662 +1309346 +2764451 +2694764 +2759140 +581521 +1374754 +1953667 +1289720 +986121 +833845 +1309353 +2694735 +2694727 +2688313 +1341751 +833738 +662227 +2053688 +1984211 +2694757 +2234079 +581606 +2764439 +581708 +2688424 +118687 +662209 +1289722 +662213 +2764483 +1600788 +833729 +662146 +1289705 +662265 +1600787 +118619 +662250 +1309370 +1953693 +1259931 +118660 +2688334 +833822 +662271 +2694758 +1600803 +1374745 +1953687 +581535 +581543 +581572 +986138 +2688321 +662159 +1953653 +2053659 +2688366 +2733609 +2002917 +581550 +1984228 +1748625 +1035807 +2764396 +118632 +2688349 +1259928 +581713 +1748628 +2694689 +2704871 +1953662 +31912 +662243 +581437 +705395 +1309358 +1953663 +1451284 +581482 +2688338 +1968373 +1994089 +1946991 +2234083 +2718653 +2764392 +1953704 +2099687 +2694742 +833811 +2759144 +581570 +1259941 +1309364 +933192 +581675 +2764479 +1374744 +2764348 +2688354 +581712 +2759143 +1374809 +1120804 +833818 +833727 +986095 +1451254 +986119 +2764462 +2234072 +1309381 +1364444 +1953657 +662259 +833748 +2688391 +1374781 +833790 +833841 +2688437 +1947009 +2694678 +1953650 +2764450 +1374733 +1364453 +2688318 +118627 +581568 +1946967 +1953670 +1953647 +2764404 +581665 +581705 +1289801 +581716 +1984253 +2234123 +581750 +118727 +2234204 +2694802 +1047552 +1984252 +1100165 +2704885 +1897486 +2234218 +2694834 +1451390 +1947030 +2694819 +1953718 +1289752 +118752 +2688474 +581822 +1953748 +1364472 +1451342 +1600846 +1947024 +118756 +118702 +228137 +2688457 +1451366 +581721 +2718699 +581832 +1341767 +833897 +118751 +2099692 +1374810 +1451324 +1600859 +581720 +581866 +581877 +1810288 +1953752 +833882 +581837 +1100159 +1309418 +1512009 +1035812 +1364465 +1289754 +1451325 +581997 +370934 +228145 +1451348 +2688468 +2234237 +2234167 +2688454 +705436 +2688462 +2053763 +581916 +1289773 +662286 +581848 +1289785 +581938 +1385172 +1953743 +1953726 +2053728 +581908 +1600871 +118697 +2694799 +118733 +118712 +1389638 +581973 +228147 +662304 +581817 +2764500 +2099690 +833887 +581807 +1289771 +1953768 +581964 +2053754 +581854 +1289749 +581841 +1309410 +581963 +1341774 +1289784 +1600835 +2764499 +2234179 +581865 +1309415 +1953762 +1035813 +1289759 +1289774 +2234177 +1451341 +370942 +581909 +1120814 +2688479 +662298 +2099698 +581952 +2694838 +581862 +1947044 +1100171 +2234196 +833871 +1120818 +1451375 +1309412 +705411 +1120819 +2688455 +2694811 +1451398 +1057762 +118706 +729266 +662282 +1947067 +2694839 +1451371 +1451374 +305560 +1289788 +457098 +118700 +2234200 +1120816 +1289757 +581864 +705448 +662285 +581781 +933196 +305568 +2688477 +1451510 +2234321 +833947 +1289833 +1953786 +2053780 +31939 +2234307 +31952 +118765 +118817 +933222 +2764522 +834110 +2718721 +833976 +582311 +1451560 +2234328 +1451455 +2718741 +2764512 +1953788 +457113 +729269 +457119 +582209 +582342 +582034 +582098 +743318 +1953789 +1451543 +305576 +662333 +356976 +582128 +2053798 +662354 +1120827 +370944 +986211 +1600920 +582126 +582197 +1451477 +2764555 +1196645 +2053786 +1953785 +582101 +1451468 +2234341 +582220 +582026 +2234353 +1364486 +834080 +1524001 +582054 +662364 +2053828 +833956 +582011 +2099744 +2234266 +1600933 +582084 +1451593 +2234305 +1984271 +833965 +705536 +2234284 +933216 +2099713 +705570 +387354 +370961 +834097 +1259953 +504410 +1600932 +305608 +933230 +986202 +582344 +2234272 +305570 +833995 +1600935 +582338 +582045 +582226 +2234251 +2234279 +582297 +705501 +582327 +2346772 +2764545 +2234250 +834051 +387362 +705551 +729275 +457125 +1289823 +1451456 +288237 +662334 +1947089 +2234296 +2354905 +705513 +1451588 +582139 +1600911 +833957 +1120829 +986191 +2718716 +31946 +582238 +582118 +2053805 +1953820 +986186 +582047 +705535 +1897512 +305612 +2764518 +834063 +705532 +582127 +582080 +1600900 +582078 +2099735 +1953783 +2764578 +1120826 +1451563 +1035819 +705470 +2694853 +118776 +1364482 +833934 +582163 +2053807 +2053796 +2099731 +705507 +834076 +2234270 +1953784 +705555 +31941 +2273563 +705533 +1847303 +833932 +118775 +288240 +1847294 +1289835 +2053820 +834019 +1451562 +1451532 +2053844 +118792 +2099723 +834077 +582202 +582174 +582305 +933209 +1953776 +582144 +1897496 +2234252 +705548 +834009 +2099721 +582271 +1953823 +2234245 +1512020 +2234325 +1600910 +2234311 +582067 +705517 +582065 +1947080 +2718727 +1300001 +582325 +2764505 +2099728 +1451507 +834041 +1847301 +582248 +387343 +582201 +1600921 +582053 +582333 +705485 +1259949 +2410372 +2718711 +2053842 +1047554 +933218 +1451474 +2234314 +1451430 +2764506 +228167 +32123 +337140 +582532 +504426 +1600979 +228323 +357017 +32127 +834152 +119035 +118932 +2445105 +504440 +118906 +425696 +582554 +743367 +258935 +743348 +119073 +457151 +504416 +582639 +337138 +582395 +1100192 +582713 +228355 +582717 +118973 +986278 +933246 +705816 +582402 +2234424 +986242 +119145 +1488485 +582737 +582428 +705614 +705812 +504448 +119007 +118848 +582407 +986301 +228246 +432168 +504450 +1482158 +582727 +228375 +337130 +582740 +743373 +582497 +305664 +353168 +729305 +705644 +582830 +119071 +118835 +582673 +582755 +228318 +582692 +32059 +32046 +705743 +421174 +119028 +582592 +582967 +2234423 +118845 +933262 +705795 +582417 +118942 +948925 +72581 +118901 +582494 +582584 +228257 +297456 +2759145 +440287 +1100191 +362110 +705741 +582699 +2234410 +457162 +228327 +986282 +582767 +705584 +705626 +305693 +1153000 +1300002 +582808 +582663 +705571 +305701 +705773 +356993 +582954 +582794 +834126 +371008 +662423 +1760974 +754490 +1120843 +662439 +228227 +705638 +305697 +582406 +705573 +582768 +201730 +986313 +473974 +32122 +118838 +676923 +118857 +457185 +258937 +582948 +834130 +353169 +119094 +582474 +662414 +705673 +118863 +182 +582907 +32111 +1153001 +305687 +582553 +457182 +305676 +582636 +1120844 +404813 +834133 +305638 +118909 +370986 +986303 +986281 +118989 +705650 +582811 +228201 +743330 +705604 +119057 +32124 +32026 +743339 +986267 +305639 +1717261 +228234 +201734 +582816 +582678 +72575 +370993 +119091 +118937 +228174 +2027873 +118951 +119112 +118957 +212258 +337137 +212246 +328862 +357013 +32093 +357007 +1346846 +371020 +1120840 +178 +1451604 +662437 +504418 +705786 +729286 +457174 +32031 +582445 +676930 +582623 +705739 +582361 +32148 +337145 +371013 +986234 +2234384 +582851 +2369717 +1341813 +118958 +582660 +457145 +440266 +118952 +118831 +582682 +705748 +743321 +119155 +1600982 +119104 +986240 +118946 +743370 +2053855 +258913 +662405 +736748 +743341 +1600945 +228191 +582562 +1035861 +387366 +32076 +357004 +119095 +582478 +582686 +440268 +31972 +118978 +32144 +705694 +356987 +705794 +398067 +986280 +1512029 +582801 +1364496 +933261 +582780 +228389 +705616 +457133 +1206819 +457130 +305651 +119111 +119058 +705754 +705781 +582648 +371040 +582548 +32081 +370992 +705828 +228274 +1100196 +473970 +119144 +371006 +2234387 +582382 +582715 +305691 +440282 +228225 +1659060 +119041 +2234403 +201728 +582852 +582856 +582376 +582902 +582739 +1206822 +582595 +705806 +32078 +118854 +705800 +228196 +118881 +705591 +582745 +201697 +457141 +370976 +582563 +582923 +582517 +119388 +583144 +119223 +834374 +1760102 +834341 +228412 +504454 +834252 +421177 +834346 +371048 +500265 +2234585 +1451652 +1451680 +2234550 +258946 +2234442 +119158 +834427 +583085 +1601101 +1047576 +119553 +583143 +119476 +1760107 +583029 +119271 +834357 +764886 +119563 +582978 +764894 +32255 +119342 +834393 +305717 +32348 +2764595 +32352 +2547546 +305764 +258944 +32170 +582986 +834472 +1451673 +705837 +1120863 +119386 +834467 +2234506 +32292 +986341 +1451638 +1047563 +2234547 +2099777 +1100203 +387379 +662462 +1601085 +583036 +2764608 +305779 +834207 +500266 +324702 +504458 +1289849 +1601092 +2518303 +582976 +32327 +834254 +2518304 +32205 +32233 +2273574 +305744 +1451709 +986395 +119288 +387384 +1100199 +119374 +583003 +1100204 +729311 +2764593 +119542 +2273571 +1120856 +305737 +2346801 +662464 +32215 +32190 +119416 +582979 +583149 +191 +119312 +2764618 +2764606 +764885 +32293 +1451671 +2234510 +2099776 +2099778 +662453 +986327 +119492 +583092 +119502 +834261 +2234493 +2704913 +119443 +2764626 +1120864 +305739 +834187 +32319 +2234543 +583077 +119218 +305713 +834434 +2234471 +834312 +1601141 +1451641 +119250 +2234595 +986386 +119488 +986354 +583096 +500260 +2764609 +834382 +583136 +119172 +119333 +986353 +119251 +119338 +1601000 +834412 +119350 +772073 +834469 +834349 +2234482 +2234531 +119541 +1601050 +305729 +1601113 +986376 +1748643 +834291 +2764601 +834480 +834247 +834379 +32253 +834303 +500235 +1035871 +32291 +2234596 +834224 +500277 +2234457 +258952 +32287 +834302 +986361 +32289 +986379 +32360 +119411 +834335 +2234613 +2727542 +834266 +2234554 +119224 +189 +1047560 +834425 +2234557 +764895 +834218 +705840 +2099771 +2234603 +1035866 +1601031 +583121 +119401 +986364 +583167 +1120858 +32228 +2234534 +32296 +986387 +834230 +32381 +32328 +1760108 +32371 +834474 +337152 +1748666 +583010 +119314 +1601016 +986389 +32285 +1601112 +986365 +119524 +500248 +834494 +2234699 +834560 +1451764 +2507463 +2507455 +834593 +1700714 +583249 +986488 +2369725 +2106619 +1601243 +986519 +2822992 +662473 +2822971 +119695 +834572 +834518 +324722 +119638 +1601275 +228425 +583194 +834694 +834635 +772088 +1451766 +986492 +1341816 +371059 +2410420 +705846 +2099797 +834665 +504466 +2234665 +1645737 +2445114 +1782733 +2234683 +201763 +228439 +1822224 +2741235 +119574 +1451750 +432184 +1524013 +772078 +206 +2683638 +1451765 +933293 +2823017 +387392 +201757 +2106618 +1410606 +1120876 +583257 +1081969 +986438 +2823032 +2677955 +32435 +1315658 +2822999 +834671 +933290 +2234694 +119650 +1120880 +1601169 +583198 +201756 +32415 +32424 +2234628 +1897537 +986501 +1100213 +705866 +2106626 +2234650 +834598 +583219 +2053883 +676951 +32392 +986408 +228441 +1810304 +228448 +1601189 +1601142 +32458 +2354909 +1451762 +258980 +834588 +2518840 +583209 +834617 +2106615 +2507466 +2234703 +2053909 +1135342 +834626 +305810 +1700712 +1748696 +212270 +228445 +1524009 +2234705 +2822985 +2628253 +119616 +834675 +2507478 +1601254 +834630 +743382 +2053904 +305811 +2106607 +119666 +305799 +32486 +119628 +1482159 +1057767 +1932434 +933302 +32481 +119601 +834547 +72602 +1601156 +2547551 +834486 +2759147 +2445110 +72600 +228429 +583259 +2346809 +1700716 +2029346 +504460 +729314 +1035890 +32451 +119646 +119672 +1451787 +834570 +2234637 +1451801 +1049805 +32459 +32416 +583230 +583205 +353177 +2106617 +834545 +119732 +1748681 +305806 +1601193 +1451791 +986515 +32412 +834526 +834585 +834643 +834655 +1451744 +2822955 +948949 +772082 +834509 +1451799 +583217 +1100211 +1665962 +1721921 +1451803 +504467 +1601265 +382903 +32425 +1235034 +583251 +119569 +1088652 +228432 +393937 +1748687 +119572 +1035884 +986498 +583221 +1100214 +32456 +909365 +1680641 +32470 +350504 +583260 +337153 +324723 +72597 +2628251 +2234721 +834676 +1842721 +1601204 +212266 +1451784 +2235130 +1601506 +2235060 +32576 +986749 +2346886 +1748711 +504475 +583434 +305812 +1451855 +120272 +834993 +834801 +1266429 +120106 +120148 +119922 +1289867 +2234897 +32739 +2053937 +357048 +119883 +764918 +222 +2235006 +305827 +504480 +2628260 +1289876 +1685169 +2053929 +1451907 +119814 +1601387 +1601331 +834974 +583573 +72614 +1601447 +1451820 +2234832 +1601605 +120192 +834720 +120191 +1601416 +2410427 +2764637 +32534 +834966 +986551 +1601332 +986609 +457207 +1451964 +834934 +1165347 +2764670 +986688 +2235129 +1451946 +120021 +2234960 +662494 +986771 +119742 +2346834 +1259976 +32522 +1451922 +986762 +1451830 +259028 +1057770 +2234780 +2234903 +1451965 +2235010 +119750 +834935 +120254 +986645 +1165348 +1176894 +2235108 +1601616 +2235042 +2622541 +1932474 +2234748 +120157 +32713 +1601356 +32714 +119954 +119801 +2053933 +259031 +120150 +228469 +834989 +1601602 +986626 +1601475 +834819 +986607 +583468 +986571 +583303 +834933 +457199 +583454 +2764687 +228463 +835048 +2234894 +120220 +835101 +705896 +2507544 +32674 +583535 +2234880 +2677970 +2346876 +583517 +120097 +2764712 +32530 +1700747 +1700753 +32565 +2099817 +32721 +835049 +1601354 +835107 +583544 +834938 +583574 +2234929 +2234923 +1601384 +2053953 +382923 +2764683 +2234869 +2235000 +583447 +835067 +120286 +835126 +2823071 +119909 +1601550 +120176 +1601431 +1601513 +1403578 +189653 +986744 +835133 +2764810 +583296 +986629 +2863683 +835162 +2678009 +583329 +834944 +119906 +2704919 +835114 +583273 +120194 +119784 +2823041 +120085 +834778 +986778 +120071 +834865 +1601344 +32564 +986569 +834957 +2764790 +32731 +1645738 +1088653 +986525 +119752 +1407439 +259042 +371078 +1120882 +835098 +2678000 +2235036 +1601434 +32616 +2029348 +986745 +583335 +2234754 +2764794 +32527 +1601558 +1451887 +120258 +1524036 +120288 +2106644 +583536 +2507528 +2764672 +32650 +2234892 +1524030 +583304 +120190 +119877 +120140 +2234833 +120101 +1451927 +32579 +1601345 +2234801 +2764760 +2234911 +835170 +1035896 +119911 +1932440 +933309 +212 +2234924 +772093 +120189 +1932475 +457203 +119897 +986534 +835024 +32670 +2053988 +2677965 +835151 +1451846 +583357 +2235023 +2234961 +834789 +835160 +1601514 +1601312 +504473 +119788 +387410 +583478 +2235104 +1810314 +2507505 +1289862 +259041 +2106627 +835030 +2415888 +32610 +32590 +834873 +834855 +32639 +583266 +1601438 +120241 +662499 +120128 +2235087 +120201 +2234854 +119818 +2677979 +119888 +583524 +1451840 +1451915 +2106660 +2053982 +2738959 +2346825 +72608 +583515 +259018 +120145 +662519 +1601536 +2234842 +834859 +705893 +2099808 +1700739 +986546 +2346879 +986547 +834919 +1035920 +1601420 +2507512 +32669 +834976 +2628261 +120061 +2764750 +1309481 +986605 +583529 +2235070 +583476 +504505 +1842731 +834941 +1601403 +1810313 +2677987 +1601363 +1601449 +2235008 +2764705 +2764694 +2507515 +119899 +119838 +2029349 +1665963 +119824 +834924 +986783 +345426 +583549 +986561 +1601433 +2764739 +32635 +986676 +32682 +2234899 +2346835 +1601372 +2346892 +1601507 +2235045 +583385 +986550 +120245 +986751 +1235043 +1300006 +986597 +2847194 +32555 +2310561 +2346882 +1601386 +119839 +1266431 +371099 +986683 +2507542 +2234964 +835068 +2235151 +2106632 +1601341 +583268 +835078 +120182 +32661 +1601463 +1932460 +986574 +1451831 +2235069 +32675 +764924 +32700 +2053973 +835122 +835097 +583467 +1601525 +583542 +948957 +2678013 +2507519 +834916 +834889 +834799 +1451884 +2628267 +120278 +2346823 +583388 +305823 +32599 +764919 +32581 +933308 +583372 +2622534 +2234781 +1601303 +1451880 +362126 +119988 +2507497 +583489 +2764698 +2507526 +583358 +2678010 +1601604 +119905 +2234953 +2234743 +2234941 +2234789 +1451874 +1700746 +835065 +2235148 +1601531 +1451952 +120275 +2235021 +1407431 +2764791 +259027 +32663 +2235293 +2688504 +835207 +1810332 +835246 +835193 +228505 +1289890 +1601672 +120379 +835268 +583738 +1907548 +583711 +2235178 +1601694 +583705 +662538 +120393 +835311 +2235171 +2054024 +2235262 +2704925 +772107 +835232 +120308 +1700797 +583672 +2235242 +764941 +583624 +1601628 +2346917 +2694876 +1452037 +1035939 +120509 +1601647 +835307 +2235255 +1341826 +1984280 +1700803 +662532 +1451993 +120402 +2027882 +583653 +2688505 +120471 +1601709 +2235155 +2009406 +2737986 +2759159 +120380 +2346935 +1601687 +440294 +2235221 +835283 +1680659 +2235196 +986858 +835300 +120303 +2106677 +2688499 +1512066 +2235278 +2054045 +2848950 +120482 +2009408 +1403579 +1810328 +2235297 +1487007 +1451992 +986809 +1451995 +2307456 +2346916 +1601703 +1289910 +2235343 +32746 +1392627 +1601721 +120391 +583617 +120531 +120297 +1601699 +120451 +1451979 +986849 +1165362 +2054020 +2622544 +2235184 +2737990 +2054025 +2235316 +1289889 +32799 +2054046 +1601679 +2054002 +835322 +2507546 +457212 +2007315 +2053991 +2346927 +835211 +32779 +2235203 +2235191 +1601640 +583630 +2346933 +1601688 +1810329 +764940 +835178 +120304 +120510 +583592 +1452022 +1601665 +933344 +835223 +986866 +1601711 +2235168 +2346923 +2235310 +2235194 +1235060 +1452000 +2235287 +120365 +2054003 +1451999 +32802 +2235266 +1364505 +835171 +1035937 +120521 +583588 +835231 +583673 +1601750 +1601751 +583602 +504510 +2235238 +1601648 +120312 +583735 +120368 +2099832 +1601748 +986791 +1289902 +2550770 +1451998 +662546 +1601765 +1601766 +2007320 +583637 +835214 +1452005 +1601627 +986840 +1057771 +2054015 +583712 +120339 +583662 +1601772 +1512067 +2235320 +1601762 +2099826 +2507548 +2235322 +120341 +1512058 +1601674 +1680656 +1700792 +662534 +2235163 +2507563 +2235222 +32757 +986868 +2054042 +1452017 +583622 +2054013 +583720 +2346902 +1035931 +120350 +1452028 +2235274 +2346947 +1396495 +2106731 +1512086 +120609 +259072 +2346963 +2622563 +1452098 +2738960 +1289940 +1512072 +1452162 +986955 +1300021 +583832 +835481 +2235489 +504541 +772113 +228516 +1341830 +1601864 +2507611 +1939827 +1266469 +2029381 +2706296 +120582 +1601865 +1524043 +2235496 +259046 +1700808 +2054151 +120585 +2019722 +2235356 +2622560 +1524046 +2507613 +120538 +583771 +228515 +2054150 +2759179 +583810 +2307464 +1266466 +120549 +2106678 +120568 +1939798 +1410631 +1452064 +1748770 +835367 +2029371 +2694877 +2410441 +2369743 +120627 +1452116 +1601840 +583800 +2235469 +2235414 +1512085 +835494 +736081 +1452141 +1955774 +662580 +1601798 +1266465 +1994131 +705906 +120593 +2054080 +1524047 +1289941 +2235486 +2759174 +1700806 +2235563 +772119 +835384 +2054065 +2286182 +2019723 +986928 +2029361 +2720230 +2099856 +2628274 +676960 +1300010 +835357 +1452110 +772128 +2310570 +1289970 +662559 +2235350 +2235474 +120577 +1300015 +1452134 +1266463 +705907 +1512077 +1410642 +835447 +662579 +2235445 +1601811 +772124 +705919 +729336 +2235448 +1601859 +120606 +1289975 +1289967 +2235539 +2310568 +1512073 +2235389 +1601808 +1452108 +2054094 +504550 +2369745 +1970472 +1452076 +1601799 +2235529 +1512071 +662586 +583831 +2550773 +259068 +986948 +1524041 +583818 +1939806 +2054155 +1970466 +2346958 +2106711 +2235527 +2235501 +1120902 +835428 +1289931 +2346965 +1452143 +1289950 +504529 +1120904 +2054071 +2235570 +2007335 +1452072 +120643 +835381 +583788 +933362 +120633 +1088654 +583751 +120602 +2054076 +1601814 +986924 +986930 +2106686 +2550775 +835374 +2507592 +1452044 +2235500 +1407462 +948968 +1984288 +1970480 +835484 +1601801 +2054086 +32806 +1452150 +32812 +1309501 +1341837 +2106707 +1176896 +583764 +2759169 +225 +835459 +2550776 +1410644 +259059 +2009423 +1953854 +835401 +986934 +583774 +2235522 +583768 +2054137 +835436 +1407464 +2054063 +1266449 +1452138 +2235397 +2718771 +120544 +986968 +705918 +1410625 +1601833 +2072349 +2054054 +2235435 +2518858 +1289973 +2678035 +1953860 +2106730 +1994134 +1932516 +986992 +583891 +986985 +835811 +1452238 +2346993 +1602001 +2369762 +1601880 +987039 +120704 +1524050 +32880 +835796 +2099862 +1341844 +32920 +1289994 +2235712 +987087 +1452277 +583916 +1601914 +835616 +2622570 +987080 +986994 +32918 +1452187 +1070522 +1602013 +1602047 +120752 +2507622 +987144 +987124 +1748773 +1602019 +120680 +1932510 +2622576 +583886 +2507678 +2678071 +32838 +1452211 +1070524 +120767 +1081998 +583982 +371105 +835793 +2369761 +2346996 +1953881 +2235744 +32869 +1081999 +1602031 +583898 +2369759 +2235584 +2764857 +2410460 +1652050 +1512093 +382926 +2019726 +835646 +835688 +1407502 +1602074 +1452257 +1452269 +1932506 +933382 +120737 +2764882 +1452259 +2099863 +2346975 +1289989 +1452240 +259073 +583952 +2072352 +1601888 +1602009 +772135 +1120915 +835668 +32842 +120723 +1452191 +987068 +2764837 +1452212 +1994137 +2235752 +2235592 +2507647 +835808 +729344 +231 +835647 +120758 +120695 +1452267 +2235730 +2235629 +1602081 +2054220 +288292 +2346995 +986986 +933383 +1601941 +120688 +2764898 +1601992 +2307473 +1685182 +583928 +32853 +2235625 +1897551 +2410468 +120729 +2106752 +1524056 +2764834 +1601913 +2347036 +1452239 +2235609 +2764896 +987085 +2628283 +32926 +987125 +2628282 +1932508 +2235692 +1035955 +2507690 +835585 +120726 +835822 +1822231 +987044 +2054187 +583941 +2764870 +1452283 +2347060 +120778 +2410476 +2099870 +259102 +2764881 +2678053 +1407483 +120719 +259074 +2347018 +1932492 +2622574 +2009427 +1452166 +835752 +1035950 +1602026 +2678087 +2764856 +1512098 +1810339 +259091 +986988 +1452244 +583950 +32836 +120742 +2764824 +835791 +1601956 +32835 +2054175 +835783 +504583 +2235711 +2235614 +1452209 +835700 +1601989 +201790 +2235585 +835776 +1452186 +2347065 +2764849 +1601942 +2235647 +583901 +2764863 +987033 +583943 +1309509 +1602022 +2235615 +2054166 +583974 +1035948 +120738 +1452278 +1407489 +1341847 +835603 +1601950 +1452201 +2235736 +1290009 +1601944 +2235646 +1512104 +987028 +2410478 +2235722 +371109 +2507696 +2235855 +1070531 +2863827 +835995 +485315 +1341856 +2235863 +1602093 +2347109 +1120929 +835919 +2863741 +1932529 +2347100 +1070528 +584143 +584105 +1810363 +2235795 +2054244 +120828 +2694881 +2235797 +2863802 +1602173 +457221 +120833 +1602121 +835968 +2235798 +2054224 +1524061 +32966 +835978 +1035969 +1602133 +987252 +120886 +1300024 +764977 +2678092 +1035964 +1602158 +584111 +2863698 +662599 +2764921 +1341862 +835845 +584017 +228533 +1452389 +662600 +1947106 +120866 +2863856 +987187 +1984300 +1810385 +1602124 +584035 +259117 +584079 +120805 +2694883 +2863808 +705955 +120869 +2764913 +1602180 +2235868 +2863795 +120810 +836023 +2054255 +1452393 +120813 +1602201 +835825 +1932521 +201807 +584069 +2863789 +2307477 +1602126 +2235793 +836043 +2235841 +987275 +2759207 +32931 +835888 +835873 +1452351 +1748784 +2863813 +1602231 +120834 +1120927 +2235767 +120827 +835909 +1452405 +387434 +1385191 +987175 +1386358 +2235820 +1602148 +2628287 +835854 +2347087 +705945 +120844 +584082 +1452345 +259121 +2347114 +1602169 +2863704 +933404 +2054265 +1947108 +120883 +584036 +987219 +2863730 +1403585 +933395 +584043 +1602150 +2863819 +2863810 +2863895 +987194 +1932535 +2863869 +835908 +2863756 +836053 +987184 +1602208 +32957 +2235832 +2863865 +584175 +987263 +2347086 +2863694 +2678097 +835933 +1364529 +835824 +1120928 +1602130 +32959 +32950 +1602193 +987163 +120864 +2863879 +32956 +584060 +987221 +584171 +987199 +836012 +1452336 +457225 +2347113 +835900 +2848958 +1602137 +259116 +662620 +584160 +120803 +1120934 +2054229 +120821 +2706299 +1524060 +835850 +2863710 +2235772 +1035967 +2863843 +2863728 +2054260 +705953 +2054246 +835898 +1680670 +835886 +584173 +835867 +2507692 +1452333 +662609 +836015 +2347106 +120802 +120804 +835958 +1602228 +2507712 +2863799 +1290024 +2863868 +906508 +933390 +705954 +2863852 +32961 +2678100 +1602200 +2507701 +259104 +835966 +1602109 +1994143 +584093 +387430 +2863740 +2863703 +1602170 +2235881 +2235790 +120875 +1235064 +1512165 +584189 +2236136 +33029 +662632 +1602404 +2410546 +33004 +584191 +412470 +2764961 +2307492 +836266 +836283 +584231 +33033 +987338 +2749082 +2236110 +2054322 +1452513 +2236118 +2347168 +836294 +2764962 +836232 +1602394 +584292 +2507755 +1452564 +120930 +342046 +120943 +2054314 +2235982 +836416 +1452475 +121022 +121066 +1087225 +1452567 +2764983 +584303 +2738001 +1897579 +473980 +1235080 +1452561 +2507749 +457241 +1602316 +2236020 +676970 +2507773 +440297 +836414 +1602454 +836177 +2236090 +1897585 +2764951 +1602485 +1057787 +1602354 +1374880 +987308 +1602368 +2235954 +987290 +412468 +706001 +662635 +1315678 +836218 +33050 +120927 +987353 +772150 +836265 +2507775 +1165386 +836417 +836077 +2764954 +836081 +33120 +32993 +1165387 +2236010 +2054312 +305855 +2054338 +584283 +2764946 +2054289 +2236088 +432207 +120940 +705984 +933410 +432209 +2622603 +432236 +765017 +584375 +584225 +357066 +772148 +584245 +1664604 +1717270 +987424 +2507772 +32975 +33121 +2765063 +2236000 +764988 +1452537 +2622604 +1842742 +584326 +1452519 +2099933 +1602333 +2236008 +33049 +584358 +2054346 +2236123 +1512157 +2236111 +1680683 +2507754 +120968 +1047585 +764996 +836087 +33072 +1452540 +2106760 +2236134 +836225 +1512147 +1452559 +836327 +1842735 +2236095 +987414 +2678106 +2507794 +2764989 +2099895 +987359 +432232 +836328 +2307479 +2366940 +1452443 +1410660 +1602335 +2236039 +328882 +987385 +1782738 +987351 +1602353 +1120940 +121052 +584242 +584218 +584315 +1452527 +228551 +189657 +2718799 +2099891 +1994147 +2835233 +1602468 +2507738 +1700856 +2054317 +1341868 +2507757 +2622596 +836074 +987391 +836211 +1452477 +765012 +1602470 +1897561 +2764964 +584293 +121034 +1309521 +121005 +121064 +836281 +120962 +1341875 +2235973 +1602378 +584369 +2507777 +584197 +2106768 +121056 +2507788 +2235956 +2550794 +2099900 +584252 +2236063 +120963 +1602427 +2765049 +33083 +2507786 +1452558 +72646 +32984 +764984 +2273577 +836357 +2410515 +987366 +2622600 +2235944 +836204 +33068 +836396 +2547571 +1602265 +457229 +2764950 +1120942 +2054284 +1512151 +120903 +33117 +1707599 +1100259 +2099899 +2236017 +432229 +1452473 +836180 +584192 +2347156 +987400 +584328 +2236161 +764997 +1452598 +836183 +2099896 +457237 +2764932 +432221 +987325 +836331 +1602391 +2347120 +584208 +1994145 +2691157 +1452517 +584234 +1452507 +1100263 +584310 +987403 +2099927 +836241 +933439 +2507797 +987386 +1748829 +1452529 +32970 +457247 +584341 +2718790 +2235985 +1452586 +2764938 +584309 +1602318 +2235997 +1810393 +2733619 +2507774 +987405 +1602388 +1452523 +1512162 +2235890 +1602428 +120917 +836148 +2765064 +33110 +2765016 +120898 +1452580 +1602308 +1088658 +1602317 +2054269 +2307483 +2236041 +2622578 +1100275 +836119 +1512186 +120949 +1700884 +500288 +1602351 +2547566 +120904 +836198 +2235991 +1602442 +743399 +2235989 +2099921 +836273 +584370 +836400 +836351 +2765061 +2547572 +836362 +120991 +836358 +2547569 +305848 +2307491 +2835226 +2236011 +743395 +371116 +2765012 +1452432 +705997 +121071 +584268 +2678113 +1602274 +584313 +1452427 +2507780 +1452457 +2678117 +2835223 +1452577 +987342 +705977 +33027 +1235078 +2347146 +371115 +836348 +120981 +2236348 +1290091 +2236405 +836553 +836512 +1452635 +987481 +948988 +2236301 +1748835 +2849059 +2507844 +2054391 +2863990 +1932553 +836589 +2236176 +1602536 +2236333 +1452684 +1984334 +1290065 +259159 +121095 +2236197 +2347203 +2863909 +2236207 +2029393 +1932554 +2863939 +987505 +2765098 +584440 +987446 +584617 +836601 +1452683 +2518864 +2236321 +33144 +584572 +1452666 +2848974 +1290067 +2236316 +2765077 +1452642 +584461 +228579 +584539 +2002930 +2550797 +1602520 +2236435 +584417 +836705 +2236344 +2863901 +836605 +729361 +2054372 +836668 +2678135 +1035989 +836448 +584524 +584628 +2099943 +987495 +2410553 +584588 +2054420 +1810409 +2849048 +1748844 +836454 +2849040 +836521 +706070 +1206833 +2410551 +2547585 +2236204 +1700928 +1602624 +121096 +2445136 +1602504 +2864003 +1452661 +2863961 +2236413 +584638 +1602620 +33143 +121099 +1602609 +1235098 +584560 +729352 +2848962 +933462 +836600 +2347219 +2099945 +2864049 +1452679 +836444 +121116 +836543 +1810406 +2849032 +584422 +2347211 +1452637 +1235102 +2236378 +1602552 +1810430 +584397 +765024 +836560 +2236213 +2054378 +836724 +2507851 +33133 +2236354 +836599 +2236182 +33136 +1290090 +2678134 +987487 +121094 +584540 +2864064 +2236307 +2759233 +1602553 +2236293 +836527 +1984329 +836438 +2863987 +584523 +729353 +2347186 +584536 +2347206 +2236312 +2010250 +1700915 +2236419 +2236382 +2027885 +584500 +584450 +836524 +1700898 +387450 +2849056 +836576 +836637 +836722 +2236453 +473981 +1953903 +836588 +1994148 +2835241 +432238 +2507863 +2347196 +836673 +1602623 +1602574 +1512194 +584513 +2863966 +2347188 +1290087 +584454 +2849034 +2849055 +836468 +836421 +836517 +228566 +706057 +2765087 +1602547 +836420 +2236295 +2236183 +836730 +1680690 +772159 +584618 +836503 +2236429 +584421 +662648 +2236456 +2236363 +1897589 +2445139 +1932548 +2054429 +72650 +2236243 +836651 +1602573 +1602610 +1452619 +836548 +584541 +2285313 +1602584 +584620 +584619 +1602565 +228573 +2054426 +836640 +1400545 +1721951 +836495 +387457 +2054411 +1602637 +1082014 +2765109 +676971 +836494 +1452681 +662660 +2849007 +2236366 +2054381 +584604 +1082022 +2678121 +2507850 +2236308 +836499 +1452667 +1602567 +836505 +584596 +2507820 +2863958 +2355436 +2864051 +1602532 +2236408 +1512193 +706053 +662681 +2236259 +2849012 +2863965 +2002932 +2507817 +584556 +1810432 +1602586 +836663 +1266489 +662672 +836539 +836691 +1645744 +1035990 +2507856 +706021 +2445140 +2410556 +2099948 +2848966 +584527 +1602642 +836586 +836650 +2518865 +2678123 +2765084 +2236431 +584533 +2236286 +584512 +933474 +1602750 +2347255 +1452707 +121274 +2099978 +2507968 +2236507 +121202 +584723 +121250 +2347375 +2823080 +2347275 +1700950 +1602831 +121280 +987684 +2678176 +2678171 +2507955 +2236461 +836828 +2678180 +2347369 +1602795 +1407508 +2236466 +1810447 +1452692 +2738003 +121242 +1452780 +1602867 +2054451 +33286 +2054481 +2622620 +1452727 +33172 +2678157 +1524073 +259162 +2765126 +2236561 +1452770 +836911 +33266 +1452742 +2099968 +1512219 +2236615 +121305 +2236554 +2678187 +2347325 +2236671 +1897596 +584738 +121265 +1602779 +1602743 +2106802 +2236665 +1602704 +1602788 +2236498 +1602879 +1748853 +33174 +2628301 +2347324 +1035996 +2236687 +2236716 +2507951 +987524 +2678146 +1452763 +1364549 +1602762 +2410570 +2054445 +584688 +33267 +987605 +2507926 +2507874 +2054448 +584672 +836773 +1165392 +1452711 +1452795 +121257 +2347404 +1452792 +987543 +584715 +765050 +1810438 +1309535 +2236602 +121187 +2823082 +987575 +1035994 +1810455 +987579 +987565 +2236537 +33213 +2236579 +987629 +2507909 +121330 +2236505 +2099971 +1452712 +1602859 +2622617 +1700991 +1700955 +121345 +836765 +1524072 +259187 +1487019 +2236471 +121275 +2236669 +1700994 +1602877 +33222 +33247 +1680695 +987616 +836781 +1082035 +2236496 +1452739 +33178 +1602790 +2236546 +1602809 +2678163 +121329 +765049 +2507987 +1602720 +2236488 +1602678 +504613 +836777 +2507935 +2236502 +33215 +121258 +987531 +1700975 +1452769 +2236604 +2347279 +121244 +2236656 +2347229 +2410560 +2678192 +33252 +2054459 +2054437 +836978 +121285 +836901 +33251 +2347260 +1488502 +987583 +201819 +121241 +201824 +987514 +1364551 +2027889 +987584 +2765135 +836764 +1810444 +2054505 +836820 +2507898 +2765125 +1665972 +2849080 +33214 +33160 +259178 +1932580 +2236583 +2678164 +836939 +1602874 +1512213 +1602860 +121339 +584658 +1452789 +836801 +33195 +121192 +2347262 +33236 +987648 +2347401 +33254 +2347336 +2273666 +765039 +2823073 +2236689 +259191 +987597 +2347254 +987588 +836742 +2236581 +2054507 +33225 +2445141 +121304 +836790 +121308 +2628308 +1290142 +1602803 +836952 +1602820 +2445147 +121171 +33168 +2236475 +121245 +2347357 +121247 +2236479 +121337 +2347377 +33244 +836771 +836994 +2236504 +2054454 +765040 +1452732 +2236681 +1602828 +1602839 +305877 +242 +2310591 +1266493 +1644296 +2054508 +1452709 +836799 +33294 +2347311 +72656 +2347312 +1290123 +1748852 +1700938 +2054447 +1602674 +1452798 +121303 +2507911 +1290126 +1452733 +33237 +836817 +837030 +121428 +2704944 +121437 +2237035 +2054576 +1452925 +584833 +121489 +1994165 +2236882 +2765230 +2236743 +121417 +2099983 +121376 +2310602 +2765246 +837041 +1300031 +837039 +2347549 +2508050 +933484 +987816 +1603163 +729376 +33343 +1290174 +121563 +1847326 +987717 +1452841 +2347456 +1748870 +121357 +2765166 +584809 +1452939 +33323 +662721 +987874 +2410573 +121377 +504637 +1266518 +2706303 +1939832 +2628330 +1309543 +1603009 +584883 +2236973 +584821 +837223 +371140 +121427 +1932642 +1685197 +2410593 +33337 +584871 +2765252 +121410 +1452960 +1341914 +933492 +949000 +1907560 +121470 +2237036 +837295 +837209 +121491 +987811 +33393 +33325 +949008 +584789 +1410685 +837033 +987892 +584841 +987883 +837140 +1701033 +662714 +2347422 +1341909 +1260022 +676978 +987746 +1036009 +987776 +584854 +837273 +837325 +1603169 +949003 +2765232 +987799 +2678223 +2410582 +1603102 +987859 +1300035 +1685196 +837262 +584864 +2236789 +987702 +2237018 +2347468 +1953911 +1120996 +1603088 +2347512 +2678224 +1452870 +2236818 +1206836 +2347505 +33382 +948998 +2029401 +1452838 +2678221 +1309549 +2347461 +2759253 +2765214 +2236917 +584856 +2236857 +1810462 +2765241 +772180 +837237 +1452869 +584839 +1603139 +2236968 +121513 +1701010 +2310615 +504650 +2106825 +2236844 +2628335 +987886 +2236783 +662731 +1452959 +2347560 +1932621 +2508010 +1290226 +837178 +584896 +2236921 +987822 +2765197 +772185 +584834 +2415895 +1932610 +33365 +584783 +1290191 +504642 +837196 +2277739 +2236960 +1602899 +2765147 +2347488 +2236863 +2106837 +1603124 +504617 +1603146 +2678208 +1602984 +1452904 +1266514 +2310613 +987743 +72657 +2738968 +2678233 +2508006 +121442 +1452884 +987733 +2106851 +1341905 +837217 +2347556 +1266501 +1407519 +2347446 +584872 +33361 +1939833 +2236885 +837203 +121503 +1290221 +2508033 +1290207 +837241 +2445160 +2347507 +1932601 +1290215 +1603055 +837159 +2445157 +228591 +2106824 +1364552 +1603004 +2100002 +2106815 +1487023 +584866 +837047 +2347555 +1487025 +584774 +1907559 +1602967 +1603173 +1603074 +121517 +662735 +1603161 +584752 +2236769 +2347510 +2765146 +2236756 +2507996 +2347426 +2347559 +121406 +121382 +837188 +837028 +2678259 +1452892 +259195 +121391 +1290188 +33375 +1994168 +987880 +837112 +837114 +33324 +2628345 +1452883 +584899 +121372 +2765225 +987769 +259199 +1602947 +33322 +1266505 +121438 +2347434 +584939 +2765243 +1907558 +2678245 +837074 +2236900 +584750 +121356 +2237056 +504661 +1309547 +837290 +987767 +1602945 +1452833 +2765233 +987893 +2310598 +1364554 +584885 +1847325 +2236815 +2628347 +2054509 +2347583 +121435 +1266531 +2236822 +1603048 +121537 +2054510 +765078 +1346870 +1452842 +2508003 +121447 +1603001 +33315 +2678206 +1932667 +2765155 +2347544 +772171 +1603042 +584757 +2550816 +2236928 +2347568 +2678243 +1932634 +1932666 +121525 +1748858 +1512222 +1290180 +2347501 +1603082 +2054519 +2347472 +2106848 +837212 +121371 +1603047 +1701016 +33342 +121540 +837079 +1452955 +2347586 +1452953 +837255 +2236807 +1701044 +584925 +2106867 +2054542 +1452894 +662712 +2236976 +2054550 +2236752 +2765179 +2759257 +584903 +1932670 +2099990 +2508053 +2106879 +1810509 +33432 +2054609 +33421 +837417 +2054612 +1603185 +2622639 +2106889 +1036052 +837514 +2765374 +2508076 +259207 +33495 +987920 +933516 +765095 +2347661 +121670 +33446 +2823094 +837498 +33467 +933541 +1121005 +2765253 +2347667 +2273669 +933522 +33490 +1341927 +1603223 +121776 +2369787 +228607 +1932681 +1403017 +33439 +837408 +2307508 +1100305 +228609 +121768 +121745 +1082056 +2237126 +2347609 +2347636 +987979 +1082052 +2765283 +2237122 +1603265 +987954 +1810494 +1701101 +2765324 +2410624 +765094 +1341923 +1603268 +1947120 +1701072 +837391 +121657 +2027901 +2765277 +201835 +2054640 +1100306 +2347595 +987970 +121607 +1482164 +837489 +1024437 +121698 +933505 +2347640 +2237184 +2025483 +1785786 +2054623 +288315 +933529 +1524108 +121737 +933513 +2678268 +2237176 +1452981 +2823098 +933503 +1984340 +33464 +121761 +33425 +2765254 +2310629 +837388 +2678277 +121664 +2072363 +1249569 +1947110 +1100311 +1452994 +1235127 +2550823 +1603221 +371141 +2237172 +259223 +1701073 +305887 +585008 +1524102 +765106 +837463 +2410607 +33479 +1768317 +837363 +1070548 +2237092 +121739 +33438 +2054605 +2237102 +33430 +121604 +1453016 +1407531 +837356 +2054610 +987942 +837440 +2054634 +2622645 +1810498 +2445163 +2100010 +121786 +121653 +837402 +906530 +987907 +933540 +2347628 +1994171 +2347626 +33482 +2765359 +2237093 +2410605 +1603235 +2765256 +837380 +2347596 +2678265 +121679 +1748891 +933545 +1024441 +1652057 +33410 +1057798 +1701098 +2237088 +1947130 +584982 +1603305 +837342 +1346874 +121736 +259239 +121762 +987975 +1266539 +2628368 +584977 +1036054 +2765306 +837453 +1603240 +1603289 +1701067 +2307509 +2237125 +1785788 +1810504 +933519 +2765367 +121710 +33459 +2765373 +2628359 +2628360 +2678282 +837511 +2237106 +1603241 +1810500 +2366954 +33457 +933533 +898844 +2823096 +121751 +2237194 +121640 +2765276 +2508066 +2347651 +1196675 +933544 +121619 +504672 +2628361 +1907572 +1701080 +2237201 +259263 +1076444 +2765362 +259227 +1290255 +676994 +2765381 +2550854 +2273677 +2741248 +2347675 +837538 +1939853 +2415901 +1524123 +1453041 +2550839 +585060 +2835245 +2628387 +662750 +264 +1410693 +1235148 +2849172 +1036082 +1603369 +2054669 +2369826 +371152 +353193 +837551 +676989 +2864098 +1036092 +2054665 +1453060 +2628381 +2508084 +297463 +1036084 +121900 +988040 +2410635 +1810510 +2741249 +2765521 +2622661 +2628374 +2347678 +2864125 +988026 +2765433 +228619 +949017 +1107562 +1309580 +2628383 +837575 +1984346 +121794 +988050 +2355449 +585024 +1341933 +2106960 +2106963 +2106946 +121890 +2835257 +2741257 +2835285 +121870 +2835274 +1100315 +2369818 +2106916 +2410637 +357078 +2628391 +1290268 +305894 +988004 +585043 +988024 +1603372 +2054661 +2765503 +371147 +2410656 +1897629 +362135 +457277 +2706311 +1266592 +1955784 +2366960 +2237291 +988055 +2849161 +121864 +933562 +1512244 +288319 +1290280 +1524114 +2508083 +988017 +933558 +33518 +1847337 +2765494 +2720247 +2729607 +2765501 +2765533 +585035 +2864120 +2720257 +2706328 +2765427 +1970509 +2849164 +1453147 +2106901 +837580 +1025309 +1376978 +2749597 +1453063 +504721 +121911 +2849170 +2054678 +837559 +2106921 +1036076 +1036075 +2849102 +2237264 +1453079 +2628392 +2237311 +2054652 +2835275 +2765448 +2445172 +1290296 +729390 +2765468 +121797 +72688 +121802 +2410657 +2765492 +2765396 +1603340 +988013 +2106903 +2765466 +2835306 +2835320 +1603336 +1266544 +1897635 +504714 +988023 +2347694 +504679 +1300045 +676986 +228622 +1453090 +1897640 +305895 +1994178 +357081 +933550 +2550868 +2765383 +1603348 +1121014 +1341932 +228615 +2106911 +504711 +988005 +1897636 +2237266 +837589 +837599 +1369326 +2237322 +662768 +2849151 +2864121 +585062 +2706306 +2765418 +2355445 +33539 +1346885 +1748912 +837648 +1939842 +2347673 +1266577 +2864117 +1036089 +1346880 +1453143 +585064 +265 +2720245 +662772 +1036065 +2706332 +1266587 +1266554 +585057 +1603420 +2347684 +2765389 +2054670 +2628397 +2765392 +2622658 +504716 +2106943 +1290289 +1364573 +2003575 +121923 +33523 +2765390 +121916 +212286 +2550844 +121793 +1088667 +1907584 +1984344 +1364570 +2237215 +2054689 +2369803 +2864094 +837636 +837631 +1603350 +1939846 +1453113 +1947137 +1907583 +2835270 +2550840 +1524125 +837652 +2100026 +121835 +1652064 +585069 +2054694 +504736 +585045 +2310638 +1453119 +1266593 +1897638 +837617 +2835324 +1290295 +1947143 +2738974 +676995 +2369807 +2237242 +1300042 +2369799 +2835345 +2864107 +2369795 +2550872 +2550838 +2445176 +1364572 +2765899 +2765745 +2766060 +648588 +2766007 +585084 +121955 +2835448 +504885 +677054 +662792 +2765561 +2765873 +2765839 +1379551 +718664 +677011 +121934 +648677 +504792 +2765690 +1379555 +2765676 +2765559 +2765946 +2766034 +648591 +2765779 +2766019 +1176906 +2835352 +504769 +2849251 +1970520 +2765567 +648616 +1386375 +1076449 +1970559 +2766110 +2835386 +2765883 +1970524 +2765596 +2003584 +1088669 +2849182 +2765951 +2766010 +2765994 +1266603 +72704 +504785 +677067 +2369863 +648614 +2765717 +1386372 +297477 +718657 +2765881 +677025 +72696 +2720270 +1076446 +2766121 +1847358 +648586 +2765545 +2765546 +2835403 +2766133 +2550897 +662797 +2765645 +2706341 +1386377 +662814 +2765828 +2849308 +2765982 +2835374 +662815 +1386382 +2766134 +121930 +2849402 +2835457 +1346910 +648630 +677010 +2849294 +504757 +2849271 +2013807 +648595 +1300060 +1970549 +504784 +2765628 +2765554 +2733979 +648623 +504759 +504871 +2835350 +2765947 +2369837 +2765720 +2835431 +504825 +2765753 +2849297 +2550890 +212291 +1524131 +648654 +2835376 +677003 +2765865 +2765952 +2835405 +504815 +2835407 +2765698 +1970553 +648672 +1410705 +504765 +504829 +1176917 +2765759 +2369847 +2765610 +648670 +648599 +2849333 +72702 +2013809 +2286195 +1369332 +648644 +2765794 +2835360 +2765983 +1176908 +648605 +2835455 +677002 +2849288 +2765734 +648631 +2765586 +648596 +504753 +2765941 +2010260 +1645752 +1986902 +2849385 +2706347 +284212 +2744246 +1847348 +2765901 +2765897 +2849335 +677080 +718663 +189667 +2765948 +1524129 +2706356 +677089 +2765848 +2849296 +504818 +2849392 +1986899 +1488509 +662800 +2849226 +2849300 +2849276 +504779 +504890 +2765612 +2765574 +2849241 +2733980 +2765707 +677053 +2765774 +2765607 +504842 +2849352 +504794 +2766004 +212303 +504758 +1847355 +2518886 +1847366 +2273685 +1176909 +2835351 +2765838 +2765724 +212302 +2106985 +121942 +1970518 +648647 +2733983 +2765736 +2237454 +2007361 +1410733 +988101 +2237425 +1603642 +1082080 +1453488 +1290321 +1453382 +1453214 +33663 +2622686 +2054816 +1453455 +933587 +2107079 +2706370 +362139 +1603586 +2054860 +837883 +122054 +33565 +585246 +837926 +1603531 +1680702 +2347759 +837842 +2107075 +585152 +33556 +585110 +837881 +1603722 +2410667 +1266675 +1701120 +1701129 +2237536 +1701115 +1984361 +1748923 +837718 +2237363 +837963 +2347754 +2107109 +1701118 +2678312 +2237333 +2100039 +1603635 +2310647 +2237735 +1036101 +2054724 +1453374 +122168 +988167 +988145 +585218 +837735 +2100040 +122192 +837768 +1082089 +906535 +1309641 +2550906 +33586 +838043 +1785791 +2628430 +837750 +585136 +353197 +2369882 +1266645 +1453238 +1603652 +2054833 +2237707 +2410663 +662843 +1603431 +837910 +837770 +504950 +2738990 +585203 +1453182 +1309629 +1603736 +2029438 +1603692 +1822244 +2010262 +837812 +2410668 +1309647 +1315733 +1341937 +2550916 +2107034 +1309604 +2237706 +1847390 +1897648 +585204 +2683658 +33562 +585161 +988207 +504960 +121990 +1939878 +1300083 +2347739 +837953 +1721994 +2072377 +2237476 +837897 +949036 +1453456 +2054702 +585130 +1309651 +1143967 +33545 +1290345 +33666 +259305 +1603617 +2100044 +2029467 +837771 +838062 +2054845 +504963 +2054807 +2237708 +837663 +1036106 +122065 +837918 +838063 +1266628 +1603437 +1453255 +838073 +2100032 +2347705 +1603724 +2237570 +1603681 +2029466 +122056 +837866 +1603542 +1315735 +33578 +33587 +259301 +2237660 +1453302 +585196 +837993 +1603494 +72725 +504975 +2237551 +988219 +2237608 +122064 +2054795 +2678311 +122051 +505010 +2237475 +1453248 +1603441 +772229 +837877 +122182 +1947185 +2237586 +988159 +2310664 +1346936 +504938 +2237412 +585112 +2550918 +2237676 +122197 +1603546 +1300084 +2107014 +1701128 +1453384 +2237732 +1453480 +837949 +2347728 +837693 +1524161 +1453170 +1453183 +2237449 +1453178 +585117 +1847393 +1701110 +72723 +2237455 +2628415 +259299 +1701132 +1603446 +585126 +33665 +2029445 +2107105 +1453494 +1603691 +1603672 +1603743 +2445195 +122009 +1266685 +1847394 +228627 +2072375 +1082090 +2054873 +1907598 +504970 +1453162 +2237696 +837755 +2107108 +837796 +585273 +2237509 +585168 +2107048 +1290388 +837711 +2508090 +1309617 +121966 +2054844 +765147 +2020490 +1309642 +2237506 +1603735 +1603623 +706120 +2683670 +2054819 +121975 +2237387 +228640 +2237736 +837822 +122103 +2237436 +122044 +2310654 +33584 +1453489 +2237620 +1453388 +2369890 +837956 +988149 +1300093 +2237658 +837990 +122150 +504909 +1453298 +837973 +837950 +838048 +2307526 +2237334 +838081 +122038 +837928 +837704 +662853 +933565 +1309639 +1290331 +1603706 +2237530 +1453326 +1947183 +33623 +1782744 +33620 +2237669 +837748 +754865 +2237353 +988084 +2508104 +1453442 +1266626 +1603754 +504904 +1453250 +988132 +838039 +988185 +838102 +1453345 +1524149 +1453316 +2100048 +2237384 +1453189 +2237649 +1407539 +988152 +2237728 +33659 +837906 +2310645 +1453229 +988155 +1453411 +1290374 +1970580 +201841 +2029468 +754861 +2369888 +2054818 +2749622 +1290398 +837827 +2054868 +33652 +2237542 +2237672 +662861 +1453196 +837931 +72727 +2550907 +2237619 +2508109 +837710 +1266643 +1603723 +988179 +2550902 +122149 +485369 +259294 +837688 +2237531 +1453275 +1603651 +988173 +585151 +2347743 +1453243 +837737 +1603500 +2237598 +837839 +1087233 +662851 +662868 +2054708 +1603545 +662867 +1266680 +2237717 +1603564 +933583 +1290382 +837753 +2007363 +1266655 +2727594 +1603491 +837741 +122111 +1453366 +122062 +122029 +2347713 +2237528 +2029465 +585106 +283 +837659 +988129 +1897653 +837992 +988178 +1453234 +2107029 +2688551 +33602 +2237667 +2003588 +1453270 +1290350 +837819 +837666 +2286202 +1453286 +837674 +1603755 +1453329 +2054726 +2054800 +1603668 +1603425 +837892 +2286204 +2237722 +2369885 +122177 +1947169 +837672 +1603765 +837929 +2107003 +1603666 +2347732 +2054822 +1453304 +2107091 +2237519 +765122 +585187 +2366965 +33668 +706131 +2054954 +1407551 +2550935 +2310673 +2237781 +33724 +2237804 +2237820 +122233 +2009448 +2100059 +2237823 +1315748 +1603788 +1407555 +2508122 +1512293 +2237821 +988256 +1603820 +122206 +1453515 +1512285 +122238 +2054918 +838258 +2347781 +933603 +2347802 +33705 +33698 +1410746 +2054888 +122231 +585280 +838184 +1603827 +2310681 +1603771 +1453605 +838245 +1453560 +2347798 +1057803 +2237855 +1453590 +2310677 +2347806 +988225 +838174 +2029474 +2849406 +988262 +838163 +1453522 +2100062 +838135 +2237837 +2237894 +838205 +2237874 +1512277 +2107149 +2237844 +838225 +988231 +2237835 +2237764 +585314 +2410680 +585345 +201846 +2054904 +2678323 +1453520 +838229 +2766141 +2766169 +585296 +906538 +2508110 +2508111 +1315746 +2366967 +1970593 +585311 +2107175 +2054898 +2237818 +122239 +2766167 +2237864 +2622688 +2237758 +585302 +988246 +838171 +772263 +1346939 +585297 +838216 +33695 +1701157 +838196 +1453524 +838217 +2237790 +988271 +1453534 +949047 +122216 +2100057 +838244 +1953923 +2285320 +33687 +1403591 +1121020 +1603773 +1266690 +2237839 +2029480 +933610 +2285322 +585310 +838142 +122242 +297 +2054955 +2237831 +2347818 +1603846 +1512278 +1453589 +1524165 +838267 +838218 +1341946 +1407543 +2550937 +2054912 +838250 +505044 +838277 +505047 +988228 +838172 +2622700 +2766154 +2072392 +585382 +1488519 +371163 +2355465 +2107193 +838391 +1025315 +1822249 +838385 +1701182 +1603887 +838350 +2410689 +2054965 +988316 +122269 +933620 +33734 +838322 +2054980 +772280 +2054997 +765170 +838308 +1603856 +1953928 +122288 +1603861 +988297 +2445238 +585377 +1603875 +765163 +1644299 +765169 +838407 +122274 +2072391 +1524194 +2055012 +2237998 +201849 +505083 +988281 +1315751 +33776 +122281 +2518915 +2054966 +1453655 +1453637 +505053 +988305 +2237973 +2237933 +309 +988324 +988312 +1685233 +2354080 +2237970 +2237927 +505080 +1603863 +1036117 +1036120 +2107237 +2237955 +2029497 +1453641 +505084 +2107249 +1410756 +305 +33780 +72738 +933613 +2107226 +2107196 +2237949 +2369910 +838416 +122249 +505077 +2107250 +2310684 +2628436 +2107208 +1266699 +2622717 +772282 +1603849 +2237905 +2766172 +2054986 +337172 +2237935 +1290430 +2550953 +505086 +1300103 +505065 +2107214 +122273 +1907603 +1722007 +838335 +1603864 +1453631 +2237959 +1266708 +33761 +505056 +2628458 +1603922 +988277 +838334 +2237997 +1453646 +201850 +1968412 +1603897 +988302 +2107187 +2237962 +772299 +2550948 +2107209 +2054972 +2286205 +772295 +933616 +2237901 +1524192 +505087 +2366975 +1025317 +1453676 +122318 +228654 +2238076 +2100085 +2067258 +1524214 +2508142 +2310713 +2238028 +1410785 +2238016 +1165409 +122311 +33799 +1266721 +2696518 +1644303 +933625 +2238077 +2238059 +662874 +2628468 +1603961 +585401 +1076457 +2550986 +228660 +1346947 +1076459 +838443 +1842751 +33822 +1453684 +2055022 +259322 +1603938 +838459 +1410775 +1036127 +505111 +122319 +2678330 +1487036 +1076454 +2347852 +1121030 +2029531 +585411 +2622725 +1036126 +838465 +122320 +2369918 +1487037 +1266722 +1364587 +1603927 +1953932 +1524197 +2055018 +33818 +2628463 +2238045 +1082117 +2238068 +1603947 +1076477 +337 +2369921 +2238024 +1346953 +1603978 +838473 +2720284 +1290441 +1524217 +33807 +505097 +2107308 +1082115 +2550967 +2347849 +2683672 +505112 +72753 +772314 +2347857 +212316 +1088676 +2355475 +1453683 +2347839 +2238020 +1847409 +1603943 +1897657 +2285326 +331 +1603950 +1410778 +2238081 +1603937 +2029524 +33817 +2310690 +1487038 +1266727 +2107292 +585408 +754877 +2107333 +2238042 +2369917 +838450 +2691165 +2238080 +1603997 +585427 +1036136 +33825 +228656 +228655 +1403594 +838429 +122422 +2733992 +1604033 +2355479 +585442 +1176928 +1708019 +1847425 +1604021 +485370 +1024449 +2415920 +33891 +259336 +2055083 +2347909 +2551005 +2310743 +1701198 +2347920 +2029548 +2551029 +1652074 +2107345 +2072401 +988396 +838581 +585470 +2107351 +585449 +2307535 +201854 +662875 +2029540 +2310729 +2107363 +1604044 +2029546 +838590 +2347900 +2347908 +1512316 +838602 +2107354 +1453714 +1604064 +1410806 +585444 +394416 +345 +898852 +1315758 +838611 +2238103 +1685252 +2238094 +2107387 +1036144 +201856 +706141 +2551033 +988353 +2055056 +1453799 +2238194 +743422 +1685250 +1487039 +2622736 +2628485 +2238236 +2238229 +2055050 +1932719 +259343 +2027923 +1685253 +259334 +1036148 +838577 +2107377 +1266747 +2551025 +33888 +33874 +1847422 +2238215 +1512312 +1822258 +1604087 +2238191 +988362 +1897664 +1604034 +1524225 +347 +2355478 +838515 +2551040 +2369937 +1266744 +1453795 +1076481 +305915 +33838 +284220 +2072403 +1453779 +838620 +2238146 +2055075 +341 +1290462 +585448 +1701195 +2238152 +585468 +505131 +988344 +838635 +585435 +1685249 +284221 +1076480 +2107362 +988366 +2238096 +1453720 +122352 +2238122 +1524227 +2310724 +1970600 +2238147 +2238187 +2688563 +838574 +1453723 +33895 +765185 +2696520 +2238144 +33887 +2551008 +122433 +2238107 +1453704 +2347905 +228666 +2100095 +33837 +838567 +1453788 +838592 +2720288 +2238233 +2238135 +122432 +2055052 +585451 +2238182 +1290460 +988339 +1410804 +1266752 +259328 +122397 +1266740 +838538 +1968416 +838720 +2285330 +1487041 +1810531 +1984371 +122542 +1782747 +1748945 +2238295 +2107434 +2445250 +988409 +2055132 +357087 +2347944 +122525 +585487 +838668 +838715 +2238357 +2551051 +1997106 +2238273 +585546 +2347966 +2238274 +1986920 +988430 +2107409 +706152 +1121034 +2445251 +906548 +988445 +122479 +122491 +2508161 +1300111 +706167 +2273694 +1453809 +33931 +2508182 +1512331 +2347946 +2029558 +2347939 +1453912 +2622749 +2238397 +706150 +988478 +122529 +585515 +2238409 +988484 +838841 +2238365 +677117 +585478 +1453816 +1410824 +988417 +2238252 +2551055 +988402 +2238278 +838673 +2055136 +838680 +838724 +2072405 +772355 +259345 +2055125 +2355487 +2238331 +2107400 +1407575 +1453868 +2100114 +1341961 +1604136 +772361 +2678349 +1524243 +988428 +1810541 +2055115 +2622751 +1070565 +1453890 +1315770 +2286216 +677120 +122454 +1953939 +1512324 +1604096 +1953941 +988473 +2107393 +122485 +838807 +2107436 +122519 +1407565 +1701211 +772344 +2355486 +988399 +122477 +122508 +585535 +988466 +838735 +1341960 +1512328 +2551057 +1453903 +1453804 +2055172 +838812 +2445255 +122459 +2238332 +122532 +2286213 +662878 +122543 +1604102 +585498 +838679 +2508159 +1847433 +408256 +1968421 +2622745 +1341969 +2238389 +485375 +122441 +1341970 +2347963 +838738 +2347958 +2310750 +122465 +1685256 +2445254 +331967 +1235174 +2238375 +371175 +1453905 +1341965 +1266753 +988440 +2238285 +189678 +122544 +949079 +1453909 +838666 +1407569 +585501 +706151 +2238351 +505163 +505151 +505145 +2688568 +2238405 +1785805 +2551048 +1604124 +2307543 +2347933 +2238367 +933656 +1604099 +2107432 +2020496 +933664 +1652077 +585514 +838663 +1524238 +838684 +2410715 +2347960 +305917 +387473 +2835531 +1953956 +933673 +33984 +988569 +34001 +2019736 +1453940 +1453999 +2508209 +2678378 +1153039 +838974 +1036185 +2055181 +2238432 +122553 +933684 +2238536 +585629 +1748949 +1341987 +1453946 +2835496 +1453985 +988639 +350548 +2766248 +1748952 +122618 +2348059 +122593 +838950 +2678353 +2238598 +122642 +1082130 +1748962 +1036162 +2678358 +350544 +33994 +988602 +838931 +1454004 +988647 +838999 +2055203 +838998 +33990 +33947 +988573 +1748954 +122628 +122706 +2238538 +1453973 +585660 +33970 +2009467 +1453979 +2238563 +1604268 +359 +2055208 +2348040 +1701219 +2348049 +2508215 +838993 +2835530 +988543 +585667 +988604 +988572 +1196702 +1604200 +1604249 +259371 +838868 +838949 +838863 +2835503 +1604295 +1604201 +2766200 +33988 +1453923 +838901 +1604234 +2238416 +2238583 +228675 +122637 +1364595 +1453918 +122590 +2100120 +1604286 +838877 +1290480 +988612 +33989 +2238585 +2348033 +988592 +1604184 +2055200 +1453932 +765221 +1953962 +1174014 +1810553 +988585 +2348028 +2835523 +1953960 +457301 +1454010 +2835535 +122600 +1701225 +2835486 +1454032 +33945 +398099 +988552 +1024454 +2766218 +2508185 +2835529 +33972 +1453987 +122605 +933676 +1453962 +1165412 +2678383 +988595 +228676 +585599 +2835490 +1341976 +988542 +706176 +1036161 +1290491 +2508183 +2238524 +706170 +1196695 +288342 +1082136 +988518 +122610 +2759276 +839014 +1196696 +2238485 +838986 +1036172 +1290492 +1174012 +1932736 +838962 +2347971 +1454023 +1260037 +1407578 +585586 +2835563 +839030 +1100336 +2347996 +122621 +933678 +1454018 +2238429 +839012 +585636 +1407600 +2238483 +122583 +988508 +1453998 +1604177 +1024452 +988634 +2678366 +2348058 +1953955 +2238549 +1604279 +2347984 +585656 +988522 +2348020 +1454002 +1260033 +838920 +1453939 +2835476 +2238587 +122674 +2410726 +585631 +585608 +122684 +2766238 +2766189 +2348012 +1453963 +585623 +1604256 +2835488 +2347992 +2238592 +988651 +1407589 +2766193 +34015 +988627 +259361 +2238553 +988570 +350536 +1174011 +122693 +2009464 +33943 +1968426 +2622765 +2766245 +1235186 +2348029 +2622757 +1604175 +2055210 +585633 +2766194 +33955 +988549 +1453969 +1100335 +2835555 +122634 +839109 +1165428 +2100143 +259376 +1309668 +122761 +1897698 +2678396 +2100151 +988755 +1604385 +2307546 +2508256 +839118 +2348139 +2508260 +1290514 +988732 +1645217 +2678409 +1260068 +585711 +259380 +122757 +500298 +1968430 +122735 +2766307 +350550 +839050 +988762 +988661 +2369958 +2678420 +1070574 +839092 +2348137 +585691 +1121051 +988729 +765233 +2508239 +1604372 +2678429 +585708 +662911 +1748967 +1810554 +1290497 +1260071 +706197 +1604336 +839094 +2348132 +457311 +1604429 +2238622 +706189 +1454067 +1810555 +1604361 +1645219 +1604433 +457305 +1932755 +1932748 +839117 +34049 +839072 +1087237 +2280139 +1100342 +259391 +988730 +2348123 +2622770 +1235206 +1121065 +1121061 +585690 +2508247 +839075 +1121063 +585756 +1121054 +2678392 +122745 +2348110 +839059 +1680720 +122713 +585697 +2508218 +1235196 +585715 +2055237 +706204 +839091 +228699 +2238640 +1235207 +122753 +1604420 +2100147 +2025498 +729423 +2369956 +2766262 +1403019 +2766268 +1604365 +662918 +1260075 +2678400 +2766282 +1701240 +585744 +839066 +2678389 +988705 +1604425 +1604405 +1604373 +1082142 +201883 +2348101 +988728 +1290513 +122726 +1842763 +2508228 +1088681 +2766319 +122793 +1454045 +2766303 +2310771 +839111 +2238609 +1604358 +765230 +729434 +1403020 +729435 +706205 +1121067 +1290506 +1897699 +1708021 +34026 +839080 +2348098 +2718829 +122708 +933707 +585720 +1932739 +1341988 +1701230 +839040 +1701236 +1604305 +1604432 +122802 +2348140 +839053 +1604382 +2508252 +2100129 +1701241 +228696 +2100145 +2678414 +2766270 +2310775 +1748975 +839095 +2678447 +2369957 +122783 +585723 +988726 +305930 +2508219 +122727 +201881 +2280143 +988688 +2348124 +2410731 +34048 +2508250 +2310767 +1235205 +1604318 +371193 +122756 +122714 +122734 +585732 +2410727 +988676 +2678448 +1524246 +122765 +1897695 +585686 +2369953 +305950 +1810604 +34159 +1260090 +1701313 +34084 +1165448 +1604505 +1403029 +496344 +1680723 +2238901 +585797 +2238851 +2823128 +122963 +1153049 +2727621 +2238873 +1260113 +585780 +2445274 +34126 +1403028 +2238884 +729446 +398100 +2238737 +259393 +1057832 +485394 +839194 +988816 +122869 +2238692 +1410830 +2678505 +662937 +2678489 +2508327 +34134 +228726 +839198 +2508342 +585794 +1701289 +2688573 +2238906 +839252 +1782756 +585833 +122829 +585796 +259416 +1604464 +1604492 +988827 +228731 +1932767 +2238780 +2628501 +839219 +34194 +1165447 +988806 +2410746 +34078 +933776 +201893 +1748988 +34157 +122817 +1157241 +122901 +34097 +933720 +839130 +1082189 +1157242 +2238752 +2238773 +988783 +1701251 +839142 +1604463 +34179 +1604455 +2055266 +988767 +1680773 +2238777 +259447 +1076484 +839144 +122944 +122868 +1454136 +2508303 +662922 +2508340 +1235227 +2307555 +2823137 +1701303 +1604541 +1153052 +357110 +662933 +1121073 +1604509 +839147 +1165438 +1685275 +1165458 +1708026 +988848 +988798 +2823165 +1070586 +201909 +1932758 +34087 +2508335 +1701311 +122911 +729457 +988841 +122935 +1196720 +933743 +122902 +2508273 +2238833 +2055263 +247144 +933735 +2238843 +2238859 +988860 +1810613 +2759293 +122995 +949084 +122900 +1057846 +34119 +1260097 +1082199 +933721 +2766331 +1082184 +1076482 +1235250 +2238799 +1897709 +2238895 +1140815 +1260117 +1057842 +328902 +1701265 +1235237 +212322 +2238898 +585763 +1810635 +1260087 +2823155 +1604461 +1897720 +122874 +1997108 +839151 +412476 +933739 +1997111 +2238878 +585843 +988787 +585817 +259426 +2749628 +1782754 +988786 +1082159 +933760 +122843 +2027928 +1604512 +1604494 +2727620 +34125 +259429 +2823149 +2508307 +2369971 +2238902 +122970 +729451 +2628503 +933748 +2238869 +933711 +1070582 +122976 +34066 +1051270 +34181 +485390 +1701298 +1604571 +1206868 +1810603 +1070583 +585827 +2238751 +122818 +1664611 +585844 +988864 +2766344 +1235244 +500303 +2508339 +1512387 +1749012 +1396503 +122960 +122896 +122913 +1454131 +839131 +2823161 +34067 +1604472 +839193 +1070589 +1604568 +34149 +2678510 +1685273 +2508263 +662938 +839221 +729453 +2678494 +933729 +706254 +1082162 +2238868 +1051273 +1364608 +988849 +2766339 +2628504 +1260088 +772372 +2766374 +34139 +1082154 +2508323 +1235234 +2238858 +2238729 +839247 +2238711 +2508321 +1174018 +1196729 +122824 +706242 +1932780 +1392629 +933763 +706262 +706236 +2678514 +585815 +2107456 +1604501 +34160 +1057833 +34193 +1604498 +259445 +1932786 +2239115 +1701315 +586149 +839556 +2277757 +988922 +1036228 +2410757 +123003 +839343 +123059 +585980 +1290535 +839373 +1604617 +1454241 +2766403 +34208 +2628514 +2239215 +988910 +586049 +2239199 +2239135 +2239118 +662952 +1036204 +1512397 +2410783 +586168 +662943 +1932808 +586021 +1749072 +1100360 +2410760 +1454151 +1454267 +1454326 +123019 +1722036 +1749068 +2369984 +1932856 +1604712 +2239048 +839401 +1403598 +839495 +2238982 +1604719 +1604614 +1604702 +2239023 +2678529 +839362 +2107476 +1454167 +585963 +1407617 +1454340 +1953986 +1749019 +1260138 +1749050 +2678523 +706264 +839411 +839300 +1652094 +2100172 +1932824 +2238926 +1036251 +2766400 +1604746 +1932852 +839420 +1036326 +2239197 +662956 +839264 +1024470 +123013 +2239071 +839306 +2239057 +1290523 +1604657 +387486 +2239220 +1932783 +839479 +2410827 +586082 +1454334 +1749042 +2678522 +2238935 +2055352 +839341 +2238930 +2678587 +2239120 +2238966 +2678569 +1036338 +2678617 +1036227 +1932854 +2720291 +1036318 +988906 +1604611 +2239181 +772383 +305958 +2410824 +1604708 +839295 +839280 +2238986 +988874 +839498 +839363 +1652116 +1604667 +34254 +1604729 +585921 +2678593 +1036280 +1454160 +586058 +1025324 +2239182 +2415921 +662944 +1454181 +2766431 +988871 +1604659 +2239203 +839492 +1722033 +1454310 +839413 +259464 +1932785 +2107467 +839263 +585898 +34253 +839325 +1454269 +1454305 +1235262 +2239161 +123061 +1604624 +586137 +1604663 +1407628 +988920 +2238915 +2410806 +1907625 +1341995 +123017 +839354 +988913 +1454161 +2238939 +1604664 +1652091 +585915 +586043 +988935 +1604685 +988914 +839536 +839390 +2055331 +2410805 +585971 +123066 +839371 +123037 +2055279 +2239099 +1454156 +2410771 +1454356 +2107471 +2410818 +1932840 +988875 +2239110 +123032 +2239092 +839457 +2766407 +1454371 +2239066 +1932815 +2239108 +1604743 +585985 +1036303 +1701317 +2239221 +2239117 +839455 +2410769 +839478 +1454221 +1454368 +1454216 +2415946 +34248 +2239091 +2678552 +839515 +2239072 +1036342 +988878 +2239194 +2348180 +259458 +123080 +2239178 +586044 +1036259 +1025322 +2310779 +2348191 +1953984 +2239141 +1454209 +1604641 +662961 +2678547 +1036343 +1410833 +1604629 +1749029 +1932829 +586108 +123011 +1604745 +586107 +2239139 +1036292 +839435 +839313 +765267 +288360 +2239145 +1454149 +585957 +839287 +839445 +247145 +2238914 +1036213 +2678586 +2239185 +586055 +2238957 +123004 +2239168 +2628511 +2239190 +2628530 +1932834 +2766408 +988941 +839356 +1454268 +586056 +1454196 +1604593 +1454351 +1524257 +2678611 +34224 +2410765 +586109 +123033 +1290553 +1036270 +839282 +988930 +839299 +1036218 +1290548 +1454207 +1749051 +1932796 +1454327 +2100174 +586125 +2277755 +839502 +2238937 +1036341 +123068 +259456 +1454201 +2273695 +1604881 +2688593 +1036364 +2239304 +2239423 +586207 +988952 +2009470 +2239360 +2239310 +988977 +1701331 +1454421 +1454515 +586238 +1722039 +1036375 +729481 +1604920 +2055378 +123144 +2348205 +1986936 +2348246 +2622782 +2410846 +1953997 +2239270 +2518941 +1512404 +2733996 +988969 +586342 +2759313 +1260144 +839686 +933796 +1454505 +34285 +586346 +1604875 +123251 +371213 +839736 +123139 +2348208 +2239408 +2107506 +1512403 +1512401 +1701353 +1604946 +1604831 +2307572 +123184 +2107509 +1524265 +2410855 +2055417 +123168 +2239362 +2107489 +839761 +1604820 +505202 +2239481 +1604874 +949095 +1701327 +1604869 +988957 +1407645 +839721 +1955820 +2688577 +839603 +949092 +1290593 +586219 +2348213 +2739004 +1970607 +1604859 +2107542 +1290562 +1604997 +1309687 +2055370 +1454402 +2759306 +2688578 +1454501 +988970 +1407637 +2239255 +1341996 +2239370 +1061044 +367 +949091 +2445305 +839625 +2551106 +1604981 +2622777 +2369998 +1749090 +123158 +1454506 +1604992 +1454417 +2107528 +839899 +1994218 +387491 +123162 +34291 +123115 +2739002 +1604836 +2691171 +1954001 +839665 +2508386 +1346959 +505238 +2239373 +2369996 +123208 +1454458 +586311 +1100361 +839786 +839830 +2239480 +1604977 +1665987 +1165471 +1604935 +586307 +1604806 +2628552 +2286225 +1604835 +357117 +2738019 +123098 +2107563 +988948 +2348207 +123111 +382949 +839600 +1454439 +1300118 +839819 +2678621 +839846 +2348226 +1604814 +988962 +2370003 +2720296 +586352 +839744 +2107559 +1701343 +1524267 +1604951 +586249 +586328 +839927 +123157 +839588 +2055416 +123191 +1605004 +2239377 +2348242 +1454427 +1454397 +2518944 +839876 +839649 +34286 +2508392 +839678 +2239335 +505225 +2239271 +34304 +988986 +839671 +2100180 +123224 +1454415 +1605016 +2107480 +1604838 +2678628 +2239476 +586327 +2055403 +2445301 +2678637 +839755 +1165467 +2055392 +2239365 +1407644 +839642 +765289 +2551097 +34310 +1454441 +2727630 +1604937 +1604857 +1701346 +988985 +839622 +586306 +2107478 +2508383 +2239409 +1970606 +2727633 +123130 +2688588 +34295 +2055388 +2107521 +662985 +586353 +586336 +1454380 +1403600 +2239416 +2706379 +839900 +350589 +34308 +1604868 +2239461 +586282 +1605001 +909412 +586356 +2027933 +228767 +1897733 +2239331 +2107496 +1454445 +1070593 +1604864 +123248 +2239285 +2508372 +586232 +2688586 +1986928 +2239325 +1604794 +2072414 +1309693 +123313 +2239671 +123392 +2239543 +123339 +1036380 +840064 +2100219 +586431 +839999 +840036 +2239630 +840094 +2348327 +989064 +586390 +34319 +2100202 +989007 +1605074 +1605082 +1082220 +2410858 +586369 +840067 +2239629 +2029589 +34393 +123369 +1605138 +1512435 +123259 +2348259 +839972 +2100186 +989008 +123419 +228779 +2348262 +840059 +2239596 +2239557 +586396 +1605020 +2622813 +1605073 +839944 +1290642 +2622809 +201930 +2239603 +1605059 +2239525 +2239609 +34410 +2622791 +2239653 +677134 +1121099 +2055492 +2055480 +933813 +2678651 +2055476 +586398 +2239505 +2348294 +2348285 +662995 +2348333 +840096 +2622798 +2277772 +1605065 +839979 +1454570 +1749098 +839967 +2055450 +1749097 +2239617 +989013 +586413 +840171 +1605112 +2622792 +123385 +2239611 +1454529 +2688621 +2410859 +2100190 +840097 +1290639 +2508393 +1810652 +1605195 +2239592 +989009 +1605155 +2622819 +123359 +1290607 +2239561 +840007 +1605194 +1454590 +123378 +123347 +2508429 +2277771 +2348295 +2239640 +2100193 +840161 +1512421 +1512434 +34386 +1605041 +586385 +586449 +123346 +123386 +2239647 +34385 +1454558 +2239499 +1605096 +34317 +586370 +1605179 +586363 +2622787 +2239532 +840104 +2239605 +586444 +1290634 +34356 +1512419 +586443 +1407654 +2239516 +1605054 +2055459 +840142 +1605197 +1810651 +840031 +1605191 +840160 +2055441 +2055484 +2688619 +123418 +2622817 +72815 +2239620 +1315786 +1605189 +840132 +2239535 +2239501 +989062 +2508423 +1605203 +123291 +2239634 +2055436 +989063 +1070595 +123410 +1454561 +840065 +2622823 +2766445 +2508428 +662994 +1749103 +2239613 +2239660 +586389 +840060 +1082213 +2239547 +989045 +1454603 +2239676 +2622799 +123377 +123303 +586383 +123325 +2348269 +2239651 +123411 +586376 +1701359 +1605058 +1454618 +1605043 +1454582 +398101 +586416 +2348256 +1701368 +1454587 +2055456 +1290625 +586379 +2307575 +706277 +2239635 +586426 +2239575 +2055475 +839954 +839958 +840153 +2348320 +2348418 +123567 +123512 +123637 +123651 +840270 +989210 +2516272 +586510 +2835603 +989158 +586516 +2835607 +2766471 +2100312 +123467 +123453 +586564 +989202 +586641 +457347 +1407662 +2835609 +123590 +586693 +1749132 +586625 +2516264 +840221 +2100274 +2239861 +2766499 +840346 +1749145 +123508 +1266783 +933823 +765320 +840490 +586547 +2835605 +2348440 +840327 +1605412 +2027956 +1174027 +989154 +706323 +1605234 +1749147 +2766492 +123626 +1605490 +989181 +586559 +2055504 +34422 +337185 +2100221 +72818 +840237 +1454668 +586587 +123504 +1605437 +2107600 +586694 +123705 +1605446 +586567 +2307580 +586668 +1454719 +2239841 +989241 +1605269 +2100276 +2622873 +34423 +1524306 +586720 +840178 +2055531 +1605265 +586518 +123685 +1680785 +457325 +586540 +123424 +1749137 +586476 +1488543 +123471 +123712 +1605315 +123725 +1605297 +1524303 +2622863 +1605223 +1605493 +1165476 +840352 +2622835 +2239735 +2835577 +706331 +34522 +840248 +2678659 +706341 +989167 +840491 +989104 +1454665 +2427284 +989115 +376 +840195 +586583 +840276 +2239776 +1810657 +2835601 +1512455 +1605458 +1512449 +2239792 +1407659 +586515 +228791 +1024474 +34454 +2766490 +2055540 +1749152 +706321 +1749149 +123736 +1605419 +123593 +586598 +1100376 +772417 +34574 +1749123 +382956 +123553 +989235 +989191 +2239701 +2348390 +2678655 +1454678 +201943 +505251 +1605368 +34465 +1174026 +2759319 +1605370 +2107599 +123742 +1605414 +34497 +2239827 +2100285 +2367003 +2100309 +34541 +840439 +840526 +34493 +1454675 +1454761 +1454656 +123518 +663014 +2355491 +706307 +2766485 +123479 +1057859 +123511 +989240 +1605407 +2348399 +34512 +1454706 +1454772 +840451 +1260147 +1100370 +1036390 +586584 +2508441 +706286 +2100251 +1605274 +729486 +765302 +586648 +586697 +1061045 +123533 +989189 +840438 +2766460 +989120 +1605264 +586665 +228783 +1454775 +2239773 +2348420 +123664 +1605220 +123684 +1454729 +2348425 +2100223 +2239819 +371220 +1196735 +2547603 +2055549 +1454759 +387496 +2100275 +989208 +123449 +586572 +1266784 +840284 +2055512 +2055558 +2683688 +586508 +259496 +989232 +840193 +840297 +662997 +1605317 +989111 +840182 +457328 +586537 +989220 +586504 +1605285 +1605213 +2835581 +989113 +989147 +123576 +840473 +2766472 +840390 +1605435 +123435 +2348374 +123640 +34569 +2348413 +1810654 +840459 +2055500 +586724 +2367018 +2239886 +457329 +284228 +586571 +34558 +123728 +706316 +989211 +729491 +1994223 +840513 +1454646 +840403 +586533 +989094 +2239813 +2239788 +259487 +123579 +840495 +2835597 +1605455 +840383 +1454643 +586469 +989092 +2547605 +1605292 +34535 +840360 +2348432 +840271 +1605420 +840253 +586491 +989174 +1605289 +586548 +2239698 +1605324 +2348348 +840256 +1454744 +586661 +949101 +765335 +989176 +212325 +1605239 +1524308 +840318 +989124 +2410875 +772415 +2516277 +586696 +1749136 +736103 +1454780 +34424 +2239767 +729488 +2508438 +840378 +2688628 +2348356 +1070598 +2239757 +840194 +840181 +1315787 +259475 +706298 +1454688 +989251 +2348426 +1605433 +2348346 +1100380 +34551 +1024476 +1454758 +989068 +840468 +2055515 +1407656 +1454677 +840564 +933844 +586776 +2622891 +586770 +840716 +1036447 +933858 +1680794 +1036437 +586851 +1036450 +2823244 +586942 +201951 +706356 +2823277 +2823437 +1749254 +1717338 +706370 +383 +34718 +124002 +2240082 +123854 +989324 +34749 +2239944 +124049 +189685 +840549 +2622903 +124090 +2239992 +586842 +306012 +34771 +1680795 +840558 +1196752 +2823301 +2239973 +2240028 +288404 +123943 +201954 +1407684 +34656 +1454804 +123885 +1932927 +306013 +840722 +371258 +1749200 +2622926 +2240149 +34665 +2823453 +2823418 +1140818 +378 +586904 +1749236 +228842 +2240085 +1057870 +1652127 +34756 +2239927 +663028 +485423 +586828 +457405 +34607 +1605554 +1749197 +840611 +2823218 +840614 +586765 +840644 +2823402 +1605559 +1722052 +2678684 +1100397 +124030 +1100418 +1645769 +586861 +2240147 +2823225 +123782 +989328 +1512527 +1036431 +1235296 +2622904 +586748 +586826 +34603 +706381 +586888 +933854 +2688649 +1842782 +1036411 +123879 +357119 +2240121 +840538 +2240065 +432275 +1036465 +2823467 +371274 +2823398 +305982 +34664 +1842792 +2240029 +2107612 +840775 +1717345 +457399 +586908 +2547615 +457358 +2823481 +586919 +123891 +123866 +2240043 +1512471 +586892 +2622916 +306008 +2027994 +2823397 +34669 +123898 +34712 +123816 +989285 +586983 +1722050 +586751 +840800 +2055648 +2823476 +123960 +2823431 +2622911 +1036414 +485428 +124102 +123869 +1512504 +123767 +1749231 +457376 +2823293 +124080 +1036499 +1342018 +706371 +989322 +2823298 +989334 +228816 +840581 +123775 +663044 +1036479 +989309 +1749187 +2823434 +2508456 +432267 +2823395 +1121152 +989298 +2823296 +2547628 +586982 +2239947 +1722061 +2823231 +2055617 +34632 +2823200 +1749252 +1036421 +123849 +586875 +729514 +840672 +989313 +840557 +706385 +2027966 +2688645 +2823204 +34605 +586988 +1235293 +2823208 +2547623 +1196770 +1290669 +1605496 +840764 +2622915 +2823377 +1036464 +2240041 +1652154 +505274 +840753 +1932906 +1652129 +1652173 +2240104 +1605499 +2240179 +586947 +989270 +840721 +2239997 +1196771 +1100422 +586979 +989339 +586868 +1749226 +2240070 +706346 +124089 +2107611 +706378 +2239905 +228803 +1100406 +2823483 +123905 +34666 +2239903 +2240202 +840648 +34649 +371237 +1100430 +586974 +34615 +1100399 +124055 +123971 +663042 +34732 +2823433 +1897746 +1897743 +2240021 +2823460 +586754 +123843 +123957 +228824 +1235297 +1088694 +2704974 +123932 +989326 +2348441 +586934 +259536 +259548 +729510 +1749170 +840570 +1665989 +586903 +371261 +1701383 +663045 +2823220 +34739 +34662 +1842778 +1036517 +34747 +1174038 +2823491 +586749 +2823239 +586796 +432270 +1717323 +736113 +362148 +124077 +840629 +288393 +1196767 +123773 +2688650 +586881 +2240046 +371275 +2823362 +228829 +2240142 +2027988 +457359 +586803 +1196760 +34781 +2622925 +586780 +2055612 +1897751 +34728 +1717360 +1100410 +840619 +1605545 +398103 +2239897 +124011 +1932916 +2055647 +840591 +989363 +586746 +2823217 +123836 +305987 +2823348 +1407682 +1810668 +2704984 +2823349 +840646 +2823307 +2823228 +2622901 +1070603 +2823316 +1196765 +840730 +1036484 +2029598 +2027983 +989307 +2622909 +2688641 +259534 +1121122 +840723 +2622917 +1652162 +663025 +586758 +1121134 +1717348 +1100392 +1512498 +485438 +1932911 +2239946 +2678675 +1605541 +2055681 +123899 +228804 +989280 +1036512 +457409 +1749242 +457379 +1701387 +2849445 +2370007 +840829 +2766514 +2849423 +259557 +2823532 +2766691 +2766582 +1036536 +1701402 +2766558 +201964 +1454831 +2622933 +706400 +1701408 +840850 +34806 +1235299 +989378 +587020 +2348460 +189686 +1070605 +34834 +1196791 +228857 +2240237 +2622932 +2622931 +989372 +2766668 +1121157 +587004 +1082232 +34828 +353207 +2240239 +1605604 +840845 +1605575 +587005 +2622935 +2766657 +1810675 +1235298 +1701396 +1129847 +1605595 +1717372 +124154 +2348459 +2766566 +432280 +989409 +2766682 +2849422 +2823515 +1701401 +765361 +1134075 +729533 +933879 +989405 +2622930 +2849419 +2766570 +1810683 +2100315 +2766584 +2240238 +765363 +906589 +2823528 +587023 +1407690 +34822 +387504 +2055694 +909414 +840827 +124157 +34833 +2766667 +2348455 +1897759 +2823534 +34812 +989375 +1196782 +2823523 +1605581 +1121160 +124150 +1897767 +989371 +1070611 +1196779 +2766543 +2766600 +2766597 +2370008 +2678705 +2766660 +587010 +765362 +2766523 +1140821 +840847 +259564 +2766557 +1605605 +933881 +1685288 +2766636 +840821 +2240234 +933868 +259887 +124446 +34870 +124408 +124418 +2240313 +500386 +259920 +350663 +2766696 +34926 +989420 +259635 +259689 +124208 +259736 +2240288 +124301 +729550 +2766757 +124253 +259931 +587124 +663071 +2823541 +2766755 +350638 +124338 +2766760 +124280 +587128 +2766745 +2240339 +259721 +350676 +124261 +2766751 +500399 +587081 +500338 +259737 +500315 +500394 +124364 +124477 +663122 +587147 +124472 +259608 +587123 +259644 +306071 +259732 +500395 +124481 +124331 +2348480 +124304 +124200 +259636 +124529 +124263 +124305 +259809 +124515 +387525 +124440 +259901 +1260166 +259795 +587037 +34878 +500343 +34859 +288431 +124499 +350606 +259583 +587096 +228864 +2766707 +663057 +259930 +259690 +2766758 +500361 +306074 +2240324 +124457 +34922 +587173 +2766725 +663135 +2410884 +2766739 +350639 +500381 +259620 +587071 +124330 +587112 +259864 +1131555 +2766718 +663101 +259899 +587121 +2849466 +500348 +124484 +124243 +259638 +587125 +500367 +350647 +259872 +124498 +500323 +124473 +587045 +124450 +1165481 +34894 +2849452 +259622 +1605619 +2240277 +124540 +124169 +259686 +124474 +350681 +124344 +124293 +387534 +2849455 +259723 +587116 +124495 +124434 +259645 +587135 +729549 +2766754 +124164 +259714 +34908 +500414 +587064 +587154 +259606 +2864134 +350684 +124491 +2240302 +1701424 +587165 +259601 +259637 +259729 +259816 +306064 +663112 +259813 +228862 +124454 +1701425 +124511 +350682 +259623 +34848 +306056 +259617 +259684 +259611 +2766775 +1082237 +259603 +34904 +259794 +124461 +259926 +1260169 +989436 +1131558 +259731 +259599 +1131553 +2240291 +587076 +2240298 +663085 +124375 +1605638 +1131566 +587177 +2678707 +500349 +350688 +350643 +587050 +1605629 +306075 +259733 +587067 +2767047 +2849569 +124787 +260011 +124654 +2767101 +1131632 +2240570 +840895 +1605687 +1605746 +260009 +500485 +989693 +1082243 +840965 +2240405 +124703 +259974 +1454836 +2766780 +1260177 +840975 +989569 +2678731 +2410888 +587493 +1933008 +2055740 +1605705 +1131758 +2678815 +124650 +2767005 +35080 +587458 +2055781 +840912 +1260250 +1290685 +989741 +663201 +2240414 +2240674 +1933029 +1605750 +2864139 +2240489 +1701461 +2864144 +706424 +500479 +1131769 +587532 +1260213 +2767292 +989620 +124810 +765376 +2348551 +729556 +35030 +840883 +2767271 +2849482 +1082268 +587232 +663331 +840930 +124562 +587394 +2767276 +2727679 +2767210 +841039 +587510 +1605770 +1131654 +587243 +663214 +2767139 +1454877 +124752 +1131681 +841034 +124816 +2766855 +989643 +1131642 +840916 +124661 +500477 +124571 +124780 +2055730 +1131782 +124845 +841042 +2055783 +2348563 +124747 +1309714 +124645 +663164 +2766820 +1454838 +1605754 +840954 +2240536 +2835653 +587265 +124601 +2767357 +2823558 +2240429 +124600 +2348498 +2849474 +2694926 +2767040 +2240658 +2767086 +663264 +124655 +2240716 +989634 +2767028 +1932975 +2240541 +1260184 +124700 +2678737 +2766990 +1454859 +663185 +587600 +2823593 +1082267 +2678797 +587381 +2767270 +2348542 +2823554 +34964 +2240535 +2823561 +2767197 +989712 +2766998 +350711 +1605834 +2508480 +989629 +124838 +260000 +1309730 +989473 +663327 +1605772 +124739 +1605845 +2835638 +2767042 +587332 +663212 +2849584 +2766896 +2240417 +2767328 +1131583 +2727649 +841010 +124881 +663153 +840972 +989747 +1605823 +2767329 +1131698 +350724 +2767001 +989474 +841018 +1605776 +2849538 +2240772 +2508481 +2766871 +2767045 +840924 +840910 +124696 +2766853 +1131592 +2767310 +1260249 +1701455 +1374922 +2055745 +1131791 +2348548 +260014 +2348554 +1933012 +2767118 +2766972 +2240662 +2767232 +2849600 +1131784 +587531 +228868 +124651 +2849573 +989611 +587578 +989623 +989776 +2055736 +663182 +2055763 +1605841 +259985 +663207 +124783 +2767363 +1932971 +2055807 +1260201 +124758 +260010 +124890 +1933009 +124628 +587245 +2766875 +2849480 +124614 +1933042 +989471 +1454878 +663293 +989602 +587506 +2767228 +2849577 +306089 +1082256 +587423 +1605827 +2849490 +989636 +1260220 +1342021 +2678823 +124648 +2766805 +840890 +2835642 +1131683 +259995 +1605696 +989759 +2240500 +2766926 +1454916 +124744 +2766794 +288448 +124574 +1260236 +2835641 +124913 +2849504 +587271 +2348575 +663169 +2766866 +2766916 +587459 +124621 +124687 +989552 +2766851 +2678832 +2727648 +2240534 +1605824 +2240735 +2766889 +500481 +841040 +2240444 +2767289 +2767135 +587333 +2240588 +729554 +1454837 +587451 +2240428 +1260239 +1260226 +2767039 +2240399 +663157 +2348521 +35005 +587207 +587406 +124725 +2025511 +35078 +1932993 +2767326 +2240614 +2240496 +2766984 +587588 +1260256 +587402 +1605850 +1701432 +587273 +288444 +288443 +2767261 +587338 +587430 +1454890 +2835637 +35103 +840940 +1605773 +124715 +2055708 +2240702 +124595 +260026 +2767059 +306096 +35003 +2055750 +989734 +2766876 +587282 +1605847 +2727647 +2766952 +989754 +2240617 +2849468 +1309723 +587528 +663243 +989612 +2240509 +1605728 +587340 +989546 +989523 +1036541 +2348534 +587438 +2348564 +1605649 +841029 +35083 +2823590 +2767230 +1454892 +706420 +2240698 +2348514 +124701 +259969 +2849561 +124887 +2727662 +2767124 +1131704 +2823582 +1605669 +1131724 +2240553 +124847 +124633 +2240575 +2240587 +124846 +989539 +840942 +663249 +663286 +35034 +2694915 +663206 +663296 +1605862 +765379 +2240721 +124693 +2240491 +1605763 +2240453 +2694928 +1131693 +663307 +2727646 +124834 +2694927 +587564 +2767227 +1605651 +1605735 +587524 +2767253 +989705 +989703 +1605807 +1605844 +2678771 +1701464 +2240533 +2240692 +2055712 +989700 +663197 +2767000 +989587 +1933024 +2240779 +2240410 +840906 +2240654 +587671 +500721 +663541 +2767441 +125068 +35231 +2348578 +260373 +35213 +2240853 +35294 +663534 +500694 +500557 +1749276 +260636 +2240821 +989795 +989889 +350819 +2240941 +1131804 +125019 +989853 +350743 +125147 +125572 +35283 +500667 +306235 +2240839 +260353 +125021 +260513 +125161 +306142 +260248 +2864150 +260693 +306133 +2864151 +125425 +350811 +260299 +35245 +989800 +663335 +500709 +350837 +306233 +260422 +125416 +260300 +2767417 +587705 +587832 +663585 +260614 +124954 +125139 +500610 +350808 +587664 +306137 +260396 +35255 +2240918 +260333 +663524 +350885 +125511 +125472 +350740 +2240796 +1605950 +306146 +387557 +125436 +35212 +587728 +125574 +2864149 +260255 +706427 +500615 +2767455 +260632 +350889 +2727695 +371299 +1933059 +350838 +125054 +2767395 +125342 +1131816 +35272 +663544 +125540 +663508 +35225 +125485 +125468 +841083 +2348597 +125441 +260470 +260611 +587654 +125103 +500747 +2240921 +1605885 +125255 +260298 +125389 +2678855 +125543 +587949 +125311 +260354 +35155 +306185 +500628 +1605963 +35298 +260077 +350789 +2727691 +989848 +125636 +1131870 +125475 +125440 +288460 +587971 +125635 +260541 +387558 +587852 +260561 +587994 +1933085 +500636 +663587 +350760 +2767374 +2835671 +1605893 +260594 +2240920 +587886 +1131856 +500530 +500711 +2240895 +2767439 +587833 +125420 +125335 +306228 +350739 +306199 +125303 +587791 +1933079 +260216 +2348592 +350773 +125322 +387605 +587842 +35235 +125148 +125466 +35288 +125116 +35201 +729575 +125293 +350841 +35295 +260321 +754817 +35203 +260633 +260350 +587620 +2849628 +260317 +260669 +260533 +125618 +587603 +260218 +1701507 +125346 +350755 +989860 +350791 +1605961 +306191 +125349 +2767456 +663373 +989828 +260201 +125145 +35242 +35273 +1605891 +587739 +306223 +500560 +587602 +125075 +587757 +587688 +306157 +387575 +663591 +2240863 +125146 +2348591 +2240911 +35303 +306126 +350878 +1933078 +125484 +260100 +350745 +260133 +125592 +2767419 +260526 +125123 +288465 +989801 +125203 +260613 +125580 +587731 +2240792 +350767 +2240886 +125314 +125133 +587991 +125502 +587694 +350907 +663347 +125066 +260136 +989850 +306213 +587875 +260440 +260368 +350798 +587630 +350786 +387600 +260500 +260143 +729567 +587985 +260340 +500735 +2767422 +260487 +260581 +350833 +125237 +500736 +260306 +2240837 +260552 +35268 +663409 +2240840 +35120 +260355 +260597 +260324 +1933062 +663418 +387549 +1605974 +125405 +260680 +260307 +500733 +125523 +485445 +587913 +587779 +260114 +2767432 +2240815 +260171 +1260302 +260662 +1605932 +387574 +2849642 +260457 +260277 +124953 +500546 +989855 +2410891 +663565 +260104 +260477 +35190 +387556 +260146 +125620 +125535 +500572 +306218 +35239 +500701 +350867 +260413 +260493 +350753 +587862 +500525 +125062 +587923 +124994 +500688 +124990 +288458 +500497 +587835 +260144 +841068 +35130 +587645 +1605955 +500739 +260458 +260438 +350858 +260135 +587954 +663436 +288475 +260685 +663558 +260603 +1131872 +500609 +260063 +260639 +500640 +587696 +306152 +35116 +989796 +1131862 +125095 +500579 +1605989 +989838 +125163 +663547 +35166 +387602 +125164 +2767400 +2767459 +260528 +125320 +2240811 +260658 +1701530 +124931 +387614 +2348587 +1260281 +587968 +500664 +587953 +124963 +35211 +2864147 +2240991 +1524319 +588063 +35323 +2241099 +35367 +500749 +72836 +2241096 +588085 +1701564 +588092 +35373 +588013 +2348605 +841103 +2849650 +2241028 +1129855 +772428 +125789 +350940 +1454931 +2348621 +2241112 +125785 +588058 +1082292 +1606043 +1260327 +1606035 +125664 +35370 +260720 +125721 +1605999 +989934 +1454989 +2241026 +1810694 +1933100 +72839 +2055836 +989932 +1309745 +125666 +2348619 +1606010 +1454944 +2241007 +2241125 +1129851 +125650 +125652 +588024 +288481 +125790 +2835689 +125656 +35312 +1810696 +2241009 +1701554 +588068 +1235306 +1454941 +588074 +125702 +228884 +35346 +841108 +1606071 +306242 +588091 +2107631 +1454959 +841128 +35371 +125662 +125749 +2055876 +663612 +2055857 +2026123 +989931 +35400 +2240963 +125796 +2241129 +2240967 +1606044 +841110 +500755 +1454946 +2240996 +1954034 +2241013 +2240977 +2055888 +1701537 +35381 +1606034 +125756 +2241058 +1131879 +1082295 +125699 +72838 +1454954 +125724 +2688662 +2240992 +1701541 +1933098 +35392 +125710 +588043 +125753 +729583 +125683 +1309748 +35380 +588032 +2241144 +729581 +1454983 +1082290 +989951 +2767489 +1708041 +989923 +2241119 +1933108 +2107661 +2864163 +125848 +841166 +588115 +2107653 +2241234 +1455024 +989956 +1455073 +841194 +2348632 +1652185 +1290712 +1309751 +35444 +1309762 +2370014 +2367025 +2100321 +2864165 +2551137 +1606105 +2823639 +1455036 +1455050 +2285357 +2055916 +35415 +2551171 +841191 +2241194 +906591 +2285356 +35442 +2055893 +1407699 +588111 +841151 +2241226 +1606109 +841175 +2107654 +505287 +1290704 +1455064 +841199 +1455022 +2241238 +2823625 +2241199 +2241209 +2241197 +2055899 +1524327 +1708042 +2107659 +841207 +2518953 +2100331 +125835 +2823642 +772442 +1821190 +2241262 +1410875 +2310854 +772437 +2718849 +841189 +1455012 +588134 +2241259 +125824 +1455001 +2367027 +2551143 +2310878 +706457 +2107665 +2285358 +2107651 +2310848 +2310823 +2551160 +1455075 +1455016 +1708045 +1455025 +2508510 +371323 +371309 +2678937 +1290714 +933907 +2055959 +2055954 +841297 +125885 +2029635 +432317 +909436 +2241288 +1606145 +2055955 +125944 +706469 +35527 +2055972 +35482 +125863 +2628607 +432283 +909433 +72871 +2100348 +201982 +2628599 +125872 +2029656 +1606200 +1606156 +2241319 +2241276 +990039 +841299 +2107790 +1455084 +387645 +328905 +2628574 +1455120 +1524391 +989985 +1407707 +288490 +990032 +2678901 +387656 +2551209 +663620 +2445351 +1512553 +35463 +772482 +2107774 +1954040 +841278 +1524371 +2370057 +2286236 +201992 +125948 +1107588 +35480 +432339 +2055952 +663621 +72919 +201983 +485488 +35491 +432320 +125888 +933903 +841224 +2628597 +353212 +2241272 +2628608 +125978 +1685305 +949136 +772470 +989990 +432314 +2107727 +2100342 +2029617 +1524393 +1107585 +485480 +2508498 +2241286 +35516 +2241290 +933910 +306282 +841258 +772504 +1524370 +72858 +2410895 +772477 +772496 +772484 +288503 +841223 +1025339 +1717374 +125932 +772514 +1606127 +1410917 +1025342 +1524341 +2348633 +2678895 +505298 +2241353 +2100345 +35484 +72861 +457451 +125995 +125980 +260767 +2107772 +1403623 +485462 +72888 +2055981 +1701570 +1986952 +2628590 +1385199 +1235315 +841228 +35446 +1455111 +371354 +2628591 +2628602 +1088705 +2107724 +425707 +1088697 +2628577 +35496 +1455089 +772508 +2107689 +72881 +72901 +1235322 +306255 +2628572 +2241313 +2055978 +706475 +2107796 +125943 +1070614 +841241 +706474 +306276 +2622940 +1088707 +2678920 +1524358 +1455105 +387636 +35532 +1722078 +505309 +485461 +1606142 +2241270 +35469 +371365 +1407711 +35556 +1606173 +1455109 +2107723 +989996 +201994 +2100335 +1121173 +1266797 +35470 +2370055 +1455103 +387657 +72895 +485487 +125926 +2445343 +125901 +1685306 +288501 +1606135 +2678930 +201988 +125929 +2280149 +841266 +841287 +72907 +990038 +2055964 +729587 +35511 +2107713 +841245 +1025331 +72878 +35471 +1410895 +288508 +72914 +362170 +949122 +1235313 +2107730 +1512560 +337192 +2241323 +125851 +505302 +228925 +387635 +2678919 +841237 +2678896 +228930 +2508519 +2678940 +1722081 +1606185 +588171 +2029641 +1524392 +2107742 +1524382 +2241301 +2055923 +1107582 +260747 +440315 +2055935 +2241349 +306254 +35459 +432332 +1606143 +72902 +2100339 +2348636 +125954 +841243 +2107698 +588163 +2055984 +2508502 +1512551 +1606188 +362176 +382965 +72918 +432347 +228929 +2678944 +432315 +457461 +2241328 +2055969 +2107845 +2622972 +663635 +350960 +2107930 +1970613 +2241377 +1260363 +1986982 +35579 +2310936 +2518971 +2241429 +1455233 +588189 +1129874 +399 +2107879 +663630 +765413 +1606225 +2107915 +588242 +2107838 +1708058 +505340 +2107964 +588258 +588247 +260775 +126036 +841356 +1455161 +1664633 +1129878 +2508526 +260780 +2107894 +588203 +2241395 +1076488 +2107939 +1455148 +2107844 +1082313 +2107859 +2107876 +949170 +1606230 +2749087 +2028019 +1410966 +35596 +706481 +990057 +1455235 +1455204 +2100376 +2056010 +1082309 +1606209 +35589 +72935 +2107852 +588204 +1524418 +2348651 +588262 +2107935 +126040 +1410975 +1970615 +505331 +588251 +1455242 +2310937 +1260359 +126050 +1524419 +126052 +1455176 +1954048 +2678971 +2310932 +2107827 +1260350 +350966 +663634 +949149 +2518966 +1455218 +2678964 +841348 +1455138 +1455167 +588224 +126005 +1410986 +1266813 +1410981 +949157 +2767515 +909447 +288519 +1455157 +2107830 +2241418 +2348666 +2241394 +2107923 +35560 +1410971 +1455162 +990063 +350962 +765398 +2100366 +505324 +1129877 +2241389 +2055987 +2107857 +2107947 +1749301 +765405 +1260338 +588199 +2026129 +2518964 +2107863 +772548 +35557 +2107921 +1024484 +126032 +1455251 +2107814 +765396 +1954056 +1260339 +2622959 +35585 +2704990 +2107912 +1455253 +2241414 +2348664 +1968444 +841382 +1954045 +2241411 +1722102 +1407718 +1410988 +588218 +1455139 +1260337 +2678979 +1524407 +1455205 +1986974 +350964 +2056012 +1524399 +949160 +2107807 +841384 +2107913 +2029696 +126016 +1260336 +189697 +350954 +1455154 +1088710 +2107940 +2100386 +2849703 +2864394 +2864447 +990105 +2029699 +841390 +2107974 +2056066 +387658 +2241473 +2864455 +2864476 +2864327 +2864564 +126074 +440320 +2551225 +743443 +1057884 +35629 +2010278 +2835712 +2864436 +1057881 +1140824 +337201 +2864312 +2864292 +2864488 +2864173 +2864367 +1057885 +2864238 +2864470 +457463 +1524422 +1606248 +1524431 +2864534 +2767521 +357155 +990111 +2864169 +1455266 +2864404 +457485 +2864524 +1140826 +2767520 +2864535 +228944 +2864395 +35633 +2849665 +1100444 +2241490 +2864311 +1763586 +2864558 +212338 +2864405 +2849697 +2864321 +2835713 +2849672 +1664634 +1680810 +2849657 +2864204 +1140825 +2348671 +2864273 +2864384 +2445374 +706489 +2849701 +1897775 +2864339 +2767527 +2864410 +1088713 +2704995 +2864432 +1134078 +2864517 +432350 +126070 +2849661 +2864201 +2864467 +2551235 +1121191 +2864418 +1070620 +2864171 +2864189 +2864413 +2445371 +2056062 +126085 +228935 +2864483 +2864414 +2864479 +2849711 +2071718 +2864506 +1986995 +2056069 +2864547 +706487 +202031 +2864533 +1070621 +1051286 +2241494 +588303 +2864229 +2749634 +2864232 +126064 +398106 +663640 +72957 +1701610 +2108012 +2628634 +1708062 +2678983 +1701600 +1810711 +1907652 +990145 +126181 +2241589 +2348744 +2056083 +990186 +126106 +432383 +2241553 +841436 +1606307 +765420 +2679039 +1411004 +35693 +2241496 +500774 +126188 +500767 +485506 +706500 +1933136 +841404 +2445398 +1260378 +1810698 +1411008 +2348691 +1411017 +126128 +1290736 +1488587 +2241611 +933932 +371379 +2679015 +2348722 +1165501 +765424 +2767547 +1810699 +1606264 +2241525 +745943 +1455300 +841409 +1933128 +1260373 +202041 +2678997 +457507 +126136 +2348748 +1954059 +2348708 +1685310 +202046 +2445381 +1606345 +990188 +841451 +2348712 +1701626 +2679029 +35662 +2767545 +2241555 +2679008 +72974 +126113 +1701639 +1057897 +949185 +1701606 +2508585 +841441 +2679009 +126201 +588308 +2241548 +35643 +288534 +2348773 +126169 +35657 +2241509 +2241499 +2241549 +1701613 +2679001 +1606324 +1088715 +1810700 +2241550 +772561 +2508584 +1685317 +1810724 +1606276 +1606269 +1821208 +2241628 +126152 +990155 +2241514 +1606262 +990158 +2508557 +2029703 +72972 +288527 +1606295 +1701669 +2835724 +421197 +2628632 +1165499 +1717377 +2767540 +1024488 +1701635 +1897781 +1606316 +1821209 +306295 +1701654 +1165502 +841435 +706493 +2849722 +2551243 +2056088 +1260412 +772576 +2835722 +706496 +1606330 +505352 +2241588 +1235347 +2679026 +337204 +1821207 +1717376 +2348784 +35663 +2241500 +949178 +1260414 +2679016 +1290743 +588323 +2348727 +949177 +2348709 +35660 +406 +841420 +743444 +2241581 +1897785 +1701583 +1121208 +841445 +990156 +2348710 +2348747 +1411010 +588305 +2108010 +1512580 +126133 +126111 +2348786 +2241636 +1100450 +202034 +588319 +2107997 +2348824 +2348797 +432402 +2100408 +1174071 +2108064 +2767577 +1174072 +2849735 +1143974 +1842821 +1235372 +933958 +2767559 +1606354 +2241653 +425726 +841517 +432396 +387670 +1487052 +990266 +933942 +841531 +328914 +2767557 +841474 +2100423 +2310967 +1821214 +357163 +2445417 +2310956 +485513 +2348825 +841503 +1260439 +2100418 +1088720 +1986998 +2100407 +2310979 +1708068 +1606379 +841511 +2108048 +2241649 +432395 +1512596 +1260452 +228971 +1933142 +1455331 +841538 +1947203 +1235355 +1907668 +1488591 +1749325 +1121220 +1680829 +1309777 +909457 +345442 +1107592 +841539 +1821215 +2518980 +2310977 +841523 +1455337 +1107593 +1260425 +228967 +2348826 +2767575 +1266830 +326183 +1100457 +1165530 +1260455 +496366 +990282 +1260433 +412490 +1455321 +1107594 +2348799 +1606374 +1235357 +1403627 +126217 +2241683 +1121226 +1606387 +485531 +1933149 +1176948 +841510 +2241689 +350971 +2767565 +1524461 +1411020 +990268 +2056099 +1842820 +2029711 +1174075 +2241703 +457515 +1933147 +990272 +1400556 +949188 +2508599 +371383 +432399 +2310963 +1488597 +2367046 +1488595 +1722120 +2056111 +1933140 +990260 +1897792 +2241678 +1933145 +126220 +2241679 +1403630 +357164 +588360 +260808 +126227 +2310998 +2767569 +2108060 +1763591 +1057901 +2100416 +2310964 +1157246 +1143972 +1701670 +1087255 +1076494 +500800 +1088721 +412495 +2508597 +2348811 +2241710 +2108038 +202062 +1821216 +2518975 +1606355 +1512612 +2445404 +841497 +2241685 +663645 +1842812 +1290744 +387662 +2241662 +1722126 +505355 +1680828 +1842811 +1290755 +1088718 +2108056 +35704 +1206881 +1749333 +841519 +990264 +1810754 +1206879 +2551250 +1455327 +421206 +485572 +1131899 +2628653 +505370 +2348828 +1235378 +228996 +2241766 +2108084 +2241773 +740294 +126244 +247170 +1821218 +228995 +35754 +228982 +357173 +2348856 +1260519 +2628652 +1121245 +588382 +2679107 +260839 +2348836 +2307603 +2241725 +1524489 +933965 +1121234 +1057905 +2108089 +228975 +485575 +841553 +2410924 +2679102 +2679093 +485570 +1810790 +718689 +1933178 +2108083 +1260518 +505371 +2108100 +1606404 +432415 +1933189 +1057906 +933970 +1701686 +228994 +126287 +1810781 +2508606 +2410916 +2679084 +2679057 +1088722 +1701679 +2108099 +496382 +1364649 +432434 +1082345 +1260465 +1082347 +72983 +841572 +2823669 +2108072 +2551257 +35732 +2241762 +260849 +126232 +1933174 +1524484 +1606405 +1165547 +126268 +2679099 +1260467 +1025350 +126238 +1897801 +1260484 +990302 +306314 +1606434 +729612 +2348858 +1810780 +485560 +1606400 +126246 +35720 +35761 +1810791 +2241733 +1260499 +2241764 +500826 +1524472 +1346968 +126231 +1810762 +1842823 +35745 +2241718 +1260463 +457554 +126269 +496377 +72990 +1100459 +909463 +387683 +1260525 +2108080 +357180 +2508641 +1082333 +2108076 +126241 +2823656 +412497 +387688 +1524469 +260840 +306318 +1082328 +2241771 +212341 +1157252 +2410922 +1524487 +35739 +1933196 +1606481 +2759339 +1260547 +485592 +1810817 +2767607 +729626 +1897814 +2767599 +1810834 +2100430 +1685332 +2767622 +1763594 +1070651 +1606477 +2445435 +765454 +1810844 +2445439 +1196820 +1810829 +202069 +1488604 +1157254 +2835738 +1810819 +1933205 +990323 +1701694 +1051296 +1121246 +1701702 +1315810 +588416 +1842830 +2100427 +1810823 +1685331 +72999 +1933200 +2508657 +387697 +750397 +706528 +2241823 +1070659 +765461 +1842834 +202074 +2445448 +1717381 +1266840 +2445449 +260854 +1606479 +2835737 +2835735 +2767616 +2849752 +2551261 +841584 +457573 +288539 +1810853 +432445 +1810861 +485596 +1842839 +457585 +457581 +2749649 +2767633 +588435 +990342 +202078 +2029716 +73012 +1749344 +588428 +2311020 +2628677 +505378 +1400560 +588426 +588437 +1701730 +35819 +2108119 +1235406 +1606495 +73024 +1907703 +2767653 +1685347 +1680845 +2370107 +2286242 +2551284 +1025353 +2508689 +2241866 +1933218 +2767637 +2348892 +1933224 +2241840 +2518993 +2508669 +357186 +990397 +990341 +2445457 +2100435 +2679134 +2241855 +1810880 +425730 +328923 +2311024 +933996 +1606512 +2445464 +2348874 +1810855 +990369 +229021 +1082364 +2518989 +2241874 +2759343 +2767630 +1680847 +1907710 +189702 +2508670 +2010292 +1082369 +2551281 +229020 +229030 +990398 +949206 +2100438 +1403637 +2241838 +1722136 +440338 +1235405 +1407732 +35812 +1235407 +990393 +2311017 +2628680 +706535 +2056126 +990351 +1606530 +2241856 +2767629 +2518988 +1266847 +1685339 +73026 +229022 +990355 +588447 +990360 +1722139 +126326 +2370102 +126338 +2767656 +35839 +2628683 +2518992 +35813 +1087262 +35831 +1680850 +1153071 +1364663 +2445454 +2508667 +2749644 +2370105 +2029727 +2410936 +1512630 +736755 +73040 +1346988 +1076500 +2551299 +1717382 +1907717 +2056144 +1524511 +909492 +1847461 +1315823 +2311035 +35849 +588470 +1685374 +73043 +949238 +73031 +73032 +2628712 +2835742 +841623 +2628726 +2679146 +126375 +189704 +588457 +841624 +990428 +35856 +429 +1411048 +1315816 +2628722 +2864605 +2508700 +2108171 +1346986 +2445494 +2108148 +2241887 +2311028 +1455358 +1082373 +2706400 +2348904 +1411081 +1685362 +2108149 +1076506 +1524518 +505412 +2445500 +1088733 +841598 +1025354 +990416 +212346 +2311044 +2108123 +909491 +2108125 +2628696 +1025363 +1411078 +934029 +1701746 +2628721 +2679151 +1165562 +1315814 +1939909 +2835769 +1954064 +35848 +1455374 +2370114 +990436 +2370110 +1249587 +677170 +2691174 +2691173 +331970 +2508692 +2241888 +677148 +2551289 +841601 +202079 +505431 +1206893 +2370112 +1685375 +1036565 +505401 +990438 +189705 +382995 +126384 +909487 +284235 +2628729 +1411039 +1235412 +1397275 +706539 +1411042 +2767663 +898865 +2628728 +2108190 +473995 +1847456 +126386 +1645771 +1847460 +1260553 +841609 +1685366 +2628725 +2029737 +2009484 +1847466 +2311061 +1970641 +2020505 +2241946 +772686 +1206910 +505574 +383000 +2767758 +362188 +990439 +1907749 +1907729 +2026130 +1411108 +1512633 +2056149 +588508 +1455439 +2767742 +841681 +841663 +2551317 +2628761 +2767753 +1061057 +1987036 +2767718 +2241951 +1970642 +1070667 +2508713 +1455400 +1411090 +2370122 +2835830 +2370163 +1524543 +2020523 +990482 +1455427 +2370132 +2410942 +1165566 +1606634 +736118 +677171 +677189 +1036593 +2241930 +2348913 +2056155 +2286249 +754888 +1524549 +2370158 +588532 +2847198 +2767726 +1455414 +2734004 +2835833 +841707 +754890 +2241918 +718707 +1907744 +1396520 +841704 +2767757 +754516 +1455408 +1036572 +2628795 +1076514 +772688 +2241967 +2108266 +505499 +990490 +736759 +2029747 +2108267 +1970666 +1933244 +2628746 +1411127 +1970635 +2056161 +718701 +2056164 +949267 +2029745 +2370153 +2108216 +1970665 +1847463 +1606584 +2370154 +2835873 +754508 +1100475 +1524561 +1107609 +754515 +2679159 +2108222 +1036579 +2628790 +1524550 +588505 +505468 +772698 +648690 +2628784 +754507 +35863 +1025369 +2628736 +2835806 +2355501 +729646 +663664 +2029760 +1346999 +2767730 +1810894 +1411111 +408259 +754512 +2370125 +2767690 +990484 +1847473 +1606630 +2628742 +2029749 +1411084 +439 +1036575 +2108254 +588518 +1347010 +2056154 +2307616 +841695 +2767728 +1939916 +1315837 +677194 +2241910 +772661 +2767676 +2767739 +2508711 +505515 +1455434 +2370128 +2759349 +754510 +2241936 +505523 +2108269 +1346995 +2767703 +505512 +2355505 +2734001 +1315829 +2835867 +2029748 +841644 +765466 +754514 +1315839 +1524563 +2367063 +1411091 +588514 +1315827 +2370182 +2767675 +1455406 +505525 +1346994 +990505 +2367067 +2020533 +1455423 +1987013 +1652212 +2370165 +772685 +2286248 +1524556 +2108286 +1970658 +2767767 +505535 +1970659 +1785847 +1907742 +1970633 +990487 +1249590 +2706405 +1897830 +663665 +990453 +1606625 +2370136 +1025373 +718708 +2009482 +2370147 +2688667 +505591 +2720324 +1061056 +2706402 +2519017 +990466 +990440 +2445521 +2108251 +2706408 +1708074 +2108280 +2706415 +2706410 +2835807 +2628767 +2273703 +648691 +1036571 +934041 +1455420 +2628793 +1606594 +1717386 +990556 +2348937 +1606653 +1036595 +2508716 +126447 +1411160 +443 +1606732 +1196838 +2108346 +1847478 +418090 +2628806 +345450 +2628805 +898875 +2028031 +371418 +1206911 +35890 +2445557 +2056195 +2242039 +841761 +736761 +1524582 +2864649 +260882 +1722164 +2508748 +1488617 +2007393 +706559 +2508781 +260892 +1987040 +1606706 +400683 +2242044 +1061063 +1061062 +588556 +73068 +772703 +743453 +1455482 +126461 +1411143 +126446 +1411148 +1488624 +1512661 +841775 +2443324 +2242038 +2002961 +260872 +453 +126451 +1364673 +2864615 +841802 +841785 +2847217 +2108349 +841763 +328931 +2285389 +2823757 +1606658 +1411140 +1455497 +2108315 +1722165 +1524578 +2348927 +2241997 +677197 +1088746 +772718 +1088748 +841767 +1606722 +588557 +841738 +2823727 +126452 +2823766 +1070669 +841796 +229045 +2019753 +2108296 +2683700 +990516 +990513 +1659079 +2108353 +990518 +1512658 +1266876 +2508764 +371410 +126467 +1606692 +398115 +949280 +1524575 +1057921 +1606682 +1606760 +126450 +400682 +2864637 +1847476 +357203 +1165585 +1606717 +1606696 +2443325 +2242020 +1512646 +2864623 +1606723 +2348933 +1680856 +1140832 +1087266 +2508753 +2623025 +331972 +1411150 +1524574 +743454 +35893 +1082401 +1455500 +990531 +1524585 +841733 +2029785 +2242007 +1606680 +2864652 +772705 +2242021 +1121299 +2508749 +2508776 +505605 +2445552 +35876 +1165568 +1347015 +1290765 +588558 +1606686 +2241998 +1076535 +934058 +1315843 +1082397 +1665999 +1769507 +35907 +2028026 +35889 +841757 +126485 +35888 +2100456 +2864611 +328943 +35887 +440 +505618 +841735 +2029774 +1290769 +2241994 +1701767 +2823723 +841745 +841814 +505611 +1606670 +1524572 +1685383 +2241973 +2823746 +371433 +357205 +260907 +1897839 +260927 +1061065 +1488627 +754546 +126526 +400686 +718720 +1196841 +457610 +457618 +588585 +260982 +35914 +2370203 +260901 +126512 +212356 +260912 +2311087 +496434 +507 +212357 +229058 +1070680 +2445560 +35938 +474002 +2056212 +1933285 +934072 +247186 +458 +457611 +432464 +260932 +2628814 +949293 +2108411 +1907753 +1455512 +35930 +260898 +2739015 +126489 +371427 +260928 +496404 +1606779 +418110 +1411172 +1524607 +412509 +126513 +1379566 +754555 +126506 +35940 +35957 +35929 +2348971 +485616 +500 +1606771 +909515 +288548 +350986 +2348968 +351007 +1396523 +841842 +371431 +496446 +501 +260979 +1411176 +1364676 +418106 +371436 +260969 +1606768 +260955 +2072447 +1524616 +418096 +754551 +1347020 +2767787 +718714 +229075 +677210 +465 +247181 +2108408 +478 +1076540 +260896 +588583 +1392921 +648695 +772730 +1606766 +2029794 +2767793 +229061 +260910 +126500 +496429 +284246 +1082407 +2355515 +718724 +247185 +126531 +247189 +505651 +1176976 +505638 +260959 +470 +2348961 +440354 +2108388 +1076541 +260957 +1235429 +841852 +1717395 +371422 +73100 +306339 +212379 +1907768 +2029811 +2679179 +2445589 +2108471 +2108440 +841861 +519 +73157 +126568 +2551371 +73146 +2108459 +1524632 +212392 +2628827 +2445580 +2348982 +2628854 +1196848 +2628870 +2370212 +1685393 +1785876 +2286260 +2628824 +1842850 +1196847 +1785882 +2307623 +1987045 +1666005 +1397288 +212391 +1524652 +677231 +1524638 +1645781 +229080 +1235435 +1685397 +73123 +1392924 +1907766 +505693 +2628867 +2370227 +357211 +505685 +1606791 +2020545 +1176978 +73140 +677244 +1025384 +1300139 +1685394 +1157263 +126563 +505720 +1749382 +2002966 +1606787 +1606789 +2348979 +1036603 +2445572 +189724 +2628835 +1847498 +2628860 +505687 +2415965 +2020549 +2445574 +1176979 +990589 +1107618 +2551378 +754895 +949300 +73158 +1036602 +2628858 +505703 +2628866 +1933297 +736767 +1810920 +1206924 +2547638 +212387 +1061073 +1749377 +1524630 +73129 +949309 +588591 +73138 +1907774 +1315855 +126547 +2628880 +1524697 +2108506 +73171 +1487054 +229123 +1606815 +1939921 +1140841 +1722198 +212425 +1176996 +1659100 +1235440 +841881 +1482191 +2445626 +383035 +990599 +841882 +2739017 +2307625 +934097 +2427289 +1107619 +2628882 +440368 +1482189 +1455537 +743459 +1455532 +260993 +2422261 +2744272 +841873 +2688682 +2508801 +505727 +1165599 +1769550 +2508813 +2445614 +2744278 +212414 +2445629 +2864666 +505739 +1174105 +328962 +663673 +1121327 +772775 +1061093 +2013832 +909555 +2849763 +1524699 +588612 +212404 +2242096 +247210 +212406 +909533 +1411196 +1847527 +529 +2734015 +229125 +2445598 +841887 +1606811 +2734017 +990598 +2354092 +1810927 +1176992 +229107 +2508809 +1235437 +412516 +2628881 +2734014 +2013830 +331990 +990596 +2108513 +1955832 +1810925 +1397291 +1157274 +1076546 +2744267 +1087272 +1391601 +2354093 +898883 +1266884 +990604 +677251 +2551400 +1174115 +1769546 +2445625 +2445600 +73182 +1769532 +1606805 +1174107 +126577 +2108490 +1769542 +505745 +1057956 +736776 +1606801 +126593 +2767799 +2445627 +2744280 +126636 +1606825 +1391603 +1143985 +2683715 +2013828 +1174106 +371440 +909540 +306344 +1769543 +1036604 +408265 +1143981 +2445617 +1347049 +1847528 +990610 +2767816 +588637 +2242174 +2410988 +1606856 +2311126 +1266897 +2767817 +1606881 +126644 +588645 +2519052 +772782 +1606860 +772779 +35981 +2410994 +990618 +2767800 +1455576 +2286282 +841994 +2348998 +505751 +2628943 +2445651 +1763597 +36004 +1524737 +35996 +1385205 +2410991 +126700 +1342056 +990617 +2108560 +505759 +841956 +841931 +2445682 +2108614 +1685415 +229129 +1606886 +588654 +1970680 +677266 +588632 +772789 +772793 +1524729 +1749386 +1315882 +2108550 +2242144 +2551435 +2445649 +1455564 +1206944 +841944 +2108615 +1407758 +2108622 +126684 +2307631 +505774 +842030 +247213 +1266888 +2242168 +1347053 +1666012 +1701800 +772778 +1342059 +588618 +2519053 +1722204 +1722201 +1411220 +1397292 +2280191 +588638 +261002 +772825 +35987 +1025395 +1606878 +2519055 +2628934 +2767818 +1785900 +2349003 +772817 +949336 +1701784 +841907 +542 +909569 +556 +73196 +841983 +35999 +588633 +2242188 +2286276 +2072461 +1907797 +2445667 +1206941 +990615 +1939923 +1411230 +842004 +1606884 +36005 +1997250 +1757113 +36002 +990635 +505770 +1088764 +1685427 +535 +2551439 +2286280 +1606897 +1606851 +1266895 +754900 +772807 +559 +337222 +2551428 +1907787 +1757111 +126672 +1785896 +1950138 +772832 +2108601 +1606872 +1411224 +1364680 +909565 +1685401 +2100480 +1685414 +949334 +2311133 +2445657 +2628918 +2029837 +2242148 +1524720 +2029835 +1701792 +1524741 +2311135 +2410995 +1524707 +1984406 +505784 +841998 +2072466 +906646 +505800 +2010294 +2242145 +772794 +505771 +1606894 +1455553 +2286275 +229131 +582 +505826 +2311177 +1810931 +2286284 +1411270 +371448 +2242380 +754909 +2100487 +2551500 +1364687 +1644309 +934153 +1606906 +2029866 +842223 +772891 +1392640 +2242376 +1391608 +842121 +1524748 +2242287 +2108691 +1266902 +2242267 +2108648 +772868 +2349031 +588696 +1606941 +990716 +2508847 +2108653 +2311168 +1708092 +1174126 +2551466 +2242273 +36056 +2508823 +588713 +36070 +842248 +1347063 +189737 +505812 +2029852 +1607014 +2056258 +126713 +2242218 +842247 +1701823 +36086 +588 +1524774 +588715 +2029854 +2242399 +1607031 +2411010 +2242338 +1455606 +408272 +1455632 +842154 +474014 +1606952 +1607011 +842087 +1607062 +934130 +2519064 +2056259 +1057959 +2072488 +1455619 +36019 +2108673 +505830 +842040 +990681 +1717410 +2767837 +2679189 +736125 +1455637 +371446 +2519061 +505825 +990713 +2551481 +842118 +418127 +1607041 +1165617 +1036640 +1455613 +706576 +1455687 +126735 +36114 +2242233 +949361 +36033 +1249605 +2100495 +706577 +842055 +2242398 +842106 +842146 +1722219 +1607054 +1512722 +1455604 +594 +706580 +588675 +2718863 +772865 +1685445 +126723 +1070707 +2072481 +1907800 +1455684 +842067 +754559 +36020 +126709 +2029855 +1606913 +1524766 +2367083 +1524771 +1488646 +1266903 +1342073 +842184 +73223 +1749410 +2056262 +2056236 +2056315 +1455652 +663680 +412523 +842213 +1347069 +2242383 +1364691 +2029842 +328970 +1606933 +2108686 +842068 +772874 +2551463 +126810 +842103 +126720 +1606951 +2349012 +595 +909578 +2727719 +2835880 +36067 +2354098 +2551490 +990711 +1606934 +36081 +588672 +588723 +2349010 +842083 +126821 +1057960 +1607079 +2108715 +2056269 +2508825 +772862 +1685455 +505856 +2056326 +2056312 +2056299 +126792 +718752 +2311154 +842161 +1701830 +351017 +588660 +36083 +126716 +36029 +2242276 +2056274 +1907799 +1411260 +2445694 +1455647 +1606948 +2307635 +36026 +1606993 +1607032 +2242249 +1235448 +2242297 +588673 +485640 +1524758 +2370264 +2108677 +2767826 +2311174 +2679184 +126741 +1955836 +1749405 +2242302 +842126 +1036616 +842041 +353258 +2242243 +1722216 +2508827 +2108690 +2349034 +842155 +1606962 +1680869 +1606943 +588688 +1607002 +1290783 +842229 +2354094 +588719 +2056266 +1652222 +754910 +842173 +126818 +909579 +2349017 +2056261 +1606932 +1607019 +2349042 +1685450 +126811 +1315897 +126759 +1165612 +990667 +1524753 +1455752 +2311190 +1266920 +1411275 +2056369 +842453 +990743 +2349089 +2242495 +1411310 +2628969 +1644314 +990774 +842290 +1411306 +73244 +1455794 +1411300 +1266945 +1266911 +1644318 +1645791 +1524778 +1847551 +2108865 +1455747 +1455749 +126952 +2242508 +2056375 +842402 +1087281 +842441 +2108820 +2029903 +1907801 +600 +505900 +126846 +677286 +1315912 +1512728 +2242546 +842428 +2411019 +772918 +1847546 +1315904 +1933320 +2415977 +2056344 +2311180 +2273717 +754918 +990786 +842373 +765515 +1411291 +1407771 +2108822 +2056400 +1607144 +2056389 +2072496 +1455779 +73251 +2108836 +126950 +2242514 +842368 +2242518 +2349078 +842406 +1411295 +2056379 +2108779 +1455758 +2056408 +990764 +1455726 +1455735 +1196859 +36158 +2108816 +1455712 +2242450 +2349069 +2056358 +1455716 +2108799 +949371 +2242441 +1455787 +1455703 +2242488 +2056376 +2734024 +505872 +1407780 +36139 +2679203 +2108774 +1524793 +126905 +588819 +36150 +2349066 +1607152 +842385 +842295 +842394 +718754 +2242492 +1607134 +2108790 +126892 +1645798 +990732 +2349061 +1607143 +126942 +1987058 +2242528 +2056397 +2242418 +588811 +1266924 +1411297 +588797 +126915 +990770 +2311183 +1512729 +2029876 +505883 +73257 +189738 +1652224 +1847553 +677287 +2242500 +2370296 +126935 +2242446 +505875 +2242442 +2370304 +842451 +1810940 +2242462 +990792 +2026150 +2108806 +2108840 +663692 +2370285 +2242419 +2411021 +2628967 +2108778 +2108846 +842430 +842414 +2108751 +990749 +2108742 +2108842 +765505 +949382 +2683718 +588818 +1607124 +2349095 +1607116 +2056331 +754920 +588829 +1266910 +1607113 +842464 +2242533 +1411301 +1607117 +1607115 +1290786 +126870 +1411304 +2311207 +2242485 +842435 +1607141 +1455768 +1933315 +2108808 +126917 +2056372 +2108725 +842293 +765511 +2411011 +2349076 +772926 +1290820 +2551521 +2367085 +949368 +2679198 +371453 +2242577 +1722249 +73309 +677329 +621 +1347089 +1524847 +2370321 +2029927 +2688687 +1266963 +506022 +842479 +2551573 +2242593 +2370315 +772966 +73286 +1524819 +1607174 +2629002 +1249612 +2108937 +1645801 +2242562 +2108945 +126957 +1822297 +677303 +357222 +2242564 +1347088 +772947 +1512750 +2029916 +126993 +1722247 +505979 +73274 +842477 +2072505 +1025409 +306357 +1235472 +648718 +371460 +2242556 +1206955 +1607160 +2370348 +677322 +2744290 +2072503 +1907814 +842497 +337228 +1970705 +677315 +506006 +506014 +1206962 +505991 +2108897 +740303 +2108905 +127025 +505988 +2311225 +337225 +126979 +2056421 +2551562 +718779 +505984 +73317 +126968 +2691182 +2242557 +772956 +1970699 +1717426 +1607191 +73279 +212448 +2242590 +772941 +2551605 +2370334 +2242578 +127010 +2696558 +1392934 +1524846 +2108971 +505960 +73294 +2744291 +1524825 +1309794 +588871 +588845 +2311226 +505926 +1970706 +337226 +506013 +1025411 +2109002 +909589 +1249608 +73330 +2029917 +842488 +506000 +1847577 +306355 +1749428 +1088769 +842495 +2108952 +127003 +505956 +1524849 +990797 +1347084 +506010 +1455822 +2739021 +1315928 +1076554 +1847561 +2734036 +1968457 +2108983 +1107625 +2109000 +1652233 +2370324 +2307639 +2547646 +2411029 +505929 +2108974 +1411338 +622 +2108924 +2628999 +718776 +2311215 +506019 +1107628 +648720 +607 +2242584 +842516 +588890 +2720357 +1455818 +371452 +772988 +588843 +1411324 +2273720 +2739024 +909592 +772938 +2696553 +2445708 +1369343 +1397296 +73327 +611 +1968456 +126990 +2108893 +990809 +506023 +2623074 +706592 +2551594 +2242553 +505928 +1088771 +1025415 +2370345 +371462 +126970 +2242555 +934170 +2508859 +1722231 +2108949 +73277 +2370327 +1107624 +772993 +609 +229153 +588868 +1987067 +842489 +1524814 +506025 +505995 +332005 +1088772 +505973 +2551600 +2108895 +2029922 +212442 +1524822 +1847575 +588851 +1347082 +2108902 +2370317 +1342082 +2072504 +505939 +2734033 +1076559 +126976 +1488703 +1722259 +677369 +506206 +2629070 +2109172 +2551616 +2273722 +2029978 +2551671 +1666032 +506199 +440391 +2029982 +2109106 +506036 +2370355 +73384 +326190 +2706453 +2109056 +506095 +2629020 +2109152 +1300172 +2551627 +2109214 +773018 +773019 +2109075 +1025420 +1377022 +1379580 +2370353 +1377020 +2020558 +773069 +2029969 +949426 +2072518 +773100 +2109160 +2109071 +1950152 +1455836 +1266997 +1512756 +2029963 +773113 +1524918 +773083 +2551678 +2109112 +2551611 +1524917 +677366 +648746 +2519099 +677350 +677380 +1822311 +2729621 +1524954 +1708102 +2629030 +1177020 +474017 +1847626 +1847614 +736786 +73346 +1970746 +1025443 +2370401 +2629057 +1342085 +1488678 +1955856 +2445742 +949425 +2519109 +1266986 +2029976 +1907833 +1177021 +1524912 +2629084 +648770 +474025 +1061106 +773002 +2109092 +773161 +1206975 +1524948 +1847681 +2691198 +1822316 +2749681 +1607199 +2029953 +718800 +773124 +909625 +648750 +2720372 +2311260 +1488689 +1488679 +1722273 +2029975 +2029973 +773156 +127068 +2109131 +1206980 +506211 +2109181 +2029968 +2109213 +1950148 +2629072 +2311240 +1266985 +1664650 +1970742 +73404 +1847638 +1411381 +773087 +506146 +506202 +2629066 +2739028 +773085 +1997260 +1524931 +773164 +677393 +1411370 +740305 +990812 +1025432 +773166 +1607200 +2734050 +1107650 +1300178 +1645831 +2629068 +2109031 +2242603 +773110 +1524909 +754935 +1970738 +1907838 +1076571 +73391 +1524887 +2355569 +1769578 +2551640 +2629060 +2109057 +2109125 +648749 +773079 +773101 +1847620 +2109014 +2744298 +1300162 +2428059 +2370389 +1266971 +2691189 +2109207 +1645826 +842530 +2629035 +1347117 +718790 +2370363 +506126 +773032 +909608 +2072526 +773036 +1347094 +2109113 +506193 +506152 +2445743 +506185 +2370358 +2734058 +2355558 +1907817 +754942 +2551652 +1369345 +773027 +1847643 +1645812 +1206972 +1379586 +949408 +2109020 +1722276 +297496 +677344 +2551608 +2445746 +1847653 +1315948 +773095 +1955862 +440394 +1025450 +1847619 +1524888 +648735 +362208 +677356 +2370398 +2242601 +1206967 +773012 +1315968 +2551669 +1749433 +1025441 +677351 +1645817 +2109178 +1970710 +2696560 +425739 +506105 +1907830 +1052200 +2706460 +2109058 +1666033 +2739036 +1987078 +2355550 +898907 +189743 +2370390 +2109137 +2355575 +677367 +1266984 +2109192 +1267035 +2370396 +506155 +2029956 +1315930 +1347106 +1411352 +773137 +1379590 +773091 +506118 +247216 +2734063 +949423 +2286312 +1645811 +2109157 +2072516 +506220 +1455837 +2072522 +2445721 +754939 +2242614 +1749439 +2623083 +2551705 +1847697 +2629114 +2629116 +1300181 +306375 +2428062 +1607209 +773178 +1847707 +2370420 +588913 +73458 +1315973 +506280 +2623079 +2508871 +1347147 +949452 +2109275 +73450 +1970759 +2551727 +842548 +506271 +2551706 +2629088 +773180 +506255 +2551701 +332012 +342055 +2551714 +2411042 +1300180 +1524964 +2311310 +73441 +2355577 +506283 +2749696 +2311294 +1025463 +2286317 +2623082 +2349112 +1607220 +1488728 +1987088 +2445766 +1342086 +773188 +2629113 +909647 +1347141 +73468 +1177022 +1488724 +1061111 +1347154 +1907856 +1907853 +2311304 +306374 +656 +345468 +1290827 +1249619 +127083 +506284 +1769584 +718817 +127080 +387716 +1488730 +345463 +2629127 +677408 +1810942 +2749697 +2508867 +1107671 +1157280 +2349111 +648779 +1810943 +2629103 +357224 +2629097 +739580 +2729636 +1455841 +1411418 +73464 +773199 +1134088 +73454 +1524969 +387746 +1524986 +934175 +1607214 +2242612 +2759376 +1907870 +648777 +73437 +506285 +2242605 +383054 +127075 +2428060 +1749438 +1607211 +371472 +2370428 +1315988 +2307640 +1174148 +1455840 +506287 +371474 +2311288 +1785922 +2445754 +2411052 +1316001 +1061114 +1701838 +1061115 +2013847 +2242613 +212471 +1342091 +1907860 +306373 +2109252 +1267048 +2744302 +506273 +773189 +1749451 +1722315 +2109301 +2030012 +2311336 +694 +2286336 +1907875 +2242637 +36180 +1708119 +2242628 +1644325 +949484 +2030008 +2286338 +1757132 +2551745 +1267072 +1749460 +506379 +2629204 +949466 +2411073 +1785930 +506341 +383061 +506313 +842616 +440424 +842602 +1025494 +1525053 +1347169 +2744303 +909659 +1847759 +506408 +2551741 +718854 +990850 +1267084 +1316004 +2030022 +1907876 +2030030 +1206988 +1722320 +1488732 +1907879 +36179 +2056433 +506417 +1342097 +2370493 +2109378 +773248 +1708111 +1411435 +2370453 +127115 +842612 +842591 +1822332 +36190 +2109363 +1249667 +506382 +1316031 +2629172 +1685493 +2370457 +2411062 +588962 +1267097 +2370507 +670 +1717427 +1701841 +2109302 +1196866 +1036673 +1907889 +1260583 +2109407 +1525072 +506387 +506419 +1036675 +306384 +909653 +1685485 +1316006 +1347166 +1524995 +677435 +2551768 +677457 +2109308 +2623086 +588945 +2056435 +1379598 +2370513 +1685491 +1645838 +1267071 +1525068 +2629229 +748318 +1249653 +2370460 +1342093 +2109329 +506383 +1132496 +588954 +440401 +1708120 +2519119 +1666042 +2242619 +127110 +2734073 +506381 +773246 +506388 +457656 +2100535 +212494 +1196863 +2242621 +1482204 +2629188 +745954 +1722326 +1267093 +2030011 +2109354 +2370474 +2370511 +773218 +1907919 +2696568 +1249627 +2109333 +1107692 +677434 +1722305 +332013 +2551760 +73493 +842583 +2100532 +1177042 +748311 +1488738 +212485 +2629233 +506333 +1907912 +1607250 +1757126 +1157285 +2109394 +588965 +73482 +2629205 +1290834 +949464 +2242635 +1267103 +1607251 +1316020 +842572 +1455853 +284285 +506342 +1196875 +2109323 +2109312 +2311341 +1267091 +718848 +212495 +2109383 +1403074 +1316013 +506331 +2411057 +588929 +36181 +1907910 +2629169 +2551762 +2029991 +2629183 +1666047 +2109293 +1525001 +2056442 +2311332 +2629197 +1607235 +1411458 +1907877 +661 +2030029 +1455864 +1196864 +1933333 +1987092 +1455880 +127111 +842594 +1763600 +506334 +2109449 +765533 +2629224 +1488735 +2067275 +2370438 +588917 +2519123 +506384 +588950 +2109368 +990849 +588944 +1290842 +337233 +1907898 +306382 +2629166 +1249666 +1785938 +2072538 +1267063 +1666045 +1100527 +1701843 +36187 +1525003 +1907911 +2109434 +688 +1377025 +1785951 +1769604 +740324 +362217 +2629271 +2072582 +2109469 +1134091 +1607285 +506429 +1177068 +1397337 +1347256 +949502 +1847773 +2013862 +1769601 +1525096 +2734085 +2030034 +1076588 +1143996 +1061129 +1455881 +990862 +1810955 +1607281 +990870 +990867 +1397313 +2109507 +506459 +990871 +1847775 +1300198 +2734093 +506533 +1309800 +842635 +677542 +934187 +1316052 +2013858 +1785952 +2767889 +2109465 +1769606 +2749730 +1685515 +1347248 +2445890 +842640 +1316035 +2445885 +2734099 +2551860 +506547 +425743 +1135354 +1785962 +506516 +506453 +2109489 +2734086 +1666049 +2744313 +748323 +1177070 +2551784 +2767853 +506457 +506546 +2242666 +2072573 +1659115 +1907973 +1997285 +2030039 +2370537 +1685521 +496465 +1997303 +1207033 +2767874 +2744309 +2420718 +1177072 +949486 +1722344 +1525103 +506487 +2706481 +332020 +1525092 +1316037 +842628 +229210 +2445852 +332015 +740332 +2411080 +496467 +425748 +1364722 +2741383 +1907948 +2551822 +1847791 +909671 +212500 +1842864 +1749473 +1316044 +588971 +1177064 +2508883 +421214 +362216 +2551804 +1107705 +2445830 +1196878 +677514 +2445821 +949494 +506474 +2741389 +496464 +506440 +2744320 +1347221 +2273730 +1157306 +1847821 +2109462 +2749740 +1785972 +1235484 +2445869 +842647 +306388 +677510 +1379608 +2749715 +1933344 +663711 +2109467 +677501 +1822346 +949496 +745956 +1760978 +1170480 +2629293 +2749746 +2242675 +1659118 +1397329 +2551854 +1997294 +2072581 +1847764 +1525078 +1207027 +2370543 +842634 +990859 +2749738 +1997313 +1997299 +1403085 +1132499 +773316 +2445850 +1392951 +2749729 +1379636 +2749723 +1379621 +506490 +1379606 +1847814 +2286347 +2767897 +2629259 +1666061 +2767884 +1525081 +773315 +506479 +2623092 +1347227 +1607283 +383071 +2109457 +588992 +1400572 +357230 +2629264 +440451 +2749708 +2629280 +1369355 +1607299 +1997287 +677486 +1512772 +2445832 +2030035 +2741387 +506530 +1525106 +1207043 +1379632 +1379620 +1847849 +1769589 +2629281 +934189 +1785943 +718857 +1847808 +1666058 +394433 +2370539 +1757136 +127161 +2428073 +2100544 +2445894 +1379613 +73538 +506445 +432475 +2242673 +1987100 +677496 +589003 +2551800 +1403661 +1107702 +1157293 +1207023 +990858 +2019761 +740331 +2696577 +2445922 +1822371 +1785995 +909706 +1782791 +751211 +1939958 +2286360 +2551869 +1897890 +1782788 +127179 +2508898 +2683731 +2370563 +1174154 +342081 +1107721 +1525137 +328971 +189758 +2286367 +1933347 +2551867 +1685527 +1810963 +1165640 +1701849 +773329 +1822382 +432479 +1153089 +2445921 +663714 +387764 +677554 +740348 +2109531 +1907991 +1135367 +2623096 +2286361 +663716 +898930 +2109558 +1907999 +1810968 +1411484 +1769622 +261029 +1810973 +383077 +2428089 +1769635 +1763618 +1196899 +949517 +412529 +990879 +2286372 +1786026 +1070724 +1134093 +2286358 +1165630 +2072602 +1140854 +1157351 +677557 +2508885 +751212 +842649 +342083 +1260588 +1525127 +2551872 +127172 +1847874 +2445998 +589019 +714 +2551861 +432477 +1140858 +1177079 +328972 +1157346 +1847862 +73548 +1025511 +949518 +1174155 +909715 +342076 +1847883 +842665 +990874 +1411478 +2629321 +2109552 +36211 +1165648 +1392955 +1786044 +202117 +362223 +36203 +589021 +2370559 +751213 +1316056 +2445913 +1786016 +229217 +1316066 +1135368 +36212 +1157337 +1666069 +1997316 +2242689 +2445946 +408280 +1135366 +1174159 +1666066 +229216 +1144014 +1810966 +2072608 +1769617 +1822386 +751214 +1135362 +2445972 +1411483 +1411495 +1722368 +2028035 +1685530 +1411494 +2864880 +2767959 +1157377 +1847905 +2864817 +1249731 +2519155 +440465 +1666079 +440469 +718888 +1411512 +2864959 +2749752 +2422279 +949537 +1722391 +2865057 +2864851 +1392967 +1177115 +2864691 +2864869 +2864678 +2864784 +229218 +2370581 +2865014 +506625 +2864706 +2864830 +2864894 +1249729 +1076600 +1369362 +1157371 +909723 +506619 +2864778 +2519159 +2865045 +1997321 +2864840 +73553 +677575 +1347281 +909732 +2864847 +2864876 +1207073 +2864986 +2446002 +1076606 +2767942 +2864772 +506588 +2864918 +718883 +2003594 +2865033 +1177107 +1076608 +2370578 +1347278 +506624 +2864695 +2020587 +2864814 +2864861 +2864881 +2864949 +1786048 +2551884 +2864698 +2109564 +2311362 +648821 +440470 +506621 +2109566 +1411506 +2865030 +949536 +2864779 +748368 +2864803 +2864732 +1316080 +2767938 +1177097 +1300218 +2864925 +2864845 +2864953 +2864929 +909720 +1364728 +1786055 +2864941 +1411498 +73554 +773356 +2767933 +740360 +2864854 +2020586 +1666080 +506618 +2446020 +718896 +1177113 +2519162 +1267128 +1347283 +2428105 +2864701 +2446005 +1987103 +1525147 +677585 +2864993 +2744326 +1177098 +2864954 +2864846 +2864991 +1207066 +2010316 +909749 +1196902 +362239 +949572 +189780 +1076618 +773392 +432481 +1525165 +1177154 +1411540 +1135374 +949567 +2109639 +1769661 +2311385 +2446160 +1769683 +2446161 +1822396 +1144023 +1955879 +1070731 +2446084 +440501 +1411539 +506695 +1525172 +2446134 +506653 +400723 +2446058 +2749759 +909756 +677610 +2020597 +2729640 +371506 +1525186 +949550 +2446162 +418134 +1135388 +677614 +2311379 +749 +751224 +212522 +1769644 +425767 +2311382 +418139 +1392978 +506648 +1847958 +1847934 +2311386 +1392977 +1076615 +1847927 +1207104 +949553 +1177136 +2446113 +398138 +506643 +909744 +2109626 +677611 +2242693 +2286402 +357237 +1207094 +506668 +909738 +408283 +740380 +418138 +474061 +1769674 +1207110 +506657 +457681 +1135390 +740372 +1207086 +1177131 +752 +1708138 +383088 +457683 +773367 +1411527 +2446129 +2428110 +1135375 +718904 +73560 +2020593 +189772 +1786117 +2019765 +1488757 +744 +1107723 +1207088 +1525169 +2370603 +337249 +1786114 +2428118 +2551911 +1786116 +1249746 +934199 +1525210 +909768 +1061145 +1786129 +2109596 +909765 +1786134 +1392983 +1908039 +2109603 +2446098 +2446068 +1769645 +773410 +2109630 +212517 +2311377 +342093 +755 +773378 +2744330 +2759390 +1207093 +1049812 +1847952 +2734106 +2629381 +1249743 +1666093 +2109595 +2446079 +1482209 +1847929 +1847922 +743 +677607 +773399 +748 +2446107 +2109635 +1100545 +212516 +506679 +297514 +2629355 +1207089 +773396 +284291 +1207095 +1786166 +400731 +1249759 +2020603 +1908103 +1822412 +1107746 +342108 +2623101 +1177189 +2428144 +751227 +2109690 +36231 +2422286 +1061178 +362266 +362262 +2109680 +2311393 +1049814 +1070734 +127200 +1140872 +1908069 +326200 +2446251 +736819 +2728745 +740394 +1207144 +1607329 +1207190 +1207211 +1786215 +2629419 +306395 +2109667 +288576 +773454 +1379646 +474080 +2446230 +474104 +229233 +1722427 +474083 +1908088 +1847968 +440529 +506720 +440507 +506713 +1488811 +342115 +2109671 +1107763 +1207146 +2446288 +2629388 +1135405 +1482215 +1763638 +1157422 +1411547 +2242696 +1659139 +485655 +357238 +1157408 +677625 +1722425 +766 +1822417 +1177209 +1786153 +814 +73593 +1786218 +706623 +425773 +1379650 +2013896 +457705 +1769713 +337256 +371515 +73604 +1207154 +748380 +1997335 +1377031 +1786179 +2749779 +2629391 +506741 +457691 +1786178 +1107734 +2446261 +485661 +2767981 +362279 +342104 +474075 +2109703 +1659132 +751237 +1157419 +1786197 +2020600 +1607328 +1908072 +2072623 +909773 +803 +440516 +1848029 +1786190 +474105 +2768008 +2109656 +1482214 +1488766 +949576 +1386387 +288574 +1316097 +440508 +1165666 +736824 +398139 +2311403 +773432 +2749776 +36264 +1061162 +2109698 +794 +1100552 +1144044 +909801 +440502 +342117 +2030060 +127203 +2446283 +2109657 +2446298 +706626 +328976 +73588 +332041 +2030077 +773435 +740396 +1177197 +2446274 +1819012 +1144037 +949596 +474076 +1107741 +1177200 +506746 +1847972 +1061163 +1525277 +1822432 +1997331 +189786 +1933359 +1488796 +1763636 +1970783 +2749101 +362277 +2446291 +2109658 +2519176 +775 +2446259 +1135410 +1786201 +909779 +1847969 +2446181 +2768002 +1369370 +73594 +1061187 +2551954 +1955882 +2508915 +2767988 +2446192 +1607318 +1140869 +2551936 +2749781 +2629402 +506736 +2311395 +740383 +474090 +2551930 +2446312 +362250 +457708 +1786203 +2446275 +1107748 +474070 +1144047 +745994 +795 +383101 +1107758 +2629412 +1207139 +425776 +2446305 +1070741 +127195 +474100 +1525274 +36253 +506735 +1842872 +1235513 +261039 +1786140 +2446176 +2428129 +1786146 +909774 +457697 +1525219 +1908077 +1157413 +1525243 +1207175 +342102 +73587 +326199 +506738 +2551932 +1207200 +2823786 +400727 +1525254 +898944 +2109644 +2446334 +1207186 +1061170 +748382 +1666106 +1659135 +383108 +342116 +1267145 +412541 +677619 +949594 +2629448 +2629447 +1848023 +2767967 +898945 +1267143 +1316106 +440503 +1057990 +843 +1207236 +1786269 +2835901 +909806 +408296 +1036686 +1786244 +1135423 +2446359 +189792 +400745 +847 +1848040 +821 +1908114 +189813 +383112 +1786230 +1763643 +212564 +1525290 +2428149 +1997344 +1107773 +362300 +2446371 +1379660 +2109717 +288580 +990918 +362299 +1207223 +306402 +73638 +2629460 +949603 +474109 +362281 +1135432 +474126 +2551973 +189798 +2849766 +332047 +189800 +1525284 +677637 +2446390 +1052243 +1666119 +1177214 +362297 +1525297 +1666118 +1525306 +1722442 +2428154 +1393003 +1525311 +1144096 +73656 +398150 +736837 +773482 +1144086 +773489 +2516316 +342125 +1760986 +754991 +297520 +2446383 +2744343 +1157446 +1607332 +2422304 +1722440 +1760988 +1177242 +2551970 +1132513 +2865064 +2849773 +2109725 +2551960 +1207226 +1760991 +773484 +1708153 +1822454 +362288 +1207253 +1786224 +1207251 +2446392 +2749783 +440578 +745999 +1132515 +1049820 +1848049 +2428151 +1249764 +1144069 +1076630 +1666123 +1769743 +677633 +1157438 +2741759 +857 +1822458 +189845 +677668 +2109754 +2109789 +2551983 +2744345 +2109778 +2446423 +1177269 +1061206 +440604 +1177263 +2551993 +73669 +1393020 +400752 +2629474 +2508929 +898959 +1207278 +1685547 +886 +1685550 +1822462 +1659143 +2446428 +1525335 +1052253 +1525345 +1157449 +1107782 +2109752 +73675 +1135470 +2422309 +871 +457725 +1082432 +2446429 +1379668 +383116 +2109736 +440586 +1482217 +1848087 +1316130 +1061218 +2109765 +2428170 +2428183 +2629467 +189847 +1249772 +1848090 +1786290 +189846 +189836 +858 +1144104 +1769760 +506812 +506805 +2311427 +2030084 +362314 +2629470 +2446410 +496477 +2109758 +1786294 +2242717 +1786283 +506827 +1196933 +1525320 +36275 +1107784 +949637 +1177283 +1525360 +677661 +1525332 +1316128 +2551987 +1955887 +1685556 +440591 +202132 +883 +1177286 +1848080 +1411578 +1177288 +2030089 +1135457 +440603 +1769761 +2109786 +677667 +2286410 +773495 +677657 +1786306 +73678 +1144103 +2744346 +506809 +2286406 +506816 +189849 +2744354 +1107795 +440613 +1309809 +1525371 +306405 +842707 +1822482 +1177297 +1235558 +1525379 +2768067 +1525373 +432497 +1235554 +934207 +288591 +2706504 +474136 +1196957 +1196945 +1763657 +1385218 +440624 +1769772 +2519204 +2109811 +36286 +1316133 +457761 +2768076 +440620 +842692 +750419 +1121363 +2734123 +1100556 +1070750 +1177300 +1701858 +1196953 +589060 +229242 +2072640 +949640 +506831 +2072637 +2728752 +2428193 +1848109 +677670 +1487068 +1822492 +2109797 +1822490 +2728751 +288587 +2768068 +1842882 +2446442 +909812 +2734113 +842706 +127217 +36278 +773523 +2311431 +1196943 +1086055 +1207286 +1174170 +1786320 +2768074 +440619 +773520 +2768097 +2629477 +1933361 +2683732 +2744358 +1769777 +2109805 +2734112 +2109795 +2010327 +842701 +2109806 +1897896 +1822476 +127224 +1722455 +2028057 +2823834 +2823792 +2030098 +36304 +1316136 +2823823 +2823845 +36305 +2823828 +2823790 +357253 +1487075 +1482224 +2823840 +1487072 +2768098 +1342115 +2823796 +2823825 +2823817 +1482225 +842715 +1049829 +2823813 +1819027 +36315 +2823837 +842712 +36300 +1100557 +229250 +1488843 +842720 +1207297 +895 +1049830 +357255 +36323 +202139 +398160 +2072645 +2865078 +2768153 +1666137 +751242 +1088861 +400763 +2768152 +1140907 +909821 +2768134 +400762 +2446452 +383119 +2109820 +2768111 +212603 +1786328 +474138 +2020614 +1819028 +457773 +751243 +189858 +474144 +949654 +1786331 +949644 +474142 +746002 +1763663 +2370629 +842721 +1061234 +2823857 +2768123 +2552004 +1316137 +1196962 +2823853 +1135485 +2768120 +1061235 +2768119 +1761000 +36319 +2768142 +2823852 +1822497 +2865095 +1607343 +2768108 +1763660 +677676 +440640 +2552006 +362323 +755001 +1848134 +2286435 +474148 +773532 +371526 +1088872 +589100 +506844 +1309811 +288606 +706636 +288596 +288610 +440664 +1525429 +412559 +229281 +1207304 +73702 +2422315 +73703 +2370646 +127291 +127293 +2519214 +288616 +1316143 +909831 +371520 +1207319 +36407 +36396 +1488855 +127246 +1052273 +337268 +288598 +371539 +1708166 +36347 +1052277 +229294 +457829 +440646 +589090 +1997125 +432505 +2688690 +474160 +212607 +306439 +212630 +2370664 +212638 +212645 +189869 +412558 +589096 +1174185 +127302 +440663 +1235578 +1822503 +1848132 +212629 +2427313 +337276 +485671 +2028062 +362340 +36356 +1525423 +1088871 +337267 +1088865 +36335 +440661 +1207306 +288609 +288601 +1235574 +36358 +337269 +1848130 +589083 +1525400 +337275 +1848119 +2629484 +1140910 +127295 +457832 +1058005 +36337 +1525410 +909838 +202150 +2286438 +36350 +36348 +371541 +189872 +127262 +740423 +1377043 +212640 +2427315 +909840 +1235568 +306451 +1525441 +362335 +2370653 +36366 +36373 +440652 +229278 +127250 +2683733 +1761002 +2370660 +1377045 +1488851 +127317 +371602 +474168 +485793 +288686 +306455 +457888 +261137 +288657 +36518 +127359 +261152 +288669 +485832 +457964 +288637 +36448 +485682 +371684 +297541 +457950 +457891 +371552 +371612 +842755 +706642 +1260607 +229347 +842756 +589117 +589120 +432537 +357312 +261114 +127347 +306506 +357306 +371656 +371674 +371653 +357279 +412562 +1165681 +261102 +36443 +1165682 +412563 +288621 +371562 +485700 +485751 +750428 +288682 +485728 +1260606 +589116 +371669 +306543 +2443356 +371561 +261117 +485708 +127332 +485739 +127335 +229341 +371644 +485688 +371675 +306473 +398171 +261076 +457915 +589145 +306510 +261081 +337301 +261139 +261132 +371682 +288626 +457947 +288640 +306466 +306551 +485772 +36463 +706641 +337299 +432560 +1235583 +127320 +485788 +432526 +663737 +229356 +127314 +306495 +485717 +457916 +457913 +371544 +261122 +371608 +412579 +357299 +485716 +261096 +485801 +229323 +288664 +261074 +261172 +474184 +474183 +371643 +485769 +306531 +432528 +371563 +36436 +2768163 +485709 +2768167 +1701869 +457850 +36444 +485816 +36477 +1165685 +485678 +229337 +306558 +485723 +371593 +474167 +485762 +485686 +1933366 +127415 +387832 +458006 +383126 +261248 +457996 +306584 +458013 +1908153 +2629487 +418181 +485869 +306583 +261255 +371694 +387831 +418151 +261263 +306571 +337309 +496519 +496490 +261265 +36537 +202166 +387797 +127400 +362348 +127398 +1121368 +496480 +261189 +485841 +36564 +387823 +229407 +663742 +229404 +589146 +229412 +127401 +261250 +127413 +127428 +2508938 +485864 +127380 +306577 +229400 +383128 +261210 +306591 +496514 +718923 +1165698 +371690 +1811001 +496515 +261261 +842763 +261203 +1082436 +261254 +418157 +387829 +261183 +371693 +1082440 +589151 +589162 +418164 +371686 +36558 +485871 +412605 +706646 +387825 +663743 +306594 +371688 +127419 +261204 +496486 +909875 +2286459 +189893 +1144133 +1144124 +398185 +1488874 +73736 +1207343 +2030107 +990938 +929 +2427320 +842773 +458021 +1822525 +1177338 +432574 +212667 +1769804 +2370690 +773547 +941 +127435 +2286461 +2422321 +1822512 +1207324 +909871 +398187 +1144140 +2370679 +1207355 +288710 +909873 +506869 +2519231 +398188 +2370685 +1342118 +440693 +773557 +1848158 +1207362 +2519222 +589173 +1848146 +1061238 +1235597 +440690 +909886 +1848197 +1488867 +1822523 +1100580 +1157467 +773544 +297543 +909856 +1761004 +1848156 +362357 +127453 +326210 +589168 +898974 +1819033 +127443 +1058015 +909846 +1769830 +229423 +2370684 +1782802 +2446495 +2072648 +1769827 +337314 +898975 +73721 +1088888 +746006 +909865 +2629498 +202168 +842768 +229422 +1848204 +1769818 +2734129 +2552018 +773549 +425833 +1525453 +1049839 +2370665 +2370676 +1177357 +229419 +1488869 +127434 +909887 +1177341 +458030 +773560 +842764 +746010 +1822526 +425813 +1848166 +718927 +332060 +36568 +1848199 +1049838 +2370668 +189883 +189882 +2519224 +474207 +842775 +2370686 +212676 +2030109 +127446 +398189 +2030108 +1235596 +337315 +1100582 +1488864 +288712 +2734132 +1207374 +1908165 +842800 +288721 +1769842 +773579 +842782 +1088893 +1786354 +990955 +2744364 +1607379 +589178 +2428219 +1822535 +485874 +1782803 +1822562 +1177364 +1763687 +1386395 +1140925 +1107802 +1822541 +949694 +909903 +2286480 +400780 +1058020 +1393034 +2010332 +332061 +383135 +440731 +1525462 +425838 +1235607 +1822561 +440713 +1061247 +2706513 +73751 +1393033 +1132527 +1052292 +1157474 +474221 +2109831 +2370698 +1135507 +773572 +2446548 +1786359 +2109829 +425843 +1525470 +1769851 +2370700 +1107800 +909894 +1782804 +1908161 +362365 +1488892 +1088890 +1061244 +1488883 +990953 +2428222 +1207380 +440738 +440715 +1196985 +773580 +949679 +1088892 +1177372 +440709 +990951 +1061243 +398201 +1763680 +2446542 +2552032 +202174 +1769850 +1165703 +2443360 +2446535 +458037 +1070761 +1997128 +748401 +934220 +1135505 +408314 +1848235 +212680 +842798 +990950 +36614 +127461 +1088891 +1848213 +2446511 +2446540 +2728757 +440729 +1260668 +261637 +589517 +388038 +36856 +1811059 +496691 +1165732 +127692 +418592 +458145 +388149 +127742 +458076 +261442 +496714 +750503 +740442 +229756 +589344 +418601 +1165794 +261494 +486005 +1701927 +589520 +36716 +388066 +432597 +2508998 +2446567 +1082502 +663773 +2509037 +371872 +458143 +458179 +387877 +262057 +262083 +388179 +1811056 +589338 +412691 +485907 +412700 +261989 +486053 +261796 +398220 +1701975 +357377 +387964 +1165805 +306692 +229690 +589422 +261925 +589443 +486059 +337374 +589283 +306788 +1157490 +36756 +229499 +261409 +486098 +418442 +458097 +337431 +2759471 +388172 +486033 +261924 +706716 +262021 +486192 +1685588 +229674 +1811013 +418292 +127698 +485915 +418525 +496649 +412751 +1157478 +2759464 +388193 +288801 +229651 +677708 +127664 +418557 +229528 +229747 +1933384 +261870 +262256 +496644 +261513 +412644 +127660 +127869 +1811068 +371859 +261838 +458237 +496645 +229601 +485972 +229664 +127794 +127704 +2446570 +261432 +261526 +589466 +1933394 +371904 +1082457 +1701978 +306699 +261954 +371785 +496604 +261617 +387888 +458251 +418420 +229717 +36803 +474249 +589418 +1260671 +2509104 +496812 +388047 +663783 +127605 +412734 +1082492 +127532 +306616 +262262 +1811079 +127767 +418477 +2749812 +2759404 +589540 +589462 +1786360 +387886 +589491 +1082536 +589262 +261626 +306808 +262012 +261372 +337343 +337413 +229495 +706719 +388091 +36621 +418326 +306711 +229719 +1165823 +486200 +127696 +36753 +750499 +496670 +229710 +486126 +418635 +589222 +458223 +357350 +706725 +306825 +371920 +496765 +306705 +485905 +496528 +418356 +229703 +589485 +127511 +261546 +418455 +262068 +418251 +36804 +663900 +458095 +663891 +2508978 +262009 +261613 +589214 +589471 +496887 +458124 +1811018 +412830 +496810 +383139 +486181 +663859 +418275 +663825 +486120 +36776 +261708 +262138 +418315 +2446577 +261985 +412844 +261492 +751255 +36825 +306680 +740446 +127629 +1701923 +36738 +718932 +306624 +458107 +127569 +36819 +229605 +357366 +371769 +663843 +288731 +261457 +261975 +2446584 +261493 +2509109 +337381 +418390 +36823 +663760 +486168 +371811 +387943 +73754 +337400 +1701954 +1165819 +387885 +418523 +261943 +127853 +127666 +36731 +589375 +371982 +589270 +127753 +412620 +127785 +458207 +1260673 +127565 +262055 +1685573 +387995 +261813 +337422 +750491 +486034 +458230 +418273 +371846 +496715 +2508950 +474239 +262188 +1157489 +706694 +2509074 +486060 +458274 +36697 +2759440 +306841 +1933430 +261306 +202190 +127482 +706682 +387998 +412835 +706748 +261487 +127525 +262273 +357391 +261831 +388108 +262046 +1165822 +262104 +357353 +663784 +589393 +412805 +2759430 +262063 +371918 +1070762 +229755 +1165769 +2446555 +496883 +261627 +706744 +229749 +127551 +229519 +589339 +412650 +1811011 +261314 +2629515 +432614 +1121371 +36829 +262102 +486090 +663871 +127484 +36900 +418226 +387847 +1165784 +418203 +362389 +127654 +261857 +261995 +261755 +127612 +127556 +589539 +1701958 +432638 +261879 +2509062 +127651 +418583 +496618 +262218 +262168 +1082469 +706713 +2446593 +418212 +261447 +1165734 +2509061 +387911 +371941 +1811040 +486008 +371913 +496598 +412712 +261598 +202209 +1260661 +418371 +387869 +458133 +496530 +127774 +663813 +418529 +337429 +589468 +261496 +2509022 +1811083 +496681 +418577 +337417 +412849 +412749 +663886 +337366 +589441 +306667 +127766 +306687 +262093 +371894 +496840 +127533 +418567 +306824 +127625 +127582 +261397 +229477 +36667 +388312 +202186 +262101 +706732 +398208 +337411 +262180 +412657 +706747 +202226 +458209 +261343 +371836 +412772 +418568 +1685582 +1249785 +486009 +36768 +496748 +486107 +229642 +371814 +261406 +229611 +229594 +229602 +388209 +261286 +474251 +1908168 +1082523 +1685593 +262224 +589423 +458148 +371899 +418436 +474241 +496909 +418466 +458175 +371783 +1701917 +388048 +229624 +486114 +750489 +261287 +262116 +371963 +261688 +127835 +485981 +458269 +496837 +388088 +418542 +388225 +127866 +2509012 +261611 +418201 +371869 +589521 +706699 +371929 +36682 +388240 +496865 +261421 +474247 +262239 +388135 +398233 +961 +496568 +127738 +261323 +288761 +388099 +589202 +485923 +1165779 +36668 +486207 +288750 +1165753 +496760 +663853 +127720 +496605 +496686 +262322 +486038 +2509058 +229713 +262238 +388206 +412789 +261939 +706655 +418332 +486054 +127464 +261354 +589409 +388243 +418522 +418204 +2508971 +418248 +2446560 +261455 +388266 +127542 +388022 +496753 +1260641 +486021 +2508951 +261808 +36633 +229766 +432601 +2759451 +371861 +458205 +506885 +2509005 +1701943 +371942 +418469 +262245 +2508958 +418373 +261751 +371919 +342161 +458123 +496641 +127570 +496672 +750439 +388247 +1082480 +496893 +388300 +229510 +261399 +261910 +496589 +202203 +486026 +261906 +371888 +261738 +288812 +496591 +371739 +36720 +1260647 +388063 +418288 +229626 +412735 +418272 +388139 +589228 +418300 +36777 +388013 +229662 +589483 +229472 +418267 +387979 +496742 +229681 +388015 +262015 +412699 +127642 +261445 +261986 +589301 +229632 +1082461 +418352 +458174 +1165792 +388037 +127804 +262146 +261538 +2446575 +261992 +2759408 +589271 +383148 +458183 +432603 +388074 +261467 +418462 +127519 +261948 +261540 +418574 +958 +663870 +412791 +589327 +306809 +261458 +486218 +262004 +383142 +589493 +261330 +387939 +418368 +229483 +408320 +418467 +261980 +485929 +387891 +1701973 +127868 +418232 +261341 +2508962 +388189 +458080 +261552 +2509050 +229599 +750453 +496722 +1082465 +288818 +496713 +1933405 +1933376 +261615 +388198 +229618 +1811020 +412653 +261537 +458099 +261984 +229577 +589287 +589459 +2509024 +1811021 +418530 +589417 +418208 +127473 +36826 +496547 +388156 +663895 +589535 +432599 +418318 +127672 +261777 +36827 +458204 +458294 +288732 +229675 +262199 +458159 +36670 +418413 +388049 +337408 +371937 +127550 +261841 +337359 +1082490 +371969 +458221 +261747 +306738 +383141 +36637 +2759455 +418322 +288786 +496596 +202218 +388294 +127478 +1811046 +229615 +329003 +2509025 +496866 +496543 +288726 +229653 +342145 +387894 +261704 +412668 +306690 +337424 +261643 +750449 +1933434 +2370709 +1822571 +357411 +2020627 +400795 +432665 +2446630 +1786375 +440761 +2446609 +1140931 +371993 +1316156 +2286488 +1235627 +371989 +1140929 +400790 +2749840 +2552046 +474256 +398239 +2446664 +2446654 +1722487 +706756 +297550 +2509121 +1786380 +342171 +2443365 +458370 +1722482 +1374948 +342163 +740452 +362402 +2446652 +2446600 +189908 +706760 +1488895 +1908195 +2446623 +36942 +1848254 +2552051 +1061254 +1207395 +432658 +740454 +229784 +1842891 +229798 +2446648 +589575 +1140928 +2744375 +2446640 +1769861 +1525495 +1400590 +398236 +2428233 +458315 +1393036 +1157493 +288833 +458334 +677713 +1848276 +1107809 +2759474 +1811096 +1786388 +2749831 +589561 +440789 +2629535 +2446628 +284308 +496914 +1135513 +1157495 +400793 +1144150 +229786 +842818 +2629546 +1607389 +189909 +412866 +2013932 +2696595 +740456 +1488894 +1722481 +1140933 +2428231 +2446622 +1848286 +458362 +229797 +1316152 +1347334 +2446625 +1207383 +412867 +1309824 +288843 +2749835 +2446606 +262340 +2013926 +1177381 +1525496 +440749 +2509111 +383157 +288832 +2427326 +1165879 +1235641 +1058027 +2509128 +36965 +1260691 +2446698 +1933439 +2109853 +990969 +1070771 +2446691 +2020634 +589584 +1997359 +189912 +706762 +1070768 +2629559 +1107814 +2109859 +1157500 +229804 +677717 +1397388 +2072674 +842834 +73779 +1385225 +383170 +740458 +474272 +2629566 +2865112 +1786417 +1061259 +2849783 +2446694 +2286491 +949709 +2446685 +1908200 +398255 +229803 +2446673 +458387 +746020 +2446737 +1488916 +189979 +73797 +1235645 +189962 +1052300 +1987114 +1135521 +2109871 +2446740 +1848297 +677726 +773608 +1908225 +2835914 +189975 +1144168 +1769886 +127906 +1061266 +2446759 +1786438 +773647 +440817 +773653 +362411 +1411626 +2311468 +978 +189945 +506931 +2109863 +2446755 +949724 +1107843 +1525540 +1525544 +2446751 +1070779 +2311463 +1316163 +1525560 +73840 +2552075 +1316171 +2311462 +342180 +1177403 +189937 +1267169 +773603 +1088908 +2370723 +288852 +1135519 +440813 +1157518 +189928 +2109869 +2629572 +1488904 +1249801 +1848316 +1908214 +1786446 +1144165 +73786 +2629569 +1088904 +1848331 +2446742 +1848341 +73794 +1525543 +1666167 +1207437 +1525573 +2768188 +1157513 +1525529 +1121377 +1848317 +1107820 +1908218 +288849 +2109883 +2446721 +1722510 +2552086 +189957 +773651 +1107828 +189917 +1525534 +506929 +1061284 +1488901 +773652 +189916 +1411613 +2552076 +2072677 +2072683 +1249807 +1061275 +2519255 +842839 +2446739 +773605 +2768207 +677729 +440814 +1342123 +1157506 +949712 +73784 +506924 +1088903 +1134114 +288854 +425863 +1488936 +73811 +1848314 +288856 +1061265 +189926 +1525567 +1049847 +1666168 +73843 +1107845 +2446738 +1997364 +2768230 +1207448 +2446713 +1769902 +2422336 +773624 +1411628 +1045483 +2446717 +2446741 +1144167 +909939 +2446712 +1045484 +2835915 +2311491 +1342124 +1708193 +2446800 +1049849 +297561 +909967 +1822606 +1049850 +773679 +1848349 +496926 +496938 +718946 +2629597 +1708197 +1786480 +212724 +2109900 +2013946 +1659174 +1207487 +342189 +418669 +2020641 +2552111 +1316180 +2629622 +1908256 +949745 +496936 +1848376 +73850 +1377053 +1525601 +1076668 +1822608 +2311502 +909951 +1157529 +362421 +1786492 +949734 +2109906 +408331 +212722 +2509133 +73860 +718948 +1970794 +1197011 +1207468 +1132533 +1822600 +1786515 +1666179 +212720 +1076642 +2629625 +1666177 +2509132 +2749868 +1933443 +2446777 +2552104 +474302 +1970793 +1207464 +1076669 +2552090 +1786513 +1347347 +1786497 +2552108 +1377055 +1997369 +1822609 +1076648 +1170516 +2013943 +2109917 +342191 +2749120 +773670 +718941 +1088922 +2446808 +949748 +909961 +1848369 +1525605 +2768241 +990975 +506968 +474310 +2446782 +1076639 +383194 +1786505 +342193 +1309834 +2446806 +2552093 +2552103 +2428260 +1076654 +1708192 +2446837 +1061306 +1207521 +1933446 +2749881 +372000 +1786567 +1525610 +1249831 +2552129 +1177449 +1070788 +400803 +1157538 +1377056 +1811115 +1786575 +2683739 +440844 +2446848 +1207526 +2028069 +1769922 +73863 +1666183 +353313 +440824 +1786545 +189986 +1908289 +1411640 +2026176 +1316186 +2552117 +1056 +1177436 +949767 +2446897 +1786525 +440852 +73866 +288859 +1908310 +2446863 +458397 +1207508 +229815 +2026191 +1050 +1121381 +1680883 +1177429 +1165890 +306863 +1055 +1132535 +189985 +1786522 +909984 +2446894 +2749879 +2428277 +1061297 +2026163 +1908315 +506979 +1249819 +1070785 +1848392 +1045491 +229814 +2629636 +1177439 +1107862 +2446889 +73867 +1848396 +1786579 +1411644 +440829 +1207503 +1177437 +2446838 +1207518 +2026175 +1207493 +1822612 +1786534 +1157541 +474350 +1397397 +1249838 +212784 +474325 +1347362 +1848428 +1811116 +1786590 +362439 +1393054 +1848399 +212801 +2013955 +1144196 +773705 +1177458 +2446917 +2744404 +1170519 +2428282 +507035 +1848427 +648842 +2446916 +2552173 +1908340 +2552134 +1134117 +1316190 +1088930 +1066 +1786622 +2552135 +677749 +297574 +383200 +2552161 +2749891 +297568 +297581 +212798 +474335 +398261 +2013959 +212782 +648841 +648846 +1786594 +2768282 +751271 +740475 +1769939 +2552159 +362442 +718962 +1174209 +1908349 +1144201 +1908328 +740476 +1249843 +2446935 +2629686 +1177453 +425892 +2020667 +284322 +1065 +496940 +474329 +1249841 +1107869 +1207550 +1786595 +2623121 +2629667 +1207543 +2446918 +1267176 +1786586 +2552158 +746028 +2865124 +474346 +2446948 +2759487 +2428286 +2428298 +1908335 +212796 +1786620 +773698 +2552170 +1157574 +288864 +1207570 +1908338 +1379687 +2446927 +1207579 +1786606 +1848411 +2519262 +1701999 +408337 +1132539 +362458 +2428310 +357436 +746031 +1722548 +1207596 +1088934 +2629698 +1049854 +1786648 +949807 +1411647 +909995 +1207589 +73898 +949802 +2447012 +212804 +1249849 +1157606 +2629702 +1207599 +773720 +2629695 +1157633 +909996 +1769945 +2446974 +1076 +1157625 +372009 +1386402 +1525645 +1207593 +394485 +383208 +1848449 +2629699 +458410 +2446987 +1061315 +1157599 +507042 +2446992 +2552174 +1207592 +2428307 +1411646 +2446977 +740486 +1157624 +1107873 +2311521 +1848439 +1848441 +1157619 +1848434 +1786631 +1347364 +2013965 +432678 +1157600 +2109941 +2242774 +127926 +288868 +306886 +440893 +229888 +432685 +127943 +458447 +425907 +1666205 +1135552 +1144221 +1722555 +750528 +372014 +329025 +934242 +1140971 +1140968 +458444 +1058040 +1364758 +2028082 +1140962 +2242759 +458445 +37020 +474371 +1177481 +1177484 +663920 +842864 +2242749 +1049855 +1100601 +127969 +2109933 +1207603 +1177483 +842859 +1666207 +2242777 +1235675 +2286507 +127933 +1140963 +1848456 +2013969 +1177479 +706770 +127942 +1607411 +2242772 +36995 +1070814 +1607414 +1680895 +400818 +2629705 +1058045 +1300249 +1061323 +2109929 +706768 +1364757 +1135547 +2242747 +37008 +398277 +329018 +706767 +842862 +398274 +910014 +229879 +1822638 +357445 +2109935 +1666208 +388321 +1070817 +1170526 +1207610 +1197030 +202250 +127957 +1085 +2019778 +1659181 +440891 +1235674 +1084 +1235677 +306875 +1070819 +1267184 +1525669 +1722562 +2768305 +2768296 +2629712 +73918 +2823883 +2865158 +2109946 +458455 +1822639 +2823882 +2768294 +507057 +2823915 +1525666 +2865145 +288879 +408343 +2629711 +2823905 +2865148 +73919 +1207618 +507049 +2823909 +357457 +1082567 +2835940 +2865184 +2865151 +507051 +212825 +2768307 +288878 +1848464 +262365 +2013975 +1144238 +1488990 +2072704 +1680907 +1786688 +1411655 +842872 +2072708 +474386 +37038 +1207649 +2629717 +507069 +2447083 +2447096 +1100 +1157641 +1666226 +1076704 +1267192 +332075 +1267196 +2428323 +1763708 +2311530 +2552205 +297593 +2273747 +910029 +1113 +1666219 +773734 +1786669 +1722592 +2629732 +1135570 +412887 +1525674 +2447073 +1822642 +1761023 +2447110 +1488992 +740494 +1267199 +1153107 +2552186 +2447050 +2516337 +507086 +2519273 +2552185 +2552208 +1955895 +1786695 +1092 +2003602 +2519272 +1761022 +718985 +1970805 +1177518 +2003603 +2509153 +2552201 +1207625 +1488981 +342212 +1316197 +1094 +2427330 +229896 +2242781 +1607420 +2447070 +2447077 +1722584 +1822641 +1786678 +1400596 +1997381 +934246 +2030132 +2311529 +507068 +736880 +37049 +1488973 +1177517 +1722590 +1786672 +288882 +1267205 +1177515 +1666236 +2311544 +2030151 +262381 +2311542 +507088 +2447063 +1761021 +2443377 +212828 +2447069 +1207654 +1377060 +589614 +1607424 +1769970 +1722574 +2286510 +1525680 +1177496 +37034 +1908382 +458457 +1207624 +990998 +1316198 +412888 +740493 +507072 +1822667 +1316200 +2109967 +362471 +2552219 +2311550 +1207660 +2509162 +1105 +949820 +229918 +1786666 +1144243 +1207642 +1135563 +1157639 +1207691 +2447159 +991012 +1249881 +1061342 +2749910 +474387 +1177549 +1786700 +2519281 +2519289 +362483 +1666247 +1908439 +1685633 +1170532 +1347372 +1061336 +2629741 +2447134 +910033 +746035 +1249883 +2749911 +1157657 +1525720 +2447119 +842882 +1157648 +1207677 +458474 +1761025 +1116 +1049859 +1082572 +1249882 +1933451 +2447123 +1811126 +740505 +73945 +1607427 +507136 +1316215 +1769983 +288886 +1197056 +2519279 +2447151 +1908440 +2447152 +400827 +440937 +2749126 +1107891 +949832 +677786 +440939 +2013977 +2447140 +1525708 +2013978 +458475 +1157658 +2013985 +1135575 +1124 +212847 +1088941 +1685636 +2242791 +37068 +1786738 +1393075 +383237 +2242793 +1107894 +1908430 +507141 +1908436 +2447177 +2447158 +412889 +1393073 +1761026 +2110005 +2629738 +1177531 +1316207 +1177530 +2749917 +2741781 +910035 +1786744 +458464 +2447137 +507124 +1970816 +1722609 +2509166 +1267209 +910032 +507131 +1129 +1908402 +332077 +1908418 +2447165 +1157653 +1135572 +507106 +212852 +677789 +1525700 +1525699 +1061351 +2447126 +1722610 +2020704 +746036 +1157662 +1666250 +432691 +190014 +2741782 +1061361 +1177582 +899020 +2734139 +1082576 +706777 +677795 +1819063 +910043 +2552246 +1135590 +1848507 +507180 +1121402 +1525723 +2447194 +496954 +1076713 +1316222 +398286 +1153 +949839 +474397 +2422374 +507172 +1249892 +73956 +2072722 +1144266 +2286521 +1933453 +991018 +1525733 +949851 +1908458 +1786794 +1786761 +773775 +2749921 +1076715 +1088952 +418705 +1769998 +2519293 +388326 +2428365 +1769985 +677793 +1177583 +1207711 +418686 +1207727 +1140984 +1848520 +383246 +229925 +496961 +2110047 +1786786 +2030158 +1997148 +418695 +2422372 +2428362 +2427335 +1082592 +2242799 +2428355 +202262 +1121401 +408347 +342239 +1316221 +1157678 +342228 +1177578 +1786760 +507187 +342236 +418702 +1316219 +746037 +991016 +1607429 +1722618 +1908454 +773805 +2741789 +2519304 +2242796 +2447247 +773780 +949842 +1100610 +2447197 +73966 +2509168 +2447221 +1607431 +2422370 +1061362 +342234 +418700 +2422378 +288888 +1786757 +1082575 +991015 +1107942 +2552282 +127996 +496966 +2013989 +190044 +1182 +2629814 +2286523 +2428372 +1377063 +2447341 +2552253 +1177597 +2447313 +2028092 +474405 +1525769 +212860 +2447269 +1132551 +1100611 +1908483 +1770017 +2552300 +1848544 +2072732 +1822694 +2428377 +2273751 +229928 +1316228 +2286522 +1207787 +1165922 +2629804 +458484 +2020714 +288902 +1908479 +2865186 +128001 +1908474 +842886 +1070841 +1207752 +589634 +1997425 +1207742 +1386409 +1153110 +2447260 +1848547 +2447273 +2552308 +2629797 +842888 +2447322 +1061369 +1379694 +1489026 +2370760 +2552261 +2447267 +1708214 +507201 +1822691 +306908 +1249901 +2072730 +440965 +1178 +1997395 +1070837 +73977 +2447301 +1061372 +2552269 +677822 +1607437 +297604 +1207773 +2020719 +1107927 +440970 +2849794 +2010366 +1411672 +1180 +2370767 +297600 +949857 +1659188 +2020713 +474411 +1848559 +2629834 +1249898 +2072747 +1607436 +2552259 +2552276 +2447284 +2629841 +2629822 +1070833 +589638 +2428392 +589646 +2629832 +2552279 +1070834 +2552283 +677826 +2552263 +212859 +458494 +1377064 +1235738 +2072749 +1819068 +288898 +1140993 +2447326 +2629823 +1997401 +507189 +229931 +127991 +1207767 +2020715 +1997397 +458488 +2072739 +73973 +1174227 +1207740 +2447266 +458483 +229927 +1848564 +1822723 +2014008 +1316261 +1525785 +1207796 +1249911 +2835947 +1070846 +1107954 +1848581 +74005 +1061387 +1197080 +2629862 +740523 +2447351 +1207802 +440987 +1770029 +1157700 +1821240 +1393093 +2286531 +1207793 +1107958 +2865245 +1933456 +1070843 +425933 +1848580 +949869 +2422389 +1267233 +2759500 +1397426 +1393087 +2552311 +1411681 +408353 +1763731 +2010375 +474415 +2552313 +2749934 +212882 +2447386 +2427340 +2447365 +773828 +342243 +1132554 +1822712 +2865210 +1397429 +2019787 +1786848 +507239 +2741797 +2020720 +1722625 +1107960 +2110104 +1842903 +1052336 +2010382 +1088969 +1107953 +1267226 +1848584 +1722637 +507244 +2519323 +1070848 +1411687 +1132553 +718995 +2110122 +2865227 +1770028 +2729668 +1848579 +2552320 +2447373 +128029 +2509181 +2428396 +507242 +718996 +1722642 +1822703 +2865246 +1316262 +1070842 +212881 +1177614 +751289 +773822 +2865253 +2741799 +73998 +362504 +2427341 +362508 +663935 +1666262 +2509184 +1970826 +2744440 +1761038 +1489032 +1821241 +1177616 +507222 +440994 +2110118 +1811135 +474414 +1897915 +1207791 +2741800 +1061385 +2749939 +1391644 +1400602 +1525782 +1316250 +1107957 +1397428 +1786838 +2629861 +2865235 +2629866 +1135607 +74025 +1218 +1848615 +1811158 +2823916 +408358 +2370785 +910080 +507276 +1848624 +1411699 +2509189 +2428408 +2734144 +589670 +1908528 +2447503 +1908511 +2849810 +1685668 +1411698 +2447580 +2447557 +74045 +400853 +2447463 +357468 +128032 +2749964 +1782821 +2552330 +1786913 +2072781 +2428406 +74016 +949928 +2447479 +2509203 +2072756 +949899 +507285 +2629932 +1036717 +1489034 +1377073 +2739070 +345476 +2447452 +425944 +1706726 +2629934 +74050 +842905 +1908504 +2552361 +400840 +748429 +1770056 +1786891 +2835964 +2447470 +1512775 +1207845 +2552326 +2443391 +1664656 +2447484 +2110129 +2629909 +2629899 +2349118 +1848636 +1177632 +1819080 +949891 +2447447 +1088975 +1525842 +507268 +1786874 +2311581 +342245 +1249921 +949922 +128046 +1525818 +2447412 +74037 +1525817 +1897920 +2629891 +74052 +1786919 +2370786 +2447555 +1607445 +1786915 +1786907 +949901 +412897 +1411696 +2865263 +1908516 +400854 +2349120 +589669 +2629877 +212903 +949918 +2509195 +372037 +412908 +1908499 +1347389 +1235763 +773840 +1174235 +507287 +2447408 +1061413 +2447411 +383255 +412906 +2447579 +1811153 +2835959 +1786900 +458512 +1933459 +949879 +2749967 +1525816 +1455887 +1177635 +1786903 +2629922 +1786935 +1786881 +74014 +412899 +910071 +949886 +507291 +1786936 +949898 +1235768 +1170541 +1061397 +2311592 +2629890 +773851 +991028 +991035 +1132560 +1786940 +408362 +2706532 +441000 +1525830 +2411085 +421216 +2629889 +2447533 +212899 +1204 +1786882 +1811150 +1512773 +507294 +949906 +1397434 +2447545 +1207831 +1708221 +1786855 +1786871 +1770047 +1379713 +899040 +1197090 +1249915 +229935 +1525813 +1207823 +2552335 +949919 +1786884 +1706725 +1786876 +441025 +2447446 +2768329 +1786909 +2447523 +441013 +2355595 +949893 +2629923 +719001 +2110128 +2749962 +1897923 +1786934 +949917 +2768325 +1144305 +474440 +1235771 +1157711 +1058062 +1052344 +326226 +2020735 +1397437 +2552324 +1052343 +441015 +1316284 +1208 +1645848 +2447679 +202278 +342258 +507305 +2447725 +229949 +1848684 +1235780 +2629973 +2110139 +2014030 +190069 +2629970 +1157747 +1316308 +677876 +842918 +1455889 +1685674 +2744456 +2447706 +1207875 +1070862 +1207862 +2110140 +507330 +1770066 +1235778 +332097 +1607454 +1157752 +1076746 +2428416 +1786993 +2428417 +1848690 +1525858 +74060 +2629977 +496974 +1525862 +507349 +1225 +1207855 +1132563 +229944 +1403093 +2696607 +1763739 +332088 +1970840 +748442 +128062 +949941 +229950 +441039 +1207877 +2683749 +2629956 +1316316 +342276 +74070 +1489055 +2014038 +128057 +2552378 +1088981 +1134141 +1249941 +2447643 +372040 +2311601 +1950162 +1379724 +425949 +910102 +326230 +1379738 +1786954 +1770065 +372042 +2110147 +190065 +991067 +212912 +2447677 +421228 +1347415 +2020744 +773878 +1811166 +332096 +1379732 +1970839 +1822740 +1763738 +2370799 +128067 +202275 +2110141 +1107996 +2768344 +2428424 +1707611 +2307651 +1267256 +1770088 +1379736 +507336 +1238 +2447697 +383260 +2509214 +1786974 +1300265 +2552422 +2749994 +342273 +1207879 +2552377 +1052353 +1786970 +1722648 +1153116 +1489067 +1763742 +2509212 +357469 +2552386 +589684 +212917 +1342142 +2014032 +773870 +1379720 +2447691 +949930 +212906 +1385242 +1197101 +421238 +842911 +507302 +1237 +949956 +345486 +1393105 +1706728 +1411711 +1260704 +2509233 +2447710 +342259 +1347409 +1177644 +1364767 +2447600 +1177643 +773855 +1685676 +2552405 +332092 +1987129 +400864 +74061 +1316302 +2447627 +229951 +1782824 +1157733 +677878 +991055 +372041 +2744453 +1377078 +842928 +2030174 +1787012 +212950 +1685734 +1207883 +1400612 +1061445 +1134154 +2552465 +1309 +2110189 +1235799 +1822754 +74115 +1666315 +190081 +1132569 +991078 +1207886 +1157788 +1134147 +1397464 +2110183 +2552458 +1141022 +1908595 +1411729 +1666313 +2629991 +190077 +1308 +1787075 +2552439 +950011 +2552474 +1135642 +1324 +2519333 +1076758 +326255 +2311634 +2020754 +2030187 +1275 +949986 +2768359 +2552459 +329034 +1328 +1052377 +949987 +950017 +1177665 +212953 +2420727 +2311611 +1685720 +74087 +2447788 +2835968 +1294 +1393110 +2020756 +1770123 +773897 +1525898 +2768355 +589697 +2447784 +755056 +1787033 +739597 +1157767 +1787090 +1525925 +2768403 +2286567 +2509236 +1666303 +74117 +128094 +2447793 +2447832 +1144328 +1811205 +1052369 +1379749 +74119 +1061438 +2447858 +1397473 +1334 +2110177 +1811203 +1157761 +1132572 +2280208 +1702024 +1970850 +1263 +1157755 +408380 +1770128 +950004 +1058067 +507367 +2447908 +677886 +773922 +2447916 +773930 +2447732 +1049870 +736892 +408372 +2552425 +1607477 +2072820 +2428485 +74121 +2110154 +1763759 +991082 +2629999 +677904 +1787070 +2280212 +1286 +247236 +1787052 +74123 +1144346 +2509248 +1908598 +2447792 +2509249 +2110179 +1763760 +212945 +212924 +507398 +2014053 +2744458 +1135669 +2100570 +1144389 +2509237 +474453 +773914 +37112 +1848700 +1280 +2420725 +1770117 +2447830 +1997436 +128097 +1144376 +2311619 +2447919 +1770104 +991076 +2519336 +2019793 +2242809 +332120 +2428457 +1787071 +949969 +1763755 +2420731 +2428479 +589694 +2443402 +2428454 +1144407 +1685710 +1787008 +2007966 +394503 +1997446 +2311628 +842939 +2447825 +1787128 +950031 +2447789 +1763756 +2072827 +949961 +1787025 +2691216 +906665 +2030180 +1787077 +1411736 +773921 +2447871 +1525888 +1763768 +842933 +2447836 +1157763 +1323 +1770098 +648867 +719009 +1070870 +1332 +1664659 +1157775 +2768358 +2110175 +1267258 +1134150 +1261 +2509250 +229965 +2552457 +1291 +1848699 +2009581 +1157760 +400887 +1235788 +326261 +1141027 +2630008 +1393115 +2552448 +677901 +74093 +1848711 +2768351 +2447920 +1763758 +949999 +2110184 +1908596 +1787043 +2447816 +677884 +773929 +1135634 +1702019 +1770113 +2509247 +1144420 +37107 +773919 +2552424 +37110 +1207898 +2311636 +1207887 +37114 +677898 +2552471 +1144378 +229957 +1607465 +2447913 +910116 +1135671 +421263 +212984 +2428538 +1525950 +408386 +1076766 +1411741 +332125 +1685747 +247241 +2448043 +1666335 +1144448 +1787179 +1411746 +1787184 +1144435 +2447964 +74193 +1685744 +1052380 +910168 +2849831 +1787221 +337526 +2447932 +400894 +1144429 +1361 +74185 +2447996 +1822759 +1052381 +1787185 +1525979 +1763818 +1397 +1052385 +1770175 +1782847 +1666337 +400929 +755084 +1997448 +1135710 +773950 +1787186 +1763812 +1144432 +326281 +1076769 +1770157 +1409 +1525946 +2428531 +37126 +842947 +2355601 +1389 +1346 +950051 +190096 +1157826 +1787193 +400906 +1525941 +1132579 +1134171 +2072852 +1822766 +2110205 +2311660 +1141048 +1049883 +74191 +2014059 +74164 +2311655 +441058 +1787182 +1049885 +2428544 +1525973 +1787139 +2552510 +1392 +2448037 +1144433 +441063 +2448035 +1811214 +507415 +2428546 +1135698 +2420741 +2447953 +2110202 +1525982 +773963 +1135722 +2849842 +1076763 +1770164 +1144457 +1052387 +1763811 +1666342 +1290854 +950055 +1770138 +2420749 +1207934 +408395 +1157825 +2552518 +128118 +229981 +1722660 +441054 +394513 +326272 +2835988 +1141044 +2311657 +773958 +2849847 +2768456 +128108 +2448012 +1666325 +1157829 +2447941 +342296 +748452 +991109 +2110201 +2110224 +2741392 +474459 +1144449 +394511 +1761054 +74182 +326268 +1770152 +326283 +74156 +2110209 +190101 +400893 +1787145 +2552493 +1455901 +748454 +950047 +408398 +1782843 +755080 +383263 +1351 +2552504 +441055 +1399 +1412 +2286592 +1177687 +2110223 +2447936 +408399 +2849845 +74172 +1076773 +2428513 +1076767 +2447991 +2428497 +1144453 +1343 +2552521 +2311665 +950134 +1440 +1607488 +247271 +213006 +991117 +74290 +1052416 +1722706 +1997471 +1607490 +2552616 +2630082 +589699 +2428558 +474490 +1411761 +1316334 +1025556 +719024 +1489098 +1607491 +1526070 +1170590 +1645854 +1722733 +1316362 +1411762 +1722721 +2630067 +950087 +736909 +2552562 +1207952 +677957 +474472 +1379771 +507428 +1848843 +910251 +1379765 +306920 +1089013 +2552543 +212986 +74284 +1908642 +1377088 +1970853 +1489104 +950128 +2448116 +1170595 +74197 +1451 +408406 +1061479 +262440 +950089 +1848828 +441081 +2623151 +774020 +1526072 +2003609 +2311686 +2630044 +1461 +342319 +1393121 +2370829 +1708229 +507423 +1411772 +74281 +910261 +950137 +2519340 +1207990 +2448048 +1770199 +1436 +2072908 +1489123 +1437 +1848797 +1379762 +950112 +507522 +507468 +507478 +441077 +774024 +408403 +2630089 +1997461 +2110255 +1249966 +1379787 +1463 +1132596 +1052415 +74291 +950143 +2448167 +1685772 +2448121 +507462 +2448067 +507491 +2110250 +507553 +1088998 +1848778 +1170603 +2630072 +2552595 +1848806 +1987132 +1316349 +297614 +1411804 +2311677 +1526066 +1526069 +2552635 +1666368 +1722674 +755096 +2552590 +2370811 +677999 +2311666 +74283 +1025545 +748458 +736906 +2279295 +1770195 +1052409 +1086073 +74266 +1489109 +342321 +2448139 +1025548 +1848754 +1464 +1512790 +507514 +774081 +1666401 +1997470 +1722703 +507457 +773978 +677975 +736908 +1822781 +2110245 +2448131 +1052413 +774030 +950109 +2630096 +1267267 +1666354 +773990 +262431 +1908614 +1908628 +2072922 +1526062 +383271 +2448102 +507434 +2030200 +1379788 +2110238 +212988 +1411808 +1379780 +1170604 +74229 +1235810 +247285 +2552563 +474496 +507538 +1108005 +2448104 +1157841 +1489107 +1526067 +2110294 +1411765 +128124 +2448150 +383278 +1207972 +755095 +899095 +1316366 +1489117 +2448086 +1411775 +74206 +1316346 +899089 +1848785 +1526083 +1397489 +2072918 +1666378 +2428554 +2630092 +1025571 +2072897 +2448148 +2355610 +212995 +507503 +1267287 +773998 +1089017 +1052406 +1848835 +1177730 +1170591 +1970868 +1207964 +1955929 +2448143 +1108006 +2744470 +1108011 +1052421 +1347469 +2448057 +2072883 +1089005 +719017 +507421 +677922 +774002 +2007967 +1197112 +2448082 +2110237 +1848768 +474484 +74238 +910232 +1908641 +2630064 +2552608 +1970859 +1052411 +950118 +1821250 +1526010 +412936 +1411778 +425960 +1526029 +755089 +74262 +1822776 +1526032 +2286616 +1997453 +2552619 +950106 +2072900 +74234 +1787225 +774003 +190111 +2552638 +1848798 +2750020 +906669 +408415 +1446 +1848853 +74294 +1157844 +1848800 +1489095 +1997464 +589702 +2110259 +2630079 +2552579 +1987135 +991118 +934275 +1157838 +1848854 +736903 +677941 +507502 +1377086 +1512791 +1411795 +1207982 +1177717 +2552580 +74196 +342315 +677936 +1249967 +262447 +1025566 +2072886 +648869 +1770189 +677932 +474464 +74241 +899078 +2552607 +247283 +1316344 +899079 +1379781 +2448084 +394515 +1411833 +2355615 +678040 +213037 +774151 +2696611 +774161 +1645866 +1685782 +1347508 +1309851 +1235814 +2552746 +2519404 +1400616 +1939992 +2286654 +678005 +1249996 +2696612 +1526119 +2734177 +2448199 +1526131 +507591 +1177757 +2110331 +2422399 +2056453 +2552713 +1300304 +1347517 +774172 +507628 +2072956 +2110343 +2683760 +2630176 +74343 +2072948 +2552674 +74372 +507620 +2696616 +394517 +2355631 +2448168 +2683753 +2428565 +1685779 +2552673 +2552689 +1347496 +1397508 +774130 +1955945 +774156 +1685812 +1300298 +1970887 +2370842 +1685800 +1685823 +1025579 +1267317 +2768483 +2370850 +1526094 +2110350 +2030205 +326304 +2448210 +74312 +991121 +1685781 +2750036 +1474 +507619 +1526164 +842971 +2280238 +1089019 +74358 +1495 +2552678 +950190 +2519391 +1526166 +1908690 +2110366 +128140 +1908665 +1061483 +950173 +1267331 +1970875 +441100 +74365 +2448235 +1787266 +2552743 +1316405 +1347473 +2744475 +1908680 +1722752 +2110363 +1347497 +2448211 +2744476 +1208014 +2448190 +1644332 +507584 +1822792 +74345 +2355620 +1411819 +2552719 +1970874 +2370868 +2110336 +1347514 +2720388 +1397505 +2286651 +2072953 +2448170 +1848856 +1267308 +950179 +2072969 +441099 +2552660 +2370901 +774160 +2552653 +1787268 +2448193 +748467 +1108040 +1267325 +1347491 +2110380 +2744478 +1526102 +1489166 +2370849 +1397498 +2739075 +1997480 +507625 +2072990 +2286624 +950182 +2448194 +332177 +2355633 +2286645 +1249986 +2110370 +1685819 +2072937 +2370848 +1411834 +2552645 +2370904 +2630135 +1347479 +1347472 +1666407 +1300291 +1987142 +1526136 +2110312 +2110372 +774128 +1347502 +1316386 +353343 +1939987 +1267298 +2448171 +2110369 +1489156 +2311746 +678010 +2110351 +2630128 +1411821 +1316380 +1347478 +2110333 +950189 +1526129 +213021 +950172 +2706549 +678019 +1526088 +1300293 +1267311 +1316393 +1526110 +507624 +2552652 +1267299 +2744472 +2552707 +2370902 +950152 +2706550 +1489161 +2630181 +2428571 +74300 +1685798 +2355619 +1141069 +2630199 +2110545 +1267353 +2280252 +2110478 +507744 +2836045 +1519 +1489196 +910287 +74384 +842979 +1940000 +1848901 +2519492 +2630219 +2110532 +589715 +842993 +1763831 +1526179 +1250005 +1267343 +774276 +2100589 +2030229 +678086 +2110432 +774249 +2073028 +774183 +1347521 +1848898 +1177762 +1025584 +1177766 +2519441 +1267342 +507706 +2010412 +2706578 +2519443 +1061504 +2729711 +1761065 +2519442 +2519448 +507708 +507756 +2729696 +2073000 +719054 +2448286 +719045 +2739083 +2836007 +2768489 +1526185 +507750 +2519428 +678092 +1908701 +247293 +1393130 +910303 +2110540 +2768488 +2003611 +1526177 +2744489 +2750058 +1347555 +2519481 +2242820 +1108060 +1070877 +1267348 +507742 +842987 +991127 +74389 +774215 +765542 +1848911 +1455919 +2836050 +2836020 +2750059 +2865280 +507703 +2370945 +678109 +128155 +950210 +2311768 +1489199 +2552831 +2020771 +2519468 +1822810 +950218 +2110447 +1970926 +2110427 +2311751 +2729709 +719050 +2836056 +774273 +2448285 +1757154 +2311758 +1526218 +678053 +2744492 +736924 +342346 +1369416 +128150 +507699 +774210 +1489198 +2030221 +2734217 +2734203 +1347562 +2750057 +774251 +1722758 +2750043 +1970914 +2448267 +74408 +843001 +1955946 +2110451 +2729706 +2110459 +2734204 +2110553 +2734195 +507695 +1061494 +2448280 +2311750 +1411860 +2729712 +507711 +1250006 +1364775 +2729693 +1607507 +1770224 +128148 +1526194 +213044 +2110547 +2428575 +774194 +2110508 +128146 +2706593 +950207 +2370934 +2448291 +1316415 +755107 +2311759 +1526197 +1908709 +774209 +2630228 +2280245 +1489192 +1970904 +213042 +342353 +774218 +678098 +507751 +1770221 +2696622 +648895 +1848886 +1787293 +2311749 +2630201 +2286659 +2370921 +2519454 +2030223 +1848891 +1316425 +1685850 +2370947 +2370937 +2552817 +2110500 +2836029 +2836035 +950201 +2552785 +1509 +2443410 +2110442 +2865282 +74404 +507683 +2014075 +2734196 +1411882 +1108063 +648898 +1489209 +1607498 +2448257 +1316434 +507696 +1489215 +2110507 +2836026 +2370938 +2110509 +507710 +774258 +2552788 +1411880 +1514 +1397525 +1061493 +2370952 +1489205 +2110437 +2836063 +1316427 +1208030 +1848912 +2734227 +2691227 +2706599 +1267380 +1763836 +2030233 +950220 +774286 +230001 +1822824 +1645882 +950222 +2552838 +2370958 +2370961 +1526237 +1822821 +2750065 +2030252 +2073043 +2073047 +1970927 +1267385 +74427 +507842 +247311 +74421 +2552842 +353345 +2370971 +2691223 +507792 +400945 +74424 +1208039 +507790 +1411900 +2750064 +2683771 +2110613 +1208040 +2110556 +2110609 +2110637 +1403670 +507838 +213049 +1908717 +1940008 +1970929 +774282 +2448307 +1411899 +2750068 +2630230 +1607511 +362527 +2706601 +2706607 +1822829 +1052429 +1379805 +1530 +2030236 +507847 +2744498 +2073049 +2030241 +678117 +2750074 +1411892 +2110586 +2768500 +2030247 +2030256 +2696632 +2030232 +774312 +247320 +2552931 +2073075 +1411920 +2371019 +2519514 +507862 +2110728 +1645888 +2519515 +1607524 +1076783 +1309856 +1526256 +2696636 +1208048 +2110670 +2509274 +843061 +2371017 +2110697 +774339 +1722792 +755116 +1250024 +2706613 +1250030 +2110650 +507953 +2696646 +1061515 +507854 +1708257 +2696634 +1553 +2448323 +213064 +678152 +1455932 +2273770 +2552933 +2696637 +2519525 +1666435 +774354 +1025600 +507961 +2630292 +2371013 +1526247 +1997494 +1482274 +2630293 +729692 +2630309 +2371012 +2110700 +1455940 +1157878 +1970940 +2696642 +1342152 +1300330 +774309 +678187 +2073051 +2371005 +2630319 +2552893 +1787302 +1403676 +213053 +2552874 +2030274 +774361 +2683780 +1347607 +1455936 +2552928 +1250037 +1908735 +2552871 +1540 +1108091 +1347615 +1645892 +2448330 +383309 +1061513 +507887 +2683777 +774338 +1908736 +2286701 +2552895 +1722828 +2030263 +1607518 +1108080 +2110695 +230005 +507886 +2110750 +2552888 +2073078 +1970945 +342371 +507928 +1955963 +678165 +202288 +2056461 +843050 +507939 +2311783 +1722794 +345501 +507895 +507868 +2311786 +2448354 +2311788 +2370996 +230007 +1940026 +2552946 +1848946 +706792 +1316453 +1411923 +507867 +991138 +2242857 +1455926 +2110718 +1997499 +1411968 +507924 +2242848 +1526250 +2355661 +2110683 +2552896 +2552889 +2311777 +1386412 +2683773 +1347606 +507870 +2110677 +1403671 +774306 +2371009 +1267399 +2110686 +507912 +507917 +2706620 +1848954 +1455941 +1411955 +2073073 +2073074 +2428592 +2428587 +2073070 +1970955 +507905 +2683774 +1722802 +74436 +1455931 +1984424 +2110749 +2370999 +507863 +1607522 +1933475 +1235821 +1722813 +1908744 +2370974 +910313 +1722818 +1250053 +2110640 +2273776 +2415990 +2552902 +1940018 +1848952 +1908727 +1489231 +678148 +1819105 +507855 +1970950 +2110643 +2311801 +1787308 +1550 +398313 +2110715 +991144 +1970948 +2448319 +2110661 +1997497 +2720403 +774390 +2552999 +1267449 +2428601 +1722833 +2110788 +1316463 +2056467 +1250084 +1235822 +2273788 +2448379 +74466 +2750084 +1489248 +372059 +1908758 +1250085 +678206 +1267436 +1526279 +2030283 +1482277 +190152 +1512816 +991172 +1482278 +1403103 +1386421 +2553050 +991159 +74465 +2519529 +1267433 +1848975 +508030 +2706640 +1970961 +1571 +1411979 +774400 +74475 +372053 +2519532 +1411989 +678200 +1997507 +2030284 +1108103 +950292 +2553015 +2706641 +1848973 +2553001 +1061532 +1557 +1645898 +991174 +1108098 +2056465 +2448359 +2030291 +2030312 +2630322 +1722841 +400949 +1955971 +1489256 +2553004 +2630337 +950289 +774395 +678203 +2371025 +1455958 +247325 +1526291 +1970962 +2696658 +950280 +2553031 +2110790 +843077 +1708273 +2623166 +508026 +1407807 +1722843 +2371033 +2630335 +2073112 +297631 +2110809 +1970972 +2073094 +1235824 +2696657 +2552996 +400947 +1645899 +1996035 +1208069 +1955974 +2371023 +1607533 +1089037 +2552993 +1512820 +2630330 +1411992 +2030282 +507971 +2073113 +1267425 +2030311 +2696667 +2110815 +2311825 +1489253 +1822853 +74480 +678205 +1403678 +1680917 +678209 +1489246 +74483 +1316464 +2371038 +950285 +1848988 +74485 +1070880 +843078 +1108099 +1267423 +991166 +507982 +1770235 +1108100 +1208061 +1267405 +2110781 +247324 +2696664 +991175 +1108105 +1267448 +508156 +843175 +678215 +508147 +1970993 +1300381 +1121434 +2630375 +1290879 +774447 +1347642 +2744519 +2696688 +991180 +1811223 +1573 +843098 +337543 +1347652 +2509288 +2307662 +1316502 +1722865 +1316477 +1575 +843127 +508162 +2623173 +128291 +2865310 +2411115 +128227 +1267496 +1971010 +1412030 +1722857 +1722864 +1401854 +1722855 +1722872 +1389652 +843114 +508145 +1749518 +306929 +74505 +843136 +2519542 +1607660 +1822884 +729709 +1250087 +128260 +1749504 +1708278 +128304 +2509285 +2865324 +1070887 +2718882 +128279 +508161 +1290882 +1512823 +1955977 +706801 +1316488 +190159 +1702081 +508094 +1994237 +1309871 +1108125 +2750100 +1455971 +2028095 +2349144 +1607556 +1250096 +2553117 +1412019 +1702066 +1607646 +508175 +1347628 +1108120 +2411120 +128286 +1897948 +2553078 +910343 +508143 +1848989 +678238 +2367102 +508058 +1702038 +1300374 +729708 +128275 +2729720 +1108126 +2030324 +991204 +1300367 +2750108 +2411111 +843093 +843174 +1722867 +1722866 +1177812 +508171 +1250098 +1971002 +1267457 +2679234 +2371049 +2696672 +262497 +2750099 +1197128 +1267472 +2371062 +230023 +2630390 +2355669 +2110876 +1607565 +128201 +508099 +2448402 +1036749 +1403106 +1848993 +843166 +508138 +2007399 +1971003 +1364786 +1897951 +2448386 +774428 +128238 +128261 +262480 +508064 +589793 +1061541 +1316510 +2100610 +2242884 +74513 +2110834 +843146 +1749515 +2100606 +1300373 +1455987 +1300358 +589785 +2110871 +991182 +648934 +1908763 +991210 +2110860 +2100608 +1379830 +648940 +2371076 +2553073 +678232 +2630356 +1347656 +1024493 +2286723 +1970992 +1607548 +991215 +2630378 +2630379 +1347625 +1309875 +1607592 +1607635 +1316507 +2865302 +128244 +2744522 +508157 +1455997 +1702050 +1316476 +1955990 +1702041 +1994236 +1267469 +2744514 +2371066 +2744521 +1607606 +2553123 +589778 +1036737 +2010423 +508133 +2630385 +1300356 +353351 +372061 +678245 +1526302 +2242915 +1036750 +508049 +337542 +1309859 +2110877 +2553079 +2110828 +2110830 +2448399 +2411118 +2623178 +1749513 +2110821 +2349145 +663957 +1389656 +1290875 +843082 +1267474 +128334 +508198 +1456083 +843295 +589807 +2768529 +2519552 +1036763 +1526344 +1652261 +2056484 +1702125 +1208082 +1607791 +37191 +2242953 +843182 +1984432 +37206 +2718886 +843227 +843274 +1456019 +404848 +1456026 +2242947 +843308 +1702123 +991279 +372083 +2243033 +2411150 +2056494 +843184 +843369 +589919 +2623202 +1607795 +1652262 +128402 +2679252 +589937 +843341 +1702120 +37229 +37174 +589914 +2056513 +706817 +1342161 +706805 +2242983 +1908770 +2286729 +2242996 +2056490 +1811228 +2427346 +2509291 +1607682 +508209 +1607667 +843366 +2056525 +2623189 +2100615 +2056497 +1607719 +2010431 +2243092 +2056491 +128319 +128371 +663996 +1607821 +1749525 +934334 +1082619 +843231 +1607773 +843365 +1607815 +589929 +1512841 +589819 +1607735 +2553134 +2623183 +2110885 +843209 +843281 +843207 +991299 +37175 +589955 +74520 +589857 +2741272 +663998 +1702095 +2519550 +843389 +2243097 +1036762 +230031 +2056519 +508179 +1897962 +1607827 +843199 +1607668 +2411170 +1309887 +706813 +1607790 +1456107 +2273797 +1994240 +729744 +2056536 +1652259 +991236 +1702086 +128395 +1512850 +1512847 +1121443 +2243053 +2718884 +1456040 +843290 +2411160 +1607694 +306939 +2768506 +1849016 +589806 +589957 +412946 +843251 +991289 +2242957 +2553141 +765548 +843194 +1512857 +128354 +589837 +128323 +2768525 +2509306 +843271 +1749539 +1933486 +2243083 +719081 +1652255 +843298 +774458 +991267 +2411135 +1036767 +2056514 +2411139 +1811226 +729727 +1456035 +729746 +729743 +663990 +706809 +2243022 +2371090 +1811224 +843202 +37236 +1456033 +1645909 +843318 +843345 +128377 +2243032 +2349153 +2242984 +1607705 +991252 +508199 +128381 +128315 +589845 +678252 +589961 +589798 +2411148 +1512853 +1822888 +2056539 +2371098 +1456045 +1652267 +2553150 +1722876 +1456031 +2679258 +1607780 +2411176 +1607913 +2025528 +590060 +1456160 +1607892 +1036792 +1456125 +1994243 +1607873 +2307681 +2100641 +1309903 +1607920 +230038 +1768336 +202291 +2448428 +843548 +2100637 +1607841 +729756 +729785 +1607948 +2243125 +2243128 +1267514 +706852 +843415 +706834 +664047 +2727744 +2243183 +2720422 +2243158 +1070893 +2007405 +590046 +991330 +2688701 +590027 +128416 +1897968 +843543 +128422 +1897989 +1607940 +664040 +1971023 +2010437 +2110907 +1309955 +1456167 +843500 +2411193 +2349179 +1208084 +1456153 +1607953 +843460 +2509309 +1309920 +1082633 +843486 +589990 +1316516 +1849019 +2243103 +1456152 +590090 +589973 +1197151 +1364805 +2243187 +2056567 +508225 +2243181 +2679273 +2738040 +432713 +2623211 +508238 +1389669 +128466 +2243143 +664007 +1036788 +843502 +508235 +729766 +1512860 +2623210 +2367112 +2243168 +843526 +1290905 +1717441 +729755 +991329 +329037 +706848 +2367111 +1512865 +843410 +1717445 +1290923 +1722883 +2056565 +991324 +1607939 +1984437 +1309897 +2243123 +843447 +1456179 +2056569 +843395 +1940043 +306947 +1512862 +2630424 +1749546 +1749564 +2741277 +843408 +1652271 +1392657 +1300396 +729762 +2307678 +1607848 +2273799 +1897970 +2738041 +508227 +2110906 +1309914 +1984434 +843438 +1197148 +1290910 +843444 +843426 +590073 +934354 +678267 +991343 +843511 +991328 +1607849 +2679264 +2110919 +1082634 +843421 +1607944 +1607905 +128429 +128464 +2738050 +128428 +2720418 +2243132 +2509327 +2411201 +589987 +1309951 +2741689 +2683799 +1897990 +1607885 +1165938 +1369433 +664055 +2741281 +508218 +1822896 +706844 +664004 +1267512 +1897987 +1347692 +2630425 +128412 +1607886 +590097 +190161 +590043 +37248 +2110902 +1984441 +678272 +1607869 +2307683 +2056570 +1722888 +590084 +1364804 +128472 +2679276 +508217 +843538 +1787348 +2448450 +2630439 +2750155 +1177823 +2729746 +1971046 +843718 +2243199 +2110998 +1652273 +2371119 +1526368 +843688 +1165944 +1061556 +1722912 +1607988 +2683803 +1036798 +678286 +934382 +843562 +2280280 +1401866 +934366 +678334 +1849044 +590157 +678306 +1526357 +2696714 +991468 +1144487 +362572 +2025533 +1702134 +2720426 +843722 +664059 +2073137 +262531 +1749567 +2243214 +2705010 +774484 +128530 +2110972 +1108145 +2750158 +590107 +1898004 +2553201 +843735 +1997533 +2448435 +1401857 +1997531 +2630437 +991470 +2448469 +1177831 +1908792 +2003624 +590163 +1526361 +590149 +1822901 +213121 +2448528 +2741283 +934398 +843682 +1782869 +2286747 +2509355 +1526363 +2428613 +332191 +1157917 +1607973 +2243271 +1061550 +2110980 +2718898 +678330 +1849029 +1770243 +2243235 +2307703 +934381 +2448486 +342387 +991473 +1607968 +2371113 +2630444 +1403126 +2734248 +991474 +2706708 +1403123 +1659260 +991434 +843632 +1849072 +400952 +2110923 +2849854 +2110950 +2509329 +991439 +1608016 +1386444 +2448530 +1165956 +2286771 +128567 +1403138 +128619 +1971049 +2849867 +508355 +1157944 +1267537 +1393146 +2744538 +1666467 +1076790 +1456234 +706876 +337558 +337555 +1347733 +128489 +843677 +2750188 +74527 +1342180 +678335 +843701 +991364 +843570 +2741285 +843584 +2448491 +2696705 +2448442 +2110964 +1787331 +2110955 +1666447 +590116 +508289 +1685933 +729807 +128507 +1316547 +230045 +2411204 +1608057 +1849047 +1787337 +202294 +843660 +2729747 +1456198 +1512901 +1607966 +2448481 +1997535 +1666468 +729815 +1607986 +2706717 +934383 +2111013 +1608059 +1749580 +2371140 +1608026 +1822903 +843617 +128562 +2355677 +1607969 +1811259 +372092 +1607998 +2427351 +1250121 +1708285 +342380 +2243197 +991425 +508319 +1082661 +37295 +774491 +991467 +128544 +2553198 +1482285 +1082638 +590124 +1722919 +1316526 +1309966 +128637 +843674 +1849027 +843719 +2696699 +678314 +934371 +1316537 +1811254 +2509360 +2286768 +1456211 +2307696 +508318 +508332 +2073139 +1177824 +899111 +190172 +2696709 +1177833 +128621 +1403124 +2683815 +508339 +2111009 +2056595 +678329 +1722914 +2243211 +2025535 +843576 +508325 +2003628 +1250123 +128541 +2056578 +128484 +2849866 +1947239 +1984446 +2744539 +2280269 +2349190 +934410 +843655 +2056584 +2849877 +2243272 +1908801 +2849882 +2428615 +128523 +1235865 +843663 +1770252 +2285405 +899112 +843568 +1082646 +1157933 +2371132 +1608031 +1347718 +508347 +706882 +843604 +2286759 +910359 +1250120 +1316540 +2243236 +247341 +1702135 +678288 +590117 +1787341 +1082645 +2428629 +1316524 +2110951 +1607980 +508331 +128640 +2741824 +398318 +37280 +2448475 +910370 +1666472 +1997540 +2448488 +2110957 +1135763 +1659256 +910361 +2739109 +910381 +2741282 +2750174 +843692 +1822902 +2349199 +678352 +2371129 +1971035 +843564 +2683808 +950315 +950335 +474517 +2243258 +590113 +2448520 +2553175 +2688716 +2243215 +1811247 +458558 +2056594 +1342177 +128630 +1608094 +128521 +337556 +128587 +1403127 +2849864 +991413 +1456210 +508320 +128569 +1267527 +284367 +1512876 +2553168 +2768534 +2110945 +458557 +2243244 +2280276 +1526386 +2014092 +950317 +2750150 +37289 +1666471 +1608033 +128627 +2280268 +1347702 +1082674 +128680 +1908813 +1633 +1666482 +1082693 +1300414 +774531 +1971062 +843805 +950369 +1908811 +1456256 +1489302 +2448561 +1061567 +74573 +2371151 +1624 +1659274 +736953 +1061587 +2286794 +332196 +1267575 +2519578 +774545 +2553229 +2111100 +774568 +474533 +2286773 +2750201 +1822908 +2519574 +2448536 +2030351 +2243304 +1768351 +1526426 +1412056 +1412054 +991514 +910396 +508400 +1082692 +678382 +1235882 +1659294 +2073152 +2448585 +678398 +1300410 +774571 +678367 +1369439 +486263 +1300408 +1025622 +213153 +843760 +1144505 +74568 +2741693 +2553234 +1787360 +843773 +910403 +1787358 +128660 +37332 +1076832 +1526481 +678401 +843797 +342391 +1811264 +213149 +37323 +2553219 +1347747 +2311890 +774540 +1489298 +2516348 +508440 +213135 +1787383 +2448542 +2553224 +2311893 +362598 +1052468 +1082687 +508436 +230081 +1347743 +2111088 +2030355 +508423 +1722936 +1086079 +2111104 +128683 +2553240 +2427361 +1144501 +1526421 +2311869 +843775 +2553230 +2111043 +1347746 +2307709 +1487095 +2553218 +353355 +1787381 +508427 +950346 +508382 +74555 +1489297 +1811271 +74558 +991486 +2371149 +1608208 +1489291 +1058085 +128666 +1290952 +474529 +1412064 +230082 +2448554 +37320 +2273805 +2553245 +1608193 +2111140 +190188 +2706729 +1144498 +2415996 +678410 +1456263 +1638 +1235876 +843749 +474525 +2553209 +1208107 +843776 +843763 +1608168 +213151 +508430 +230073 +1626 +2448549 +910416 +899119 +991490 +2243279 +508392 +774512 +2286786 +2030367 +1076816 +432718 +1659293 +991482 +1608195 +748477 +1811269 +2553241 +1908824 +1412057 +2280293 +1316577 +2448599 +2448565 +2286774 +2243280 +1608190 +2349211 +2311886 +1076821 +1708295 +2286789 +590182 +2448607 +1608165 +899118 +1456240 +1822915 +755140 +1089054 +508374 +1512916 +1608177 +1456245 +843800 +1708290 +2073150 +2280285 +1908826 +755135 +2371153 +2056604 +2630464 +774572 +991489 +1061573 +2750193 +774579 +408438 +1787394 +1811265 +1908833 +1208110 +1076817 +2100666 +2111069 +678376 +2630472 +843809 +408431 +1082695 +362597 +2056599 +1208117 +774516 +1316568 +774533 +383333 +474520 +751305 +745068 +1267561 +1608172 +345514 +1412074 +2448591 +1526416 +1608220 +2509373 +1608217 +590188 +2696724 +1666475 +751297 +2111146 +353356 +1089057 +755149 +2371158 +1908847 +843843 +2734253 +1250148 +1157968 +991536 +362604 +1250157 +1456271 +843904 +950378 +2307715 +362611 +362615 +2111260 +1749592 +362625 +2448700 +1061588 +934455 +2307714 +1290956 +2311901 +508472 +297660 +1971086 +2448697 +508570 +1722957 +1787418 +1608230 +1197181 +508515 +404876 +1300418 +508485 +1822922 +1685964 +1512925 +991596 +2739117 +1940064 +190208 +2448642 +719089 +2020792 +1749584 +1666493 +1657 +2111171 +441139 +950392 +508534 +508488 +678423 +1787444 +1177876 +1787428 +2371192 +1369440 +1849127 +1908921 +843863 +2750215 +74598 +1971077 +1608236 +843914 +2355692 +1702180 +1174251 +1412093 +190209 +678445 +843906 +2014093 +441133 +2448701 +1300417 +1347765 +2273808 +508493 +1908853 +2411216 +1956009 +2371238 +1708300 +508509 +991525 +2371202 +2623234 +1723003 +1971089 +843890 +1722949 +508580 +1722972 +2371185 +1208150 +362617 +2553296 +774615 +2553281 +1749593 +2371161 +2630560 +474540 +1316605 +1024495 +678448 +2111266 +508477 +1208129 +1489317 +1250161 +910464 +2623230 +1680949 +1174252 +408452 +843912 +508492 +508547 +1316597 +1489312 +362622 +1652 +1526482 +755153 +1489311 +2630515 +2286802 +1908912 +2349217 +1722979 +2243363 +934442 +1403145 +2243325 +284371 +418732 +678428 +1849123 +991582 +1849120 +1036804 +950397 +1165968 +1512941 +774584 +288922 +458577 +1717451 +843907 +2073184 +2371244 +2428659 +1822923 +2243348 +1208147 +2448647 +2706734 +2243339 +1659 +332208 +774618 +1489315 +910433 +950381 +2111254 +1250143 +910428 +337580 +1208136 +910439 +508482 +412955 +2371229 +1787441 +1489310 +1061591 +1250151 +991605 +1782882 +1908894 +2630488 +2371222 +1652278 +1849115 +1659301 +306956 +991534 +1722991 +774605 +418734 +1061605 +2630508 +2630496 +843846 +2630541 +1347764 +2371195 +1666495 +1036815 +1058086 +474552 +2448661 +2371194 +2243367 +1177866 +2553300 +418736 +774608 +2768553 +843884 +736960 +247347 +1165965 +342396 +2630523 +1456270 +1144515 +2371181 +418746 +474546 +1722951 +1089068 +1316604 +2111196 +1250170 +991531 +2243366 +2696729 +991593 +1722955 +899127 +508471 +590205 +1956003 +362613 +1971071 +2243327 +2448712 +508576 +910437 +991541 +2448674 +2411219 +2073186 +1108164 +372110 +1250152 +37341 +2355696 +262550 +934453 +2243340 +1108159 +774606 +128709 +337583 +1089062 +2750207 +934435 +1908918 +991585 +843867 +1482296 +719090 +1761069 +755155 +2243357 +2553311 +2630479 +508585 +2448630 +2448631 +991563 +425988 +1177873 +843880 +1108173 +1984451 +288920 +1956002 +1708306 +74603 +1608265 +345525 +262592 +1456328 +1070911 +372138 +1235900 +765598 +262600 +2349245 +2509409 +1526507 +844009 +991700 +991677 +247358 +1782886 +306963 +1680952 +1608245 +1389680 +1608348 +337600 +991674 +2768561 +2243398 +37428 +1347771 +432729 +844029 +934476 +262572 +2509399 +1235903 +844013 +337605 +991612 +991652 +706903 +1036824 +1512956 +262555 +2243394 +2448723 +1036829 +128742 +262557 +934474 +1608312 +991661 +774682 +1100698 +1898030 +991697 +1608279 +128740 +2768567 +2349242 +262586 +1100681 +262571 +2243387 +1787458 +844019 +1100693 +2679304 +2427367 +1681 +1412128 +2371249 +590222 +508624 +991660 +202313 +1267608 +1608301 +262609 +2427362 +1197185 +262617 +934510 +1608293 +1250173 +262576 +1968468 +1100694 +372136 +37386 +2111289 +950416 +37408 +2243390 +774667 +755165 +357473 +906684 +2311923 +128747 +765597 +2509426 +37418 +432727 +2411229 +2243372 +74619 +843974 +262578 +2547684 +128777 +128779 +2519589 +1487103 +1316627 +1235898 +1526500 +2307728 +843924 +844007 +1664665 +2307731 +1997554 +2100685 +432728 +2243378 +383349 +262579 +1608329 +1849156 +1849161 +128739 +1061607 +1608241 +262603 +843930 +2509404 +247355 +37360 +2411231 +991680 +2307733 +2768580 +991631 +843972 +774687 +2100687 +2073195 +1608298 +934504 +37438 +844015 +2073192 +934485 +2630567 +1100682 +1664664 +590224 +950420 +1608352 +230097 +2307735 +899132 +2285408 +2025538 +2509405 +2286832 +372135 +1386454 +404878 +2448739 +213177 +262589 +1717456 +262564 +2307734 +128786 +1526504 +1811298 +991694 +991681 +844040 +306961 +1512951 +74607 +2448746 +372132 +37387 +991664 +2307725 +1456325 +991643 +843962 +230094 +1708307 +991610 +1608330 +843939 +421312 +1061622 +362633 +1526522 +37468 +37453 +1089109 +1526547 +408465 +1718 +37478 +474601 +1608393 +128812 +1787466 +508642 +1908959 +1685992 +1608378 +1849171 +1526551 +1177899 +906686 +2415999 +910508 +353378 +1526543 +1909003 +991742 +1526521 +2311954 +2630589 +1908984 +1526554 +910487 +486279 +844081 +2111349 +934528 +1996043 +1364820 +2311973 +1909007 +2311966 +2739120 +508652 +1377120 +1849189 +844088 +1849167 +128851 +128845 +190233 +441150 +1157995 +755172 +1526511 +2311950 +247361 +2630592 +934524 +2355703 +678501 +508647 +1316648 +1715 +1526516 +1177915 +1036835 +844060 +408471 +1685987 +37448 +1089102 +1608380 +774698 +1412136 +1316635 +1849172 +2349257 +844054 +2448795 +1025646 +37471 +37451 +1908981 +190242 +2739122 +2280310 +213189 +486277 +1722 +2553353 +1909016 +774734 +128835 +1608372 +934535 +678483 +2553381 +1100705 +1709 +1108205 +2428667 +1052497 +1177923 +1787479 +128819 +2553333 +1526537 +213192 +2553361 +2630598 +262620 +910498 +1379856 +2355706 +2623237 +1731 +844100 +2111298 +2750226 +2111319 +2553360 +128824 +297672 +950453 +774727 +2448814 +1177900 +1666502 +1177916 +2111301 +1787459 +1787500 +2311949 +1659315 +2243404 +1908957 +1708311 +774711 +1267618 +1608406 +1971096 +128822 +1787482 +1208177 +1456342 +1197190 +1089094 +2448783 +1526515 +1316629 +2111304 +1608408 +1177897 +1787483 +1526532 +1666508 +1089111 +74633 +262623 +1347777 +332211 +1685976 +1070921 +2553324 +1685984 +1908952 +844094 +1025658 +1177911 +1608357 +2349256 +2553388 +1526531 +190249 +991723 +262630 +1713 +2448784 +950454 +1482305 +774731 +1089099 +1822936 +1733 +2553362 +1316638 +247366 +2744553 +678555 +774746 +1316668 +991758 +1775 +844148 +2553417 +1177940 +1746 +1208202 +2428676 +2111384 +2073205 +751318 +1849263 +1782898 +1608428 +1987170 +910569 +910555 +1174256 +1702203 +1956020 +1608416 +2428677 +1052530 +190261 +508700 +1144525 +1316660 +1526602 +1052517 +2630648 +910523 +1158033 +213219 +1165983 +2448850 +1108222 +1158005 +2428683 +991773 +2371262 +508762 +1393153 +1369443 +991754 +1608423 +1052527 +729830 +190266 +394530 +508753 +1708325 +508731 +1909069 +1158035 +774749 +74683 +1342194 +1708329 +74661 +950463 +1909054 +774756 +1659330 +362645 +1909059 +2448863 +755186 +1811319 +2307741 +213228 +1787514 +2411245 +213204 +74652 +1489346 +2273817 +1208215 +2371271 +1754 +2448865 +2311989 +2073206 +2111422 +128924 +2020803 +2630633 +1849203 +74682 +1089127 +2111401 +1940066 +2428688 +1956018 +1898049 +910522 +2696744 +1786 +441157 +2371264 +1608446 +2243418 +1208188 +648963 +1061643 +508729 +2111405 +432734 +2547685 +2073203 +910527 +37482 +1526613 +1680954 +1412153 +934539 +2311979 +2553438 +2630632 +844147 +2280326 +37501 +508685 +934563 +2286838 +432731 +425993 +74669 +1267639 +128874 +1608439 +2371294 +906687 +1608413 +1849235 +2448840 +2448876 +1391651 +441154 +1456359 +2111356 +74705 +1489342 +2312011 +1089114 +383359 +2448868 +1379859 +2371282 +2311984 +2243431 +1036844 +474616 +2448837 +1659324 +1782894 +1512978 +1787528 +678511 +678550 +2280324 +2553436 +421313 +678520 +1770300 +678527 +1208196 +774759 +1412168 +1391652 +2349261 +774790 +1158011 +421321 +1686010 +2243426 +262640 +190263 +1811318 +2448829 +508697 +2111387 +1316672 +2286842 +508708 +1347792 +1347793 +774775 +213211 +899152 +1235917 +2280322 +2286861 +508757 +844120 +1412151 +910571 +706909 +394534 +1526604 +1158026 +2349265 +934545 +1659338 +2448842 +74681 +508714 +1749607 +1526587 +441152 +2750229 +1659320 +844154 +1316663 +418775 +1849239 +745073 +508724 +899148 +1177931 +729828 +2448844 +1316652 +1749608 +1267640 +2630646 +1971099 +1761 +1971107 +1347806 +2449001 +1849290 +398343 +74752 +1347821 +934566 +2744556 +1787584 +128964 +1702204 +991810 +1135776 +2428698 +74716 +678572 +2706748 +1316702 +2111462 +1971129 +2553471 +74717 +1061722 +213309 +1811330 +1061685 +1526647 +508872 +2449024 +950510 +508794 +1608466 +2553448 +474627 +213258 +2007416 +934573 +508852 +1197203 +2286885 +2411249 +950536 +508785 +2280335 +1316688 +2448939 +213310 +2768590 +1061669 +1208244 +950518 +1787593 +1608457 +1822953 +1082714 +128977 +2683831 +74770 +1526631 +1849321 +1526694 +1526629 +844175 +2553443 +1792 +408493 +2067316 +37514 +1686011 +213248 +1526627 +2448928 +1770316 +1608478 +213308 +950552 +1061662 +1177962 +2630662 +342417 +2448906 +1723066 +2427378 +2448901 +2448968 +1787604 +2630672 +991814 +1526676 +1061688 +1208238 +1052550 +1686027 +1723073 +1144540 +213287 +1379873 +1386474 +1316705 +1787602 +774819 +1526617 +74729 +508791 +508800 +2509442 +1061672 +774824 +1608464 +1177972 +2307743 +774851 +1763864 +678582 +1787589 +2428693 +910600 +74747 +2630652 +508829 +1061707 +2111437 +508839 +74761 +1770313 +2286890 +213271 +2744555 +950541 +1787579 +774846 +2553458 +1526641 +408499 +2449026 +2111434 +213297 +1526686 +213302 +910596 +1267664 +1144553 +1316709 +2371304 +1702208 +774828 +1144544 +2448989 +2100705 +1822950 +1997582 +1909077 +1347829 +337614 +1512984 +2448879 +1316689 +2286892 +372143 +1108245 +128981 +2448942 +1061687 +2371309 +2448898 +1608477 +1666537 +2553451 +1787548 +1197200 +1061694 +74802 +1177990 +1909080 +1804 +345530 +2630660 +2448912 +910597 +190276 +2111455 +2750249 +213281 +774836 +1909092 +1849285 +2280331 +2553453 +2448992 +648969 +1482323 +2448884 +190293 +2448980 +899157 +1347815 +1512987 +1526644 +508876 +1909086 +678580 +508795 +2519608 +1177970 +729831 +1526655 +262655 +1723075 +678583 +74778 +1208227 +1608462 +2111456 +950516 +383363 +1608452 +844161 +1267672 +1608460 +950560 +1267652 +394540 +426002 +910599 +1666524 +950555 +1770322 +2750248 +774798 +2696757 +950520 +910590 +1316700 +190295 +2111486 +1787603 +342430 +1909081 +508806 +128951 +2428694 +910603 +1197204 +2003638 +2448943 +474626 +1144558 +1526665 +1608473 +1316683 +1025671 +1208249 +678578 +991820 +37511 +1763863 +1061674 +1369447 +2683830 +1526671 +362661 +1787539 +2449027 +1386466 +2630661 +213282 +1300441 +190279 +1177982 +213305 +1666540 +2448933 +1971142 +774837 +74743 +213270 +508824 +774813 +474625 +1316763 +1819117 +950571 +474653 +748490 +74817 +1316744 +1347896 +2553478 +1178002 +774915 +2519638 +342436 +2750273 +991852 +2750266 +1489394 +474646 +1412248 +1971148 +2312066 +1208269 +2729778 +678650 +1061752 +1708344 +247405 +1652284 +213317 +678614 +1849347 +1489388 +950603 +1364824 +74841 +1347881 +74861 +2720435 +2739136 +2312054 +1822964 +1300453 +910672 +508967 +2111556 +1052553 +1135780 +1108262 +1208287 +2111582 +1023350 +383369 +2519625 +2750296 +1316727 +1456404 +1526733 +1316747 +1871 +1108306 +332231 +2243450 +2630716 +1526727 +474637 +213339 +1316721 +2111542 +1316793 +910632 +1909121 +1849389 +2111493 +213326 +934590 +1971185 +401000 +1316728 +2111597 +1208299 +1849332 +1412209 +1108299 +2111588 +1061741 +1412205 +991856 +1412242 +2553501 +1347862 +1347850 +1822956 +2111594 +1393167 +991865 +74823 +74820 +1316765 +2553539 +2739144 +2720440 +1686056 +1971160 +1052563 +128984 +678604 +1178014 +1347865 +1108269 +458603 +2449075 +678642 +774922 +2111592 +508932 +74824 +2312061 +441190 +202337 +1659367 +910648 +2111509 +1412245 +508968 +1379879 +1849365 +1089148 +2111564 +37516 +508901 +2449063 +230147 +1061761 +1267677 +2030398 +74827 +2553566 +1909103 +1526712 +1208267 +1393168 +1971182 +1208291 +2553492 +1787622 +1412214 +1412239 +910643 +1849345 +458605 +1386493 +2312047 +950628 +74821 +678608 +441168 +2111596 +509005 +1909104 +774860 +2623247 +950574 +1723132 +1316789 +1412229 +1608486 +774919 +648980 +1178043 +950619 +408519 +1686039 +1208264 +508947 +1702217 +2355739 +2630735 +400996 +509066 +1052556 +1666560 +1686040 +1849339 +1178029 +2630695 +1723094 +678623 +2630752 +2312062 +1723126 +2111502 +509016 +1178022 +844181 +2750278 +1267709 +297695 +1208280 +2111567 +1723104 +2739129 +508923 +1526742 +1909132 +508934 +1347872 +2720441 +1316722 +2427379 +2630725 +678617 +2243448 +1822974 +678616 +509067 +1686045 +1909124 +1342198 +2630753 +508917 +736973 +2020815 +509070 +1763869 +2111519 +508966 +1686053 +774894 +1025683 +2449097 +2312060 +1108281 +1971144 +678646 +1300449 +1108278 +991861 +2312041 +1267681 +2744571 +2111566 +2111511 +2020810 +2750300 +508944 +74875 +509028 +648989 +991840 +2744558 +2630731 +1178011 +1347876 +1144577 +1025682 +1089164 +774868 +1208276 +910657 +1178057 +910634 +774858 +1052554 +1347852 +1849349 +1645943 +2630697 +1608497 +774889 +509039 +1108277 +230153 +508908 +2010464 +2111599 +2630711 +2280355 +1300444 +2010462 +950611 +1849393 +2349276 +1723112 +1347868 +508935 +508906 +2739138 +1386482 +508950 +2519634 +508909 +2111528 +362672 +508995 +1526719 +2111538 +1412263 +1849379 +1997589 +1316790 +1849359 +1645941 +1849400 +1379885 +508929 +1178062 +1108280 +2553565 +2630754 +509050 +2519635 +1849461 +2768604 +474678 +2349283 +844274 +1178117 +844264 +2553601 +509181 +2111643 +2836088 +991874 +1526780 +950669 +1666577 +844210 +1526754 +2836090 +2111681 +950636 +1347930 +474684 +129037 +1811341 +2449192 +1456414 +1393172 +2010485 +1456406 +37549 +1608548 +1723171 +1909153 +401011 +247428 +1770353 +1787679 +1909174 +2553599 +1849466 +408527 +1909159 +1723150 +991908 +2768672 +2449232 +1393181 +1135783 +129034 +1723174 +129063 +1347924 +950663 +509184 +751346 +950676 +774982 +213358 +129025 +1108318 +1787637 +262675 +2449208 +2243479 +1379907 +1267752 +844224 +1347913 +213392 +1608509 +1770369 +2371353 +441220 +590276 +1723160 +950637 +2073255 +1787658 +1250224 +2280365 +2014112 +2739150 +844205 +394549 +2768666 +2243478 +1526811 +1316824 +2553591 +1526752 +2768686 +401018 +2449151 +1680960 +2073257 +755209 +2371369 +844233 +509155 +2553590 +2768650 +2111635 +2111693 +2428732 +2355746 +678695 +2111734 +1082736 +2280359 +2768642 +247437 +1526768 +1821261 +2739149 +2111668 +2547688 +1761078 +1608522 +2010483 +2768617 +213363 +2768680 +129052 +2111666 +37540 +509096 +991891 +1512999 +1379911 +2111714 +2111753 +1659394 +74899 +1316798 +1347932 +2243486 +1347921 +2073245 +844251 +590271 +474683 +1686068 +408540 +1377134 +1849448 +1082724 +213360 +1823006 +2307752 +1787656 +1512997 +2449169 +362684 +2243483 +408535 +37533 +910707 +1144589 +2449172 +2630758 +1489410 +991884 +1267741 +1526786 +748525 +2768638 +2312107 +2243488 +1456405 +1076853 +2449177 +1686082 +426011 +1456427 +230160 +1723167 +991875 +719108 +1849468 +213390 +2111692 +1526769 +2519655 +1076852 +844237 +2111611 +2010486 +1526802 +774989 +509185 +74907 +991889 +1787662 +474685 +1909181 +1608520 +2349288 +2349277 +2371366 +1849481 +509125 +1849445 +353390 +1659376 +1347918 +509116 +2111619 +74891 +774986 +1849450 +1076857 +2073248 +899173 +1708346 +774979 +2706773 +1909166 +1393173 +1898 +1144583 +432738 +1412270 +1645947 +474687 +2111697 +1347937 +844265 +509092 +1052584 +401002 +2768648 +2111603 +1906 +1909155 +213383 +2768612 +2349278 +408531 +2111733 +2836099 +1787652 +2111618 +1290969 +332235 +1347954 +1347944 +2553585 +1608550 +74900 +1267732 +247436 +362688 +950674 +37538 +1412285 +2010481 +213352 +991911 +247418 +1267725 +774955 +1513001 +774959 +774960 +991895 +678678 +2696763 +213351 +1608513 +2744574 +1082731 +2696765 +1076850 +1300465 +2553598 +1412272 +910709 +2371377 +774990 +2768697 +2768663 +899176 +2243471 +1849473 +1108319 +1526808 +1393178 +2307748 +2750322 +213361 +474672 +1158062 +934611 +2312103 +2312091 +2073243 +736992 +2519661 +1909183 +1165988 +474682 +678696 +1770363 +1178084 +2768667 +2111628 +1070936 +509089 +1178081 +2696772 +74914 +129028 +2509452 +1178103 +474688 +1956057 +1197210 +1686077 +1608530 +1082733 +2449147 +1608532 +2768622 +2243468 +1763875 +230164 +1723149 +262674 +2449157 +1947256 +740547 +2823976 +1208345 +1347977 +2630830 +1787707 +2519689 +1956080 +765615 +2734268 +1208326 +332259 +1267781 +755218 +362703 +306980 +775016 +2823948 +2014130 +2729787 +230176 +1996048 +910772 +678746 +1316842 +129072 +678723 +509228 +2739158 +664095 +2553637 +129091 +1347983 +1397552 +2371387 +2750379 +2553604 +2111801 +2750402 +2553622 +1849526 +775032 +950771 +213401 +332249 +2691241 +1379932 +2073269 +74955 +1025696 +2630815 +1108357 +740554 +372160 +2691242 +1108346 +1686090 +2243499 +2111816 +2111820 +1919 +2768744 +950760 +678773 +2073266 +1267832 +2020830 +74942 +1061793 +2111784 +1267808 +1849541 +2744584 +950720 +1108358 +1749627 +1849502 +74923 +1787704 +991925 +2553625 +372153 +1526832 +1144600 +441234 +1823027 +2443411 +1659397 +362694 +2865341 +719119 +2073262 +509264 +2750338 +1036858 +1267800 +678721 +1686100 +2553617 +213424 +844297 +1412291 +1608560 +1924 +2706798 +899181 +1849483 +991949 +2111824 +2428741 +1997649 +775037 +2428744 +1666602 +2630846 +1208332 +2734275 +678762 +1267818 +991940 +1108359 +509270 +991951 +2553676 +2750404 +2020827 +2630779 +1300492 +2519674 +2111830 +1347959 +2014147 +1178136 +1178126 +2111833 +2547689 +1971217 +678738 +590301 +2768737 +1823014 +2768719 +678775 +678725 +213400 +509303 +74950 +1267813 +1250238 +129088 +2768715 +1267802 +2111786 +1608567 +74949 +1385246 +2020833 +1526836 +1108337 +2630823 +899177 +1526857 +2630821 +509294 +1061791 +1723190 +755216 +1956086 +1208353 +910732 +1025711 +509250 +1956072 +1316841 +1489418 +401024 +910744 +1849516 +441252 +2553632 +332247 +1348014 +474689 +74952 +2630789 +1921 +1379920 +2768717 +2111831 +1412295 +950772 +1723188 +2759519 +649006 +2630825 +1208346 +509344 +2449279 +1997651 +910766 +1347975 +719125 +332257 +1316840 +2280372 +2519672 +1909189 +332262 +1489426 +775012 +1025708 +1108343 +991931 +1377136 +910750 +362699 +950754 +2449253 +1849510 +1645951 +844305 +678780 +1987188 +1025709 +1666595 +383375 +910743 +2449258 +1208344 +2371389 +2111799 +649007 +590294 +2243496 +678771 +844316 +2691249 +1235932 +1666596 +1823018 +1645950 +441239 +2750372 +1956071 +2014121 +1940118 +1347970 +2056640 +1369459 +950763 +775033 +509286 +2111777 +2734279 +509290 +2073267 +129075 +1723183 +230179 +950778 +719124 +509237 +2014144 +2014132 +1526886 +2030428 +332263 +1489419 +213430 +719146 +213433 +213435 +950751 +1397548 +1526871 +2768716 +1267778 +2371402 +372154 +372164 +2768734 +337641 +332256 +2734287 +1608572 +2630860 +2449324 +1342203 +1940108 +775065 +1723177 +775011 +509332 +910763 +1526863 +719129 +1997658 +1920 +775025 +1823057 +2865354 +2744617 +1997674 +719183 +740566 +1025726 +2734298 +1348043 +2696789 +1849596 +775122 +2073277 +2706799 +1178148 +2111861 +649030 +719162 +2280377 +678788 +342455 +2367133 +509362 +649034 +2371414 +1379946 +383381 +1997684 +1489432 +1666612 +2553725 +2553782 +2706811 +1076871 +2111840 +2553747 +775076 +1208355 +2519708 +2553709 +910790 +649038 +509430 +74968 +1397554 +737006 +1412323 +775101 +899183 +1849583 +1412305 +2371416 +1526913 +2734299 +1708367 +1379963 +362705 +1379961 +737009 +1379958 +678808 +2355762 +1267844 +1208359 +74975 +2519690 +1316862 +2073276 +1950202 +678781 +1526908 +509404 +2553789 +1659404 +2519729 +1666614 +247451 +1397558 +740571 +1723212 +2744621 +1909206 +1997682 +740573 +1267872 +755232 +1267853 +1348049 +2073274 +2355761 +775111 +1666610 +74966 +2371415 +740576 +2696788 +775113 +1482341 +2428757 +1316887 +1144608 +2734307 +2865350 +1025722 +1940 +1025725 +1108365 +910807 +2865347 +509391 +1208356 +950800 +2519709 +2073287 +719166 +1849573 +1489464 +2553745 +1070943 +1849593 +2553739 +1052610 +719170 +2111857 +740558 +2696795 +2553786 +2449327 +950784 +1489457 +1489427 +678803 +1849571 +740561 +2750405 +1971261 +1770386 +2073273 +1377139 +2553796 +342447 +1348029 +372171 +775090 +1659402 +1997662 +1208369 +950797 +2014157 +1987202 +1909208 +2741856 +247448 +2739163 +2111864 +719175 +2519715 +2696790 +1849590 +509420 +388342 +1348065 +2111842 +1723220 +775075 +1412325 +2553743 +1348024 +509400 +1412327 +2837275 +2769053 +2768810 +2769378 +1702255 +2769187 +2768836 +2836374 +2768939 +2769290 +2769056 +2837451 +307004 +2768971 +2836844 +2837219 +2769479 +2243532 +2837354 +2768818 +307002 +129102 +2769483 +2837347 +2769471 +2769266 +421327 +2836528 +2768869 +2768824 +590335 +2836643 +2837422 +2769536 +2679322 +2836289 +2837415 +2679452 +2837100 +2768918 +2836752 +2768924 +991966 +1290991 +129101 +1702252 +2836734 +2769458 +2836426 +2769338 +2837334 +1702258 +2836136 +2836132 +2769308 +2836478 +2836367 +2679377 +2837253 +2836239 +2836649 +2836625 +2769172 +2837168 +1291008 +2679406 +991987 +2836204 +1121488 +2837345 +1702288 +2837111 +2056658 +2769215 +2769228 +2768929 +2679327 +2837154 +2768751 +388348 +2768862 +2836589 +2769403 +2836562 +2679356 +2836338 +2769609 +2837236 +2836531 +2836270 +1702259 +2768830 +1749650 +2836506 +2836278 +306987 +2837081 +2768983 +2769359 +2837293 +2768970 +2679438 +2836400 +2837068 +1702277 +2837055 +590346 +2769439 +2769023 +2836311 +2837021 +2836532 +2836298 +590326 +1652303 +2769350 +2679312 +1290995 +2836180 +2836327 +2769607 +2836183 +2836930 +2836906 +1702257 +2768925 +2837109 +2769218 +2837440 +2836810 +2349298 +2836729 +2769636 +2769388 +2837184 +2836518 +2768923 +2547690 +2836446 +2836889 +2836921 +2837227 +2768774 +2836418 +2836870 +2679363 +2837225 +2837140 +2769531 +2679424 +2837067 +2769012 +844340 +2837043 +2836989 +590356 +2769440 +991974 +2769594 +2768761 +1608576 +2769279 +844338 +2836620 +262714 +2837477 +2769517 +2837129 +2769234 +2837063 +2836651 +2679464 +2769354 +2823980 +2679446 +2837426 +2769071 +2837053 +2769326 +2836600 +2769371 +2769610 +37562 +2769632 +2837326 +421328 +2836687 +2837441 +2836554 +2836215 +2836943 +2837212 +1121483 +2837289 +2837408 +1290992 +2836623 +262694 +2769481 +2837287 +2836654 +2836466 +2769556 +2836433 +2836792 +2836190 +2769330 +2836860 +2836163 +2836854 +2769007 +2769203 +2823979 +1702292 +590351 +2768817 +2836853 +2837202 +2768785 +2836552 +2837300 +2836603 +2836709 +262696 +2769129 +2837307 +844350 +1749654 +2768955 +2836286 +2836671 +2769560 +2836702 +2836745 +2768801 +2837131 +2768792 +1036879 +2769404 +2769497 +2837272 +2837302 +2836348 +2768828 +2768932 +2768786 +2836195 +2243528 +2836326 +2837373 +2768878 +388351 +1702287 +2769467 +590317 +2679393 +2836820 +2837383 +2769590 +2836381 +2679340 +2836863 +2836833 +2836356 +2836859 +2837047 +590311 +2836704 +2836837 +2837394 +2836189 +2768859 +2769381 +2836714 +2836269 +2679335 +2837445 +2836647 +2836892 +2836895 +2837368 +1702250 +2769306 +2836563 +2836409 +2769016 +262717 +2836268 +2769563 +2769186 +2836447 +2769558 +2837030 +2836755 +1749632 +2769452 +2769369 +2769469 +2836255 +2847229 +844339 +2837420 +2836688 +2243539 +2836942 +2836815 +2769580 +2836579 +2836325 +2836683 +2837017 +2836375 +2769198 +2836220 +2836412 +2769292 +2769372 +2769010 +991990 +2768834 +844344 +2769267 +2836152 +2769621 +337734 +1608657 +590470 +413123 +372249 +1291024 +230444 +337736 +230513 +992041 +1412336 +372222 +129302 +2519736 +458638 +262828 +844365 +413139 +202459 +1513021 +590552 +230290 +1608616 +129431 +590379 +1933500 +372211 +230291 +262786 +230465 +202390 +1197221 +413042 +413159 +202446 +2056685 +421361 +590365 +129224 +262807 +590587 +590480 +307041 +262835 +2243596 +337742 +1608694 +1608611 +230264 +262813 +1608674 +129332 +413007 +74984 +129220 +129123 +372248 +992025 +337732 +432740 +590682 +129501 +129455 +413052 +337657 +590637 +230371 +844372 +230221 +230521 +2243555 +230301 +37589 +388413 +129474 +2307768 +337745 +1608661 +1680968 +307062 +1608640 +129264 +230433 +230479 +37632 +230536 +844402 +1513006 +1608622 +230286 +844386 +262845 +1608608 +202367 +2307765 +230282 +129118 +2547707 +129272 +37648 +1342205 +345558 +1608678 +1608607 +74980 +262872 +746052 +129301 +2100731 +37625 +590561 +262846 +2367138 +345562 +590404 +2547710 +202410 +2312149 +719188 +345553 +590514 +230447 +337731 +129495 +1513019 +1842928 +590662 +2243629 +906692 +1153151 +307069 +398356 +2243585 +262725 +412967 +2243569 +474696 +1407836 +388403 +372181 +372287 +230340 +388366 +729846 +129178 +2100729 +590606 +37660 +262801 +590485 +129321 +421349 +262796 +441263 +129226 +458635 +372284 +262768 +230321 +1608645 +230468 +337688 +230406 +408550 +2411260 +202372 +1385248 +413075 +129437 +590367 +590426 +844382 +2411275 +2623261 +1749666 +474691 +2243610 +421336 +129350 +388371 +398359 +413073 +413055 +1608690 +129380 +337683 +129239 +372260 +129484 +230392 +129288 +458724 +590685 +413041 +230311 +230515 +129391 +74978 +37645 +775138 +1489467 +307030 +678823 +332283 +337691 +202412 +1235939 +1849612 +230214 +432753 +2759524 +230469 +1652307 +37601 +307057 +37616 +129465 +590697 +729847 +1898071 +262803 +337647 +590449 +129186 +2553800 +706930 +1971263 +413002 +202385 +345600 +129258 +337718 +458686 +590553 +230206 +413129 +388382 +706927 +37659 +129289 +230256 +372261 +590392 +906695 +2100768 +590510 +388410 +262865 +129477 +590617 +230232 +372236 +230292 +372198 +129150 +413154 +992043 +372194 +844362 +412975 +2100725 +590515 +509478 +230544 +388399 +129137 +262722 +388373 +357489 +2449348 +1702316 +262731 +345605 +1898064 +372256 +230425 +590464 +1235956 +129130 +129317 +2286993 +372244 +509463 +421381 +590475 +1513033 +590614 +1608679 +1608648 +2553802 +202358 +413113 +337746 +590582 +590642 +129156 +1342209 +458721 +230309 +1208384 +412965 +1608638 +388379 +202468 +129304 +2243590 +345588 +1782921 +329060 +2243593 +230414 +1608629 +307029 +2243566 +230393 +2509477 +388365 +372195 +844424 +748549 +202473 +413092 +590659 +590417 +2100770 +230537 +1235938 +337664 +230503 +230487 +1100727 +1407851 +2243694 +844471 +844515 +1487117 +1947271 +755235 +1954099 +844472 +844585 +590711 +844550 +2243685 +1947290 +1036889 +844506 +129565 +844528 +992068 +844504 +129541 +992057 +2705016 +37715 +1686101 +1456508 +509491 +2243673 +129524 +1909214 +129563 +1526925 +844554 +1702317 +1608759 +2411280 +129528 +765632 +590735 +1947267 +1608742 +1608696 +2243643 +844478 +1291039 +590740 +2100777 +2553806 +2056688 +2623270 +1608729 +1608730 +844460 +1250247 +2243655 +1909217 +1407841 +590734 +129560 +1456472 +509483 +307075 +129514 +2111891 +992072 +509485 +775140 +844476 +2243645 +844584 +129569 +2056721 +129534 +2056695 +1082743 +2411290 +590730 +129556 +1608739 +1082742 +37709 +509488 +2056705 +1309994 +2630885 +1456466 +844568 +844495 +906697 +844485 +2411289 +844588 +844502 +2630883 +37702 +262880 +1407862 +1954098 +307074 +844546 +844491 +765630 +2100775 +1121497 +590729 +844464 +1407855 +1036892 +2623271 +262892 +1456493 +844480 +129580 +1049907 +1979 +2371441 +2111908 +1909221 +2030448 +1197226 +590753 +247479 +2073329 +1723237 +1666620 +1049905 +2312166 +1407863 +509495 +2696803 +2312175 +1061813 +950816 +2428779 +910864 +2553861 +458744 +1819123 +408555 +1412350 +509529 +75032 +910835 +2073313 +1489488 +590752 +1526985 +1489494 +2630896 +1052627 +1526990 +1526933 +401038 +1108368 +1412361 +678837 +775196 +2073332 +75022 +2111959 +2371451 +2010508 +950828 +2553860 +649042 +775161 +1723240 +1849643 +755248 +1787739 +441298 +775149 +1723236 +2111937 +1526966 +509526 +2553812 +2286999 +129586 +1482352 +1403696 +1178154 +2111945 +75034 +1787742 +775152 +910841 +247474 +2553848 +383391 +1379967 +1723226 +910861 +1316896 +2111972 +2030446 +1526991 +75025 +678845 +190351 +1723235 +1526941 +910849 +1482350 +401041 +190352 +2111963 +1061810 +509515 +1235960 +2428770 +1526961 +1412348 +2111914 +1526986 +910846 +441304 +2553851 +899191 +401032 +1666624 +474709 +2287011 +1645963 +719198 +678835 +2111909 +1659409 +910863 +509492 +458749 +755240 +1983 +401033 +2014160 +1787728 +37726 +1025735 +441276 +1898077 +75008 +2030452 +2111931 +2371439 +2030457 +1052625 +775198 +899195 +2449360 +1100744 +2519749 +2073310 +2371437 +2312176 +992075 +2312172 +899189 +1526987 +748550 +2371453 +1489499 +1608839 +1608816 +1526993 +1051300 +1456587 +337761 +992196 +307087 +129612 +1513058 +345611 +934693 +2243747 +1717487 +37767 +950840 +1132606 +2307790 +129651 +398363 +1645968 +590768 +1608811 +1513067 +844668 +1235990 +934688 +590816 +1487118 +2553864 +37780 +2307815 +372318 +1513104 +1070967 +590857 +129683 +1608768 +2243755 +37764 +458762 +1811359 +1141114 +2411311 +1933516 +2243725 +590755 +664117 +2449383 +37788 +1342241 +590832 +129689 +1811363 +992154 +2056797 +906725 +1100752 +129623 +1236023 +2243744 +1652317 +1608865 +992231 +129631 +992156 +2287022 +2100826 +37745 +992120 +1134191 +1342222 +590818 +1342214 +2056756 +337754 +129707 +230576 +992201 +37768 +2100804 +129606 +1513103 +844683 +1403156 +992172 +1762823 +129670 +1236008 +37729 +934658 +1049909 +1070974 +37757 +1141115 +1768365 +934661 +2769642 +1680972 +1342235 +1235995 +2354916 +1121506 +1968492 +992137 +1821274 +230641 +2056775 +2056779 +1702322 +404928 +1121504 +765650 +1153164 +1821266 +1456574 +2100786 +1100747 +2371458 +2307788 +1456522 +1608863 +590777 +1811357 +1236015 +2623277 +1898098 +190359 +992180 +1070965 +1260714 +765637 +2759526 +345612 +1235996 +2547744 +1236007 +37742 +337765 +1236025 +230585 +2411322 +1291051 +1749702 +230574 +992085 +1456567 +992151 +1197247 +992106 +1407868 +1158098 +992239 +458769 +844610 +2449384 +1100774 +844638 +1100780 +1823068 +2509498 +1070977 +590766 +2312183 +590831 +1768362 +2111977 +1100759 +1456568 +1153157 +2509515 +129591 +1374953 +992105 +129669 +992131 +2243706 +1608849 +230623 +230613 +1768361 +1680974 +129602 +1141101 +2307811 +2243718 +1933511 +357522 +2630903 +2056764 +844671 +2243716 +398367 +1235968 +992139 +844700 +129727 +230578 +1400619 +1723245 +1070982 +844612 +844613 +2509501 +2449377 +1121512 +372299 +1364846 +129703 +844626 +1235964 +2411323 +2243771 +2411328 +2759531 +906719 +1235973 +2547725 +906708 +288928 +129710 +844667 +398366 +2696805 +1811352 +1898078 +2100814 +37803 +1513076 +2759540 +1141099 +992103 +1702327 +37812 +992093 +1947300 +37731 +992090 +844630 +2623279 +202507 +129726 +1947306 +1197239 +1141089 +844632 +1260710 +1456570 +2354919 +2354917 +1051304 +590799 +1513049 +2630905 +2243767 +992110 +388422 +129640 +1782923 +1342215 +2547722 +2100780 +1236031 +1342220 +202513 +1058129 +1051301 +2349308 +230648 +2354918 +1342244 +1842937 +590804 +2553892 +992249 +458811 +1141120 +1659426 +2849898 +1527069 +1052637 +2312216 +2371467 +678878 +458798 +2428788 +2312200 +1348084 +509569 +1527052 +458801 +2865357 +486290 +230669 +844752 +1070990 +775250 +1489529 +2553925 +1166015 +1108383 +2553938 +2287026 +1527063 +2312227 +745579 +1849675 +2679483 +1787752 +1134193 +1407878 +2312204 +2849920 +950859 +1316946 +2553879 +1208406 +1527056 +1898131 +458794 +2553946 +992274 +1708391 +398368 +950861 +75053 +2553918 +992252 +458825 +775236 +736127 +357530 +1236055 +590874 +1527076 +910889 +1316937 +1121515 +2312199 +678875 +1645971 +2428785 +1933525 +129767 +729872 +2750423 +910875 +2553919 +1412372 +2696815 +509578 +247495 +1645974 +1909242 +2769726 +2769741 +1316945 +590878 +1680989 +649055 +2769691 +2623288 +1608898 +2428782 +1933526 +1947314 +1608908 +432764 +934735 +1770407 +1956108 +2312229 +1527055 +2411359 +1659423 +844739 +1121514 +844744 +307110 +2769671 +2312189 +1166009 +1061823 +1527041 +2371461 +1787757 +129772 +2553940 +1821280 +1666633 +1708384 +2553905 +1527054 +509576 +1260724 +906731 +1291075 +1723264 +1652330 +775240 +678867 +2769727 +213484 +1782931 +1144611 +2371482 +1316950 +1987207 +1260716 +2769733 +2312217 +2428790 +1089213 +1197265 +75044 +2312225 +2769692 +678874 +2623299 +357529 +2769656 +2630933 +2553881 +1166010 +1300515 +1051312 +2769717 +1300513 +458797 +2553928 +2769702 +1108382 +1849691 +1645972 +910895 +129756 +2623293 +307105 +775225 +383396 +590870 +2371472 +1608886 +458815 +441321 +2769654 +129746 +2630941 +910904 +910885 +1933519 +2509517 +1197270 +213487 +2371497 +1489509 +2849916 +934728 +1909232 +755250 +2630926 +230673 +740587 +332293 +75065 +2287038 +1197262 +1208412 +2553887 +1250251 +992247 +75059 +1045505 +413167 +1702338 +2112007 +388430 +2287028 +1061817 +1819126 +992262 +678917 +2734332 +719218 +2865373 +1909273 +2554020 +2449538 +1770416 +2630962 +1723298 +262959 +1666642 +213493 +1135799 +736129 +2449471 +2020853 +1386505 +2011 +910921 +1680995 +2553970 +2734321 +1208425 +1787805 +1770427 +2744650 +775256 +1933531 +706977 +2553958 +729885 +509631 +2073346 +202528 +1100816 +2312247 +1666653 +1364853 +2630987 +2750428 +230698 +1141127 +2631008 +1770433 +1971277 +2449531 +2553998 +2553962 +678898 +590910 +2630986 +1153177 +590927 +2849949 +1348100 +844772 +1153178 +1456598 +1666657 +2428826 +844757 +1135801 +1956128 +1849754 +1987211 +950871 +2849948 +2849966 +590931 +590883 +441335 +2449424 +1971278 +2744647 +1770414 +262956 +1527106 +2371514 +2553954 +910911 +2287044 +590922 +2449469 +1702347 +1527082 +2631006 +1723293 +2449527 +1379991 +737018 +2422423 +2428811 +1652331 +1250257 +1787789 +2750462 +1379975 +2449443 +2428817 +2630988 +2287061 +1052643 +1849748 +2706835 +590949 +1071001 +1089227 +844760 +190370 +729891 +590887 +262950 +992309 +1787799 +719209 +2849951 +992307 +2014163 +1811382 +2706837 +2449481 +37869 +2554030 +1348093 +2449450 +1849760 +2010513 +2449537 +2449477 +1178198 +1723285 +1787797 +1811388 +1197274 +2371517 +1291078 +2428809 +2449474 +1849775 +1407880 +2744640 +1527091 +262963 +1178201 +1787815 +1379984 +1666655 +1208433 +2273834 +2630973 +1153180 +1401893 +590933 +1100827 +509614 +2449494 +844761 +1787794 +1761084 +2014171 +1608932 +2849940 +1170621 +2553992 +2449430 +590951 +1770431 +2849954 +1089233 +1158110 +1950208 +590889 +230694 +2553994 +1723270 +2449495 +1393195 +706978 +1379990 +1348101 +1489545 +2449489 +2554000 +1823077 +2630989 +2630971 +1400630 +906741 +1849725 +509596 +2012 +1236091 +934744 +1971281 +1456600 +1178197 +404937 +2759546 +1144616 +1208436 +2706839 +751352 +2630982 +950863 +2428812 +934762 +1158114 +1723281 +1348096 +509602 +1134195 +2449536 +1390802 +706982 +1036925 +2554013 +1770426 +1909265 +202532 +1666651 +2449457 +1770429 +262958 +230686 +1489540 +75073 +262967 +775297 +2287068 +213502 +910940 +474742 +751368 +1316977 +910926 +509639 +1178211 +1823102 +1071003 +1025752 +2020876 +992330 +1386508 +1787844 +2312269 +934765 +1708404 +1401897 +1208453 +1787826 +1527138 +2112067 +1849858 +2554069 +910985 +2009607 +190376 +2449606 +1108393 +2112113 +649065 +1208471 +2112085 +1348119 +1036929 +1178206 +2287088 +1316979 +2631045 +2112064 +1089240 +1348109 +1787836 +910929 +1723306 +1909291 +1144632 +1267918 +2243807 +1482369 +950893 +1787864 +678936 +1316989 +1267916 +1317003 +910963 +1849824 +190380 +2631023 +2449575 +1208479 +1909296 +2734337 +2003681 +1666673 +590965 +775288 +950896 +2287085 +213495 +910980 +1527119 +1527143 +1208475 +1823108 +775265 +441359 +401049 +910973 +1397577 +2112073 +2312276 +910932 +509681 +401053 +190374 +1527173 +775286 +75093 +2067332 +441358 +678937 +401051 +509641 +775283 +1849851 +1178213 +2112132 +2020868 +1158118 +1170622 +1527116 +1909294 +1680999 +1482368 +775287 +2371534 +2516371 +751366 +1267910 +2428842 +719236 +1316969 +719229 +1052675 +649064 +2112063 +1749718 +1527156 +230706 +2750507 +1659440 +1377155 +1071007 +2449585 +2631031 +1267922 +844781 +1527174 +1849863 +1527178 +1686133 +992325 +775304 +1049918 +1527151 +441341 +678933 +1823109 +1316968 +1061834 +509654 +2449612 +2030498 +1527145 +1527175 +1527179 +1708405 +2112088 +2112080 +950913 +950895 +910975 +1666684 +474738 +678923 +2112081 +509665 +910979 +1849837 +2449572 +1267921 +2112127 +262970 +458839 +745582 +2112107 +441349 +737021 +590967 +2112079 +2014188 +1089236 +775313 +509700 +734886 +401046 +1527159 +2554090 +2411368 +1527120 +2554057 +1527172 +950911 +1489553 +2020870 +2449623 +1787853 +383399 +2371521 +678968 +1316993 +2020874 +37871 +1527176 +2449573 +1316992 +899218 +2449577 +736134 +353418 +2631094 +775335 +1787928 +474763 +441405 +755257 +2039 +1849909 +75144 +2428867 +1129894 +190384 +2034 +441364 +1061856 +2554117 +326322 +1135809 +2371541 +1787912 +1645983 +1849975 +1489564 +458841 +1723326 +297720 +1723335 +1108409 +2287095 +2312307 +2631104 +1158179 +1132617 +1909306 +1723348 +426035 +1956138 +1208495 +1909320 +1144655 +2554097 +1144660 +1849946 +2009608 +2030511 +2449709 +2428870 +2428872 +2449742 +1787880 +2449656 +934771 +1108408 +1527201 +950959 +474762 +75149 +1770458 +1025759 +2449698 +2065 +1208529 +2631137 +2631133 +950933 +1208498 +2312299 +342482 +1666702 +1129905 +2030504 +2371558 +1686159 +1208528 +775348 +1250297 +950939 +1666690 +1909327 +678993 +441415 +1686145 +2449664 +2312291 +678985 +2312293 +509727 +1482373 +1129902 +2729816 +1686154 +2750529 +1527227 +2449752 +1849960 +1158125 +353431 +1686158 +1787899 +75120 +1178241 +2287101 +1208493 +1342262 +1250294 +2043 +992333 +1108400 +911009 +1666705 +1412410 +441404 +2631108 +2371549 +509748 +2371568 +1052676 +247532 +2371569 +1770469 +75154 +1849891 +2112163 +755262 +1823131 +2047 +190383 +2073357 +401066 +213533 +2631077 +1527207 +2449712 +247546 +1527212 +1178228 +2631086 +1025761 +678990 +190389 +1787915 +441389 +2750523 +2112141 +1317004 +2449737 +911008 +2449744 +2554121 +2631073 +2051 +1025765 +509763 +719242 +950968 +1666700 +1412390 +1723346 +1208497 +2449708 +1666709 +247545 +1849952 +2449690 +1787913 +1770465 +1158173 +2519790 +775331 +1849982 +2058 +2073353 +1158159 +950927 +910988 +678984 +1527198 +1061846 +1761086 +755258 +719239 +950938 +950975 +1787895 +2449762 +1250263 +1076880 +1787891 +1208500 +1208539 +1089251 +332310 +775333 +1178230 +950947 +2631120 +1527233 +950965 +75114 +2750527 +2449672 +1317014 +1208515 +1666697 +2287097 +2554127 +1666694 +2449716 +362730 +1158141 +950934 +950952 +2750530 +1787907 +1787920 +1108404 +911035 +1412403 +1412412 +1686167 +775345 +2112165 +1250283 +75187 +1317034 +1788044 +2312333 +1666719 +2449780 +1250314 +2084 +1208581 +934773 +1058135 +1788007 +775364 +1208558 +1723399 +1788015 +509787 +1787994 +2734343 +1909363 +951023 +679014 +342486 +1909389 +751380 +1849994 +2449887 +1208560 +1158187 +1708418 +1527259 +247579 +755264 +1909404 +1787938 +951027 +2631255 +2112176 +1158196 +2449882 +2449794 +2449835 +1686175 +1723388 +1723395 +75182 +2449833 +1108412 +2631186 +1158195 +1412415 +2865385 +2631258 +1061861 +2449817 +1909388 +1412423 +1909392 +1158193 +1412430 +1823140 +474769 +1788009 +2631170 +1369476 +1403701 +2631175 +2631221 +1178246 +1909403 +1788010 +2020889 +951038 +1412419 +2449888 +1208555 +1412432 +1788000 +2631222 +649090 +1052695 +775368 +775369 +1686178 +1787965 +1250306 +1787956 +1158183 +1158202 +2449886 +1788025 +2631183 +75189 +2312351 +2750540 +247590 +509810 +2112175 +911054 +75186 +1089267 +2449864 +2371576 +679003 +2631204 +2312329 +679016 +1100832 +75177 +1089259 +1527262 +751377 +1527266 +2449934 +2312342 +1788024 +1909351 +1787962 +844854 +1100843 +1681007 +2865414 +2073362 +2865700 +1608956 +1609026 +1236126 +1933540 +1608952 +706991 +2865436 +1749727 +729916 +1898158 +1527283 +1609032 +2243850 +591001 +707006 +1236107 +1898153 +1749733 +1909409 +37881 +1782937 +1100842 +129878 +992368 +1400637 +129842 +2428883 +1141152 +2865610 +388438 +2112202 +129841 +129839 +2449958 +1749743 +1717514 +1100857 +2112198 +844862 +1527279 +1968507 +2349338 +1121537 +1456620 +1377158 +1768367 +2865573 +844866 +1208583 +1407895 +747678 +1236108 +1788052 +345628 +2865485 +2759560 +2449955 +129876 +1153185 +486298 +1823153 +1342264 +1396537 +1456607 +706993 +1608977 +2718933 +398371 +934793 +129855 +1236103 +775381 +664144 +1762828 +2865478 +1374962 +992380 +2865718 +2243816 +844830 +2100852 +1971287 +262990 +2100847 +1342273 +729918 +2865555 +1071039 +2411385 +1513143 +1609024 +1842969 +2865494 +992375 +2243820 +2718938 +1051317 +1310013 +2865577 +1051321 +2865699 +1396538 +1087295 +2865670 +1968509 +1782938 +2865540 +2865652 +1049922 +2865664 +1909411 +2865442 +1197282 +992374 +1608991 +2100862 +1342270 +2623316 +1389698 +230719 +1386512 +1236114 +230717 +729900 +398374 +1717527 +2865449 +1909408 +1898175 +1527286 +1407893 +2025552 +1717521 +458860 +1608953 +1389692 +2865552 +1134196 +706988 +2865421 +1609037 +2865568 +2865472 +2518316 +1317044 +1153182 +2865625 +1947325 +2100841 +1407889 +1717518 +590986 +2865695 +1527281 +2865447 +2865626 +1811392 +2518313 +1178251 +2865441 +729902 +1666732 +992365 +1717526 +2691267 +2718929 +486297 +2631259 +2243815 +2519802 +2865683 +1236132 +458845 +1513126 +413177 +2623325 +129826 +844793 +2865489 +1947324 +2312376 +129828 +1968511 +1681005 +129871 +1898165 +1609029 +719246 +1608964 +2865516 +2100838 +1100838 +2865705 +2759559 +1681018 +992417 +1609137 +202542 +844906 +2243873 +129908 +1456662 +230727 +37904 +1686183 +230733 +775395 +1153188 +37952 +2243911 +1456673 +1609050 +129894 +2443446 +1898189 +1702368 +1702365 +2243872 +1609062 +992426 +992413 +591033 +1141154 +37916 +1456682 +1166039 +844996 +2449976 +1456636 +129932 +37905 +129914 +37914 +2090 +844932 +844901 +2056836 +1609125 +230729 +1071047 +992451 +2554168 +129921 +37893 +129923 +1609140 +1456638 +1178255 +844879 +2243892 +129922 +1898193 +844978 +2718942 +1052698 +2729818 +844913 +2443442 +37947 +129916 +2056830 +992436 +2030520 +2518318 +844987 +934807 +1456672 +2623329 +2443444 +2449978 +1071051 +1049923 +992464 +129928 +844892 +844923 +934812 +992449 +1407911 +1456683 +458862 +1702373 +230750 +906751 +37936 +230735 +844943 +707017 +775385 +37928 +37907 +844968 +844964 +2518319 +1609049 +844905 +844961 +1609132 +844952 +263005 +230736 +729921 +1374965 +2449970 +1609076 +992431 +911061 +1208591 +2443449 +649106 +845016 +2847237 +2056841 +2030529 +1954115 +345630 +1527313 +1842994 +2450004 +1380006 +1390811 +404945 +1178259 +75199 +1666740 +1823165 +1717534 +1898199 +1489599 +775397 +591049 +2554195 +591065 +1527298 +288934 +2554182 +1645989 +129942 +1723416 +1823171 +1089271 +129950 +2030525 +2554203 +1609160 +1850043 +1267939 +664156 +1850025 +1770487 +509823 +1348134 +1403163 +1317056 +2518321 +1393210 +1482386 +2112224 +845019 +845008 +1412448 +2030527 +2355779 +1291094 +1609147 +129949 +707022 +2073372 +263025 +263022 +1310020 +845006 +230752 +2631282 +2449999 +911069 +1374968 +413179 +2554190 +2847231 +509831 +263023 +1659455 +2623333 +1310016 +2554205 +190415 +845018 +2554172 +951051 +1702403 +2750590 +1317053 +1291090 +247599 +1609146 +719248 +1401905 +1082755 +1380007 +37958 +1390812 +2449997 +509825 +1310022 +2824002 +1609153 +992501 +2010536 +1659453 +129944 +1390815 +1412446 +2243919 +1850033 +2631287 +1100882 +2287171 +1342299 +1141173 +1036947 +1100887 +1811417 +1763925 +992524 +2416026 +1788105 +1260751 +1071077 +992584 +1178266 +2112273 +992512 +458881 +263054 +2450071 +911078 +992547 +1291096 +1609169 +934881 +432781 +1236182 +1250325 +130014 +130006 +992595 +329095 +2102 +2450080 +1609242 +746060 +1513180 +1134220 +992571 +591080 +263051 +1153211 +404954 +1909423 +934856 +934864 +202560 +230768 +1811436 +129967 +1153203 +992597 +1527321 +1898239 +1788100 +845048 +707032 +2428908 +2243944 +2516383 +1909420 +1134213 +2312405 +1898240 +2371607 +2623348 +1166056 +1681031 +1898217 +1456703 +2411406 +992530 +992602 +1134211 +2420766 +307137 +934877 +1153198 +38024 +2371613 +2623344 +129987 +2769780 +230820 +38070 +1850053 +38009 +934847 +1788088 +1527316 +2750609 +474789 +1811412 +992557 +75207 +2631311 +2287174 +1513176 +458888 +1788099 +38042 +1811445 +230782 +2443463 +353435 +1170643 +1260748 +329093 +2509539 +2349347 +992551 +1061875 +458910 +2741407 +1527325 +2411402 +1823175 +755265 +2243966 +1456711 +1390816 +1763928 +1770499 +911080 +329094 +707030 +247604 +1788065 +2450065 +1770504 +679043 +129996 +1898218 +2112266 +130017 +2750594 +2243955 +1166044 +129970 +1782962 +1898234 +2734355 +1609236 +1166059 +458908 +707037 +2307893 +38015 +1051330 +1702412 +458870 +2371622 +591104 +2631302 +458893 +129994 +1178270 +413183 +2631326 +1412457 +2519811 +2243959 +2312416 +2450056 +775405 +2744687 +1527320 +1770505 +404963 +38052 +1236172 +1850071 +129961 +1850062 +1749754 +1260743 +2554208 +1609184 +2287158 +2243954 +729930 +307136 +1166067 +1132624 +230826 +1898235 +934869 +1061876 +1850092 +2450077 +1770510 +2312393 +129979 +1898231 +1788085 +1178268 +1456697 +1456706 +1609179 +1702408 +2519812 +1609181 +1609223 +2623340 +2734357 +1768373 +230807 +2422444 +934872 +458896 +1788087 +845022 +129966 +362746 +2547777 +2010541 +591095 +1166054 +2443462 +906770 +129988 +1609210 +432789 +337798 +591090 +1158221 +1089280 +1141182 +2420767 +2623345 +2750601 +1811439 +992552 +2287166 +1898222 +2349343 +1609174 +37960 +1609187 +1489615 +845024 +230790 +1052711 +2631306 +474787 +263033 +2371621 +1788069 +1666754 +1997733 +230818 +845043 +486304 +388444 +1527338 +230789 +1609227 +1197308 +2750635 +992629 +247615 +1788166 +1762830 +1527348 +2133 +591129 +2450119 +1708428 +2287181 +345652 +345665 +1158262 +1170651 +2112368 +2450217 +934904 +1788128 +2112343 +1158246 +2450334 +1666781 +2450289 +1763939 +230847 +2120 +2450245 +2100894 +38103 +740610 +1144691 +951068 +1178280 +1489625 +230863 +1061885 +1412469 +1348142 +775421 +2744695 +1666765 +1456731 +2750615 +1527368 +2450151 +1178276 +2450237 +1158225 +337823 +1061882 +2519817 +337812 +2287200 +2750630 +2009611 +2450308 +2131 +906773 +130036 +1761087 +2450305 +398406 +2450253 +1666757 +1909440 +1788189 +2450208 +1236207 +1811462 +1850111 +2112313 +1071093 +2450129 +740611 +1770520 +2706862 +1141190 +1317061 +751387 +130043 +1144704 +1487134 +1527365 +1132650 +2428936 +1971293 +2450131 +1396546 +2450280 +1052725 +1987224 +2450324 +2243985 +2744689 +1401915 +2450315 +2450270 +1456725 +247618 +1036953 +1158240 +2127 +2729827 +2112345 +1609287 +2450201 +1811455 +1609292 +2750642 +775422 +1482392 +2450323 +1052747 +2554248 +1681038 +332330 +1403166 +1909433 +2519820 +345647 +1788214 +2030535 +230869 +992614 +1158254 +1763935 +1260754 +2100896 +1788167 +2450122 +1527362 +1166077 +1412477 +2371628 +1811458 +2428939 +2287176 +845068 +1348144 +332324 +38108 +2428968 +2100897 +2450225 +337827 +230854 +2243995 +2450112 +1135818 +2020909 +1170650 +342493 +263075 +2428956 +38096 +202592 +2056845 +1144698 +2428954 +1609267 +1788141 +1380026 +1823185 +1770517 +1158251 +1821285 +1380028 +2112307 +1666778 +719254 +591131 +1788123 +1823194 +337822 +345663 +2112289 +2100890 +1527351 +1788142 +202589 +509868 +1968515 +1412466 +2554240 +2519818 +509863 +1850124 +1659461 +2450294 +1788200 +1659459 +1788170 +1723437 +202591 +1788118 +2450185 +509871 +1166081 +1135822 +1208607 +1134224 +1723450 +1236218 +951077 +775445 +401078 +230891 +458927 +509904 +2547781 +911121 +1749765 +2631405 +372364 +1609321 +426054 +2750651 +775425 +1823204 +746064 +1158282 +2450364 +2554269 +2287211 +2355786 +2450341 +1166107 +2450357 +1850190 +1763949 +2729829 +1933575 +1178288 +2371640 +1170656 +951079 +591145 +202593 +230892 +951082 +1609311 +1850185 +2450452 +1527417 +719257 +2519825 +992650 +1208626 +2450340 +1788254 +2450420 +2450377 +591140 +2450409 +2554285 +38130 +1850187 +1134229 +1121552 +458919 +1909462 +1527449 +845077 +2631418 +474793 +2554275 +1052762 +2450441 +845086 +992664 +1527442 +1527414 +2631379 +1527403 +486307 +911122 +2631411 +1686204 +349637 +2631416 +1108430 +349638 +992663 +1129912 +230890 +2155 +911113 +2073396 +1933579 +1850152 +130052 +2631402 +2280404 +2450483 +2450349 +911126 +1850146 +1782966 +247623 +1850174 +230886 +679060 +2443472 +719264 +2149 +1708433 +404973 +911106 +1761094 +1153227 +951086 +38116 +2706865 +432791 +2631365 +1342306 +1909450 +1208631 +1788246 +349635 +1071122 +458922 +2450481 +1666787 +1208621 +1666797 +1850135 +441455 +1158279 +1770540 +911105 +719262 +75228 +2631361 +372366 +1170657 +1609299 +38132 +2450385 +1770557 +2287212 +2554268 +1788263 +1121554 +719259 +38127 +2422459 +398419 +2554301 +992666 +1208623 +911116 +2519828 +2367153 +1051335 +2696835 +2631494 +2429024 +230897 +2554326 +1686235 +1076897 +1089300 +1686227 +951107 +509919 +2073410 +1666810 +372369 +509926 +2744711 +1456750 +2411416 +398421 +1909480 +1129919 +398426 +388459 +992690 +2631474 +2554389 +2769904 +1412496 +1686225 +1208649 +2371653 +775448 +2307906 +1823211 +1317072 +1527461 +2112376 +2631476 +2769887 +1527502 +474800 +401079 +2450529 +2554390 +2073400 +2631430 +202597 +2769846 +1317083 +2554379 +230895 +1702429 +2450522 +1236242 +2450605 +2769802 +1071137 +2450593 +2769909 +2450633 +441472 +1170669 +458932 +1527463 +404979 +458934 +1956160 +1788308 +2744699 +2706871 +408607 +1666803 +337840 +2623370 +2769843 +2554311 +2450689 +1850230 +413218 +2554334 +2554350 +1397599 +2287216 +1823229 +2554304 +2073406 +1527489 +2750673 +1760134 +1850198 +2025562 +408601 +591158 +426055 +2769870 +2631503 +213578 +1158295 +1071136 +2769848 +2769819 +130097 +2554357 +2450613 +1823214 +2769807 +2554322 +2631499 +1134239 +2631486 +2769896 +845109 +1686231 +1132673 +2554335 +1236234 +1971295 +130078 +1397600 +899272 +1702433 +1811488 +2744701 +2450662 +1686223 +1456756 +247627 +992698 +951090 +2554325 +1170665 +2554381 +2744704 +992703 +751394 +951103 +2429013 +2450656 +2450673 +2706878 +230917 +1788322 +679073 +337841 +1788317 +1788340 +2100901 +432804 +1956163 +1132668 +2450530 +1686243 +509918 +2769811 +2450618 +2450547 +1686228 +2020915 +2307905 +38143 +2067340 +1170673 +1762833 +1770566 +2450533 +1850221 +1380031 +1100912 +1208657 +2750664 +458936 +1208651 +2450569 +398428 +2554318 +2631501 +2691275 +1061913 +2450582 +1686245 +1291099 +1170664 +1850248 +398423 +1052769 +441463 +401084 +2009617 +2750661 +1489641 +679067 +130065 +1666809 +1909475 +1527474 +2769810 +1158304 +1482401 +2769854 +2312451 +230896 +2020917 +75236 +2696830 +130067 +486310 +2769879 +2750679 +1061906 +2769830 +2450645 +1850214 +2312455 +2769883 +2450546 +765685 +2287221 +2112467 +247656 +2010556 +441483 +2112468 +1850327 +1850318 +2450739 +1267962 +2112446 +2631585 +1158329 +2112457 +1788420 +2450892 +2073441 +2631584 +1823240 +362757 +2631548 +2750710 +2429057 +1723468 +992705 +1178329 +2554437 +775469 +1666822 +1997741 +2450888 +2280413 +2631534 +2020945 +1121564 +751398 +2450835 +357548 +2450896 +2631521 +130102 +1659475 +1527549 +1770590 +1049937 +1348164 +441501 +775505 +2631580 +1686254 +2450909 +1609354 +38167 +190434 +474812 +934954 +1527533 +1850304 +1141217 +1158334 +2729834 +2631529 +2450708 +1609350 +1609349 +2450912 +1770583 +2554425 +2750746 +2010561 +230936 +1158328 +911193 +1763963 +1061943 +213585 +2073434 +707048 +911173 +2450874 +2422462 +38173 +911156 +2112435 +1850336 +2112402 +1702453 +2189 +1178338 +2744714 +2112480 +1076902 +2554395 +2112403 +1076903 +1850307 +2750703 +353446 +2554393 +2631542 +2112445 +775470 +1527534 +679079 +1763965 +2184 +213588 +458951 +1788384 +1049942 +934939 +2279310 +2279311 +2422464 +2450773 +1681059 +911175 +1770604 +1135838 +2554411 +2287231 +458956 +1036958 +1770593 +1052776 +1823234 +1158314 +2312465 +1770581 +1850265 +2112486 +1850295 +2112462 +1702456 +353448 +775477 +1527520 +1377174 +765689 +2450716 +845137 +737028 +2631549 +1135835 +1788345 +2280412 +1823231 +2450801 +1527551 +1763966 +458952 +1364882 +845114 +2112423 +1763962 +775506 +474813 +2631530 +2020939 +1850279 +2824025 +2244005 +1850260 +2450782 +1850320 +326332 +2450867 +1260776 +2112465 +2554434 +1788422 +1527558 +2450768 +2020926 +1061944 +2450769 +2554400 +345677 +2020940 +2355793 +1158332 +2450839 +1135841 +2750750 +1178332 +2287234 +202602 +1100914 +2631523 +2450745 +911187 +1121562 +1412515 +75268 +1049941 +2706889 +2450814 +1850335 +1208682 +2112463 +2450732 +1819151 +509936 +1788403 +649116 +1788382 +845139 +1788429 +1788387 +2631577 +230925 +1770594 +1686260 +1412504 +906782 +1819153 +1823239 +1850256 +2450731 +1609358 +75267 +2750747 +441492 +509943 +1158309 +1317102 +509929 +1788375 +509947 +1397606 +2450860 +1178313 +1412514 +2112487 +329103 +1025791 +2554497 +1850369 +992722 +75288 +2244014 +1770608 +474823 +2112528 +951171 +1108465 +1513194 +2554480 +1250375 +743465 +2287238 +2112537 +719286 +2450928 +1489675 +1208693 +1686294 +911225 +1158369 +1527592 +1666835 +510004 +1761102 +2312480 +1348167 +474826 +2554482 +934960 +326345 +1397607 +2750751 +510012 +1788441 +2056850 +1317105 +1909538 +740618 +408615 +1489682 +1412533 +1823260 +353451 +2220 +1823252 +2631620 +510002 +1788463 +2312486 +1250365 +1089314 +1898271 +2312494 +2371661 +775524 +679109 +2450943 +1823255 +2112560 +2014231 +2631636 +2112514 +951158 +775523 +1686308 +1909531 +2554470 +2112554 +845145 +1686300 +1850347 +1489681 +1909525 +2349358 +510016 +1058157 +1850403 +2450925 +1052777 +75284 +2450931 +2509555 +951133 +509971 +1788450 +1788462 +992727 +2450926 +2112522 +911238 +2312478 +775520 +719287 +510015 +1686286 +2371667 +2030562 +1788442 +1527588 +75275 +2450939 +1260781 +1686304 +1666834 +2554478 +1158367 +2691278 +2112510 +951164 +510009 +1788456 +510010 +1850361 +2554501 +951138 +1686298 +1197321 +1482406 +755298 +992711 +1788439 +899283 +307163 +1141220 +1788470 +1108485 +2112579 +75298 +1317120 +1527618 +474833 +1527610 +679119 +1250396 +1076910 +1208764 +1850443 +1348176 +1850408 +911255 +1909557 +1646000 +2451055 +1166142 +75302 +2226 +383437 +1788481 +401101 +2451054 +1260784 +2020954 +75306 +1208744 +1061970 +426073 +1788472 +2631678 +1850417 +2729836 +213614 +2631642 +1850487 +1100917 +230948 +441513 +2451011 +1850465 +679117 +510038 +1850504 +1850490 +1108474 +1527608 +2451018 +2750759 +911252 +2750765 +130137 +2451047 +1317118 +1082783 +719292 +2451028 +2450998 +1250394 +362774 +649120 +1208739 +75307 +342519 +1823265 +1850467 +1821293 +2451042 +1208745 +1850478 +362771 +441515 +1250384 +353456 +213608 +474830 +1208732 +130141 +1788473 +2112572 +1208748 +1158374 +1144753 +2244016 +2696838 +1144764 +1144778 +190449 +426078 +2112587 +75309 +1850422 +2554533 +307190 +2112601 +2696848 +1178393 +2519843 +1997777 +1100928 +1250400 +2112726 +1380039 +2291 +729956 +1717544 +510094 +765702 +2519859 +2112689 +1788485 +510054 +307177 +2451066 +1178369 +1412564 +441523 +2451093 +1489691 +1412562 +2100917 +510089 +992778 +372386 +2519864 +2631702 +1513205 +1850514 +1036961 +2244023 +775574 +130184 +1489690 +1850551 +1412553 +2287254 +510106 +1108496 +1723524 +1527684 +2276 +75330 +845187 +130173 +1489688 +2010564 +1250410 +1850519 +1100935 +1788501 +1412570 +765699 +2067348 +2073471 +1158387 +2631697 +1456794 +1052785 +2274 +1987238 +2269 +992767 +951203 +2112684 +2631689 +775558 +1513203 +213640 +1788490 +951217 +2112627 +2451089 +1527645 +2631698 +1749782 +2020960 +247691 +2100916 +213625 +1178366 +2112626 +951209 +2112719 +2030598 +75333 +2706895 +1178402 +130175 +2623376 +2244044 +1527676 +2112686 +591204 +75328 +130169 +38221 +230957 +2278 +75319 +2112670 +911284 +372391 +2287255 +38247 +1071172 +1850556 +765697 +2696844 +2100915 +130160 +2112712 +130167 +1489696 +247675 +775555 +1527660 +2411427 +911269 +230956 +775540 +2287262 +2030585 +1909582 +1681062 +1666859 +2451074 +1717552 +992786 +951213 +2371697 +2112656 +362778 +38211 +2696853 +2244 +934981 +247676 +911283 +307186 +1997776 +230972 +1850517 +2112612 +2519863 +38226 +775547 +441533 +247674 +284408 +2411425 +1850537 +130148 +2371681 +2244041 +992757 +332346 +591185 +2519853 +1158392 +2837502 +2007421 +1527671 +2244031 +2371710 +845195 +2244026 +845193 +845200 +2112661 +765700 +2112600 +2371678 +2696842 +1489699 +1659511 +2100914 +1527674 +1770618 +992791 +1723514 +2073483 +1412566 +38192 +992731 +1609372 +2631688 +1997766 +679130 +899297 +845202 +2112641 +510058 +1412556 +1788547 +1317153 +2371737 +1089368 +1144795 +2371734 +2451124 +307205 +2030638 +2287282 +1412592 +441550 +679141 +404987 +1348194 +1527712 +510153 +1412591 +1659528 +1850600 +1666891 +510170 +679174 +2554548 +2287291 +1527707 +2312509 +899308 +911316 +2371761 +1850645 +1788528 +2691281 +2312515 +213654 +1208776 +2073526 +2849983 +2287302 +2112829 +2451167 +1909606 +190469 +1108513 +2030637 +951255 +1609389 +1909600 +213663 +1377195 +2287346 +1513215 +1659513 +500844 +1144798 +2244070 +2112847 +1108511 +2112837 +2112793 +2056859 +401121 +2073525 +2073499 +2112767 +2030663 +1527738 +500863 +1811504 +2451194 +2451198 +213646 +2112760 +591207 +2371740 +992800 +775646 +2030649 +1527696 +2554620 +911322 +2631738 +1850637 +775645 +2112746 +2244072 +755337 +1089355 +1527689 +2312 +2451174 +1850687 +1527709 +284415 +1208821 +2554645 +2741859 +1089367 +1527705 +38249 +510144 +2519877 +1788518 +2451110 +510200 +591206 +2451153 +1788508 +2750776 +1489724 +775644 +1482408 +510112 +1489703 +2451183 +2315 +1489737 +2030633 +1527779 +2429086 +2509563 +1489749 +474854 +510194 +1898282 +2694946 +2112840 +1788514 +1489704 +845229 +1708462 +2451137 +2371776 +75383 +2451141 +845241 +2744743 +775626 +2451188 +2371750 +1049949 +2030625 +401137 +2287319 +1823290 +1489729 +75375 +775602 +2371763 +1850577 +1380049 +1850581 +951249 +1527753 +2451166 +2371729 +510185 +1850653 +1666889 +1178442 +1250421 +2371743 +2631754 +1659537 +1527757 +2287322 +1208812 +1702473 +1197332 +2030660 +1089369 +510182 +2411433 +426086 +426085 +1144813 +1527715 +1412594 +951232 +1208803 +1788516 +1666872 +1208799 +2554556 +1909598 +38253 +1850651 +1412580 +1348206 +1850644 +247694 +1723548 +899312 +1850619 +1178431 +1850650 +1850618 +1513218 +2451182 +2371778 +247698 +1208808 +213657 +2287337 +1708465 +2312521 +1377192 +2451178 +911307 +1527726 +2422473 +951242 +1659541 +401131 +1850614 +1850615 +510175 +1527701 +2355803 +2554641 +2112768 +2519885 +1850595 +2451191 +1971316 +2287301 +2744738 +2030643 +2112772 +2112826 +1659526 +1527727 +2312518 +401123 +401119 +2371731 +2030614 +1377194 +213661 +190492 +213655 +38251 +2554613 +2451130 +1300558 +2554547 +1178452 +591212 +2371738 +190468 +1686324 +1489709 +2631765 +2030636 +1049950 +2371748 +1708461 +2750779 +2429074 +2554633 +1052796 +2333 +2030666 +1666885 +1489734 +911329 +2112753 +2519878 +1909596 +213651 +2744728 +911296 +75368 +2451193 +510116 +1850683 +2554549 +1144808 +1166151 +1850707 +1788573 +401146 +2338 +2824037 +1144847 +1850706 +1850709 +935009 +130204 +2003713 +2509587 +1761120 +1062011 +935002 +326356 +2287359 +307208 +2631774 +2451226 +1364887 +1811512 +2451217 +1850702 +1761118 +1788557 +1144825 +1141224 +1268000 +307207 +2451222 +75396 +1144849 +591218 +1144829 +2451293 +1527820 +1788584 +2451225 +474867 +1153251 +2451247 +510219 +75404 +748562 +2287353 +130194 +1527787 +743468 +2451296 +1770633 +2631771 +1811521 +992814 +911339 +510210 +899315 +1166150 +2509586 +1811506 +1527785 +899313 +401159 +1166146 +775650 +190499 +1947334 +130206 +1666907 +1666905 +1135848 +1609396 +401151 +1527801 +75399 +1236274 +911348 +1609400 +404988 +510212 +2451234 +1850693 +1788577 +2451260 +1236276 +1527786 +2451218 +2509585 +1144827 +1666896 +729958 +2287402 +2371795 +2112864 +1788631 +1850716 +1686336 +1089377 +1108528 +130271 +1823305 +288951 +2519905 +357561 +38282 +38317 +2287413 +2451377 +38301 +1456844 +845277 +911370 +2750790 +263125 +2744756 +1788603 +1811529 +329113 +1850755 +1380051 +1527849 +679193 +130219 +2631806 +2020975 +263129 +130229 +2451306 +247705 +326393 +1788609 +1170701 +664163 +1236278 +591229 +1108544 +1386544 +1850724 +441560 +1850771 +1666928 +2451360 +510229 +845287 +2554714 +1659549 +1717560 +707072 +591246 +130253 +1723570 +1071195 +458986 +1823310 +2631780 +38274 +1811548 +1197348 +992911 +231001 +2371808 +845298 +326388 +307211 +329115 +591237 +1174281 +372409 +951278 +2287426 +1208847 +405009 +2073549 +755349 +935013 +1527823 +2371789 +1071212 +1666920 +388479 +2554674 +1821297 +474877 +1850723 +1850748 +459016 +345700 +441564 +2451369 +1208860 +2631784 +2429110 +1208869 +510236 +992901 +1456825 +2554678 +1770640 +1717561 +38272 +911364 +2112883 +2451309 +1681069 +1052802 +2451307 +2631802 +38286 +190512 +1788620 +2371817 +2429108 +2028109 +992899 +2451353 +2554737 +951296 +2688747 +2287398 +951306 +441559 +2631807 +2443485 +1527852 +38330 +1513236 +992915 +1144875 +2451359 +2287390 +1456842 +510238 +1412603 +326381 +2623380 +1208880 +2020976 +1135849 +284423 +2371804 +992937 +1850730 +1666916 +2312538 +1823342 +707079 +1456823 +992918 +130243 +992896 +992862 +845290 +1317175 +1686343 +441566 +500874 +2112861 +2451328 +401163 +1197369 +591240 +401167 +1166154 +459011 +1197362 +288963 +458990 +1788613 +1158422 +2287386 +591227 +935032 +1811528 +1686342 +441567 +510224 +2451342 +911361 +1527838 +1208849 +326378 +1121580 +357556 +202643 +1898302 +2451317 +2371807 +992929 +2287415 +1909641 +1260789 +1158418 +231007 +401176 +2509596 +2429098 +992909 +2112860 +992891 +357560 +2554668 +992906 +2355 +2554734 +1108535 +130261 +679191 +664165 +38329 +38296 +2509598 +432838 +951304 +405008 +1782974 +951287 +1158420 +2356 +1121583 +679195 +1317176 +992847 +75413 +2554736 +190529 +1310035 +1686339 +591244 +1108541 +1811534 +326386 +992838 +510227 +307216 +432842 +38332 +2451364 +458989 +2554654 +1609414 +130249 +284424 +1317188 +1527853 +372400 +263124 +2744751 +75426 +845273 +1310036 +332351 +1823336 +1823311 +307212 +426095 +401166 +1456837 +1390828 +992898 +1850751 +1317177 +458983 +459001 +2554679 +1062026 +307230 +1062016 +1456834 +1788624 +935031 +1811530 +130280 +2028110 +1850717 +2073544 +441563 +38311 +2287417 +1788616 +951309 +130263 +1071203 +1850725 +911381 +1153279 +2371787 +1385260 +2112859 +326384 +2554669 +2509601 +992871 +951283 +1788605 +1850760 +1749800 +2519906 +1317186 +1062025 +911363 +432825 +992850 +2727766 +1850732 +1141237 +190515 +1153280 +1144870 +2287424 +2030672 +679232 +1788641 +2112888 +401182 +2112933 +1702494 +1527863 +474890 +2451426 +2769977 +2769978 +1764029 +1749810 +345709 +1749809 +1144907 +911392 +2112889 +1850782 +2451438 +1686347 +1850816 +2769951 +1770652 +1385263 +2451417 +510274 +2769984 +2451427 +2769955 +342536 +2112894 +231050 +591260 +1310037 +935039 +765708 +231059 +1144922 +1686346 +190535 +911395 +2824049 +707082 +2112893 +38334 +510248 +2112908 +751411 +2381 +342547 +2631809 +2519920 +474893 +845309 +2769966 +2451379 +2451380 +130302 +130294 +408642 +1489776 +2554774 +2451437 +2020980 +1513265 +1317194 +2451405 +2312549 +130296 +1850780 +591255 +1850801 +2030675 +38335 +1144926 +202664 +775677 +2429130 +1666934 +1770653 +1071218 +1317197 +1144923 +935044 +1348224 +2750801 +2280430 +755354 +345721 +2451389 +2824059 +2030677 +1158430 +2769967 +1144900 +1823348 +2112906 +1646005 +2679508 +326406 +1811559 +751414 +1385264 +2847244 +1764033 +345708 +2509619 +474889 +1666961 +500886 +2750803 +1527857 +2519922 +775675 +500891 +1850810 +345712 +2451413 +247741 +1788668 +1158426 +2847259 +2443492 +1850802 +2244112 +2696865 +2367159 +2847252 +500895 +1609422 +1197393 +1513280 +591365 +510300 +1702495 +1158433 +1527882 +911418 +1723595 +2770006 +679246 +911423 +911424 +2429136 +2554870 +1659587 +2371848 +1348260 +2554929 +510305 +719357 +679289 +1527905 +1708478 +2706918 +2554874 +707115 +2371856 +707100 +2371847 +729963 +1393289 +719336 +326410 +1723594 +2371838 +247748 +1456848 +1823373 +591391 +719344 +1025814 +2073678 +1666963 +1997820 +2554857 +1527938 +510426 +1997812 +75447 +2287430 +2112945 +2696880 +2696881 +1348245 +1850842 +1609433 +2312552 +1850857 +679248 +679264 +130328 +664173 +911422 +2519942 +1659603 +130333 +2280440 +1723583 +1659602 +845379 +1527894 +591358 +1386547 +2397 +845414 +1317206 +1348261 +1723603 +307240 +743473 +2554836 +510431 +510317 +1850835 +2100942 +2280436 +775714 +2355812 +2554861 +845416 +1178514 +1489807 +342550 +679247 +1482422 +1823370 +2744775 +510309 +38354 +591276 +845377 +2280435 +2744777 +213723 +2073612 +1527883 +679254 +951345 +1456889 +845363 +845436 +510439 +1527930 +845399 +510429 +2280438 +1456876 +2744781 +2706924 +729968 +845364 +2244129 +992942 +2554908 +1527945 +755362 +1764045 +2554939 +510342 +740635 +362803 +729961 +1170703 +2073647 +2312558 +130324 +231065 +2696869 +1348226 +1178541 +992972 +719347 +591338 +591295 +591348 +935050 +2554882 +992967 +2554934 +2554850 +591362 +2429135 +2112956 +1348262 +510410 +992953 +743475 +1052809 +1380056 +1527893 +2280453 +591335 +845356 +775701 +2706913 +1659598 +591352 +745090 +845336 +38366 +591370 +2554931 +2451465 +2287462 +911432 +510319 +1764049 +2073630 +510418 +2073657 +2100959 +2312572 +1317205 +1723587 +372427 +1197389 +1178539 +1089382 +2073659 +2112973 +2429148 +1513298 +1823366 +1850880 +2696867 +1170704 +372428 +591375 +2073562 +2100956 +2371837 +510372 +2100958 +1850877 +1310038 +2244119 +591324 +307243 +679281 +845346 +510352 +1487139 +1659594 +679291 +2451460 +2706906 +591373 +935073 +1489813 +1659577 +951343 +2112978 +911412 +729965 +1489792 +2073618 +1659591 +845415 +1317216 +2554796 +1527877 +1997811 +2073601 +2244121 +510281 +1025811 +951333 +755360 +247755 +1178509 +2371850 +510301 +2355836 +1823406 +1850824 +2112977 +510361 +1527896 +679265 +2100941 +2554799 +845348 +1764046 +1527912 +1489809 +2287453 +845340 +845323 +2287458 +845434 +679282 +1609438 +1250433 +1178528 +1823372 +2244127 +1489815 +2519934 +2554867 +2451463 +2554847 +2554990 +899377 +307247 +1764090 +2371910 +2451560 +911449 +75469 +1667017 +2287487 +75474 +75496 +190571 +2312587 +1393299 +2516390 +1393298 +2865778 +1489888 +679316 +1489868 +2429168 +1850922 +2287546 +1850937 +2518329 +75557 +911470 +2631858 +1208908 +1317250 +591399 +775772 +1377215 +899358 +1659610 +1317258 +510474 +2865772 +992979 +899347 +2010576 +2865751 +2312608 +911444 +2516397 +130355 +1025821 +1178560 +899361 +2451529 +1850965 +1178572 +2865752 +1208905 +2312598 +1997831 +2280464 +2516406 +2429159 +1141248 +911495 +1708491 +510463 +2451501 +2030688 +1770658 +2030685 +2355846 +1049959 +1489851 +510486 +911456 +2554941 +284429 +775782 +1178547 +2112998 +1317254 +2451516 +1850969 +1819174 +911472 +1482434 +951371 +1987253 +1819176 +845439 +1819195 +1317247 +2113023 +1850918 +2030686 +1764074 +247759 +1788680 +1250436 +2113030 +1819187 +75473 +2554998 +2451535 +2744806 +1489859 +1764057 +2312624 +1850925 +1528015 +2403 +911493 +1823409 +1723628 +2555014 +2113032 +1723622 +2451557 +1667023 +1412630 +1909663 +1819192 +1761133 +2451562 +75498 +474900 +2371897 +2030683 +2113076 +1770666 +1823422 +1489885 +1144932 +1489879 +2287520 +1513310 +2750812 +1377217 +75544 +1489882 +1528011 +474902 +1659616 +2865743 +1659640 +1527984 +1310044 +2287526 +75511 +1489848 +213738 +75525 +1197400 +190573 +2519964 +2516413 +2516412 +679295 +1850893 +2865744 +1850944 +2741868 +1482430 +2451552 +1528016 +1178548 +1108558 +2555000 +2865736 +2113047 +1666999 +2312588 +408654 +1135857 +2519978 +951374 +1850892 +1667022 +1393297 +75517 +510447 +2003721 +2451553 +75550 +1108551 +2287510 +2631840 +2287543 +899376 +775728 +775723 +2451503 +935077 +911500 +2554991 +2371919 +1317246 +1764066 +2244200 +743482 +1086110 +2113086 +2451591 +2631865 +1513355 +510545 +935096 +2555117 +1385271 +591454 +1850986 +729971 +1236319 +2623413 +213751 +1850976 +1850994 +1036983 +911521 +2509632 +326417 +1667044 +2244209 +130383 +1025824 +911527 +1851003 +845461 +935093 +765716 +307257 +307265 +2631871 +2113120 +993008 +1528051 +1513317 +1456942 +1456895 +2428 +1380071 +755378 +2727776 +459037 +2451589 +935103 +1749840 +1087312 +1513327 +935107 +748565 +2555158 +1749834 +740639 +130360 +2451594 +765723 +2430 +765718 +372430 +935088 +357567 +1823475 +1609459 +1310046 +1489890 +1609475 +1749824 +1513320 +1456931 +935123 +743481 +2631868 +2244144 +307277 +719367 +38415 +2244203 +130371 +1317275 +2371927 +1850979 +591424 +1652357 +1749826 +2555152 +1082798 +911531 +2443502 +1317273 +1823465 +1412653 +2244162 +1528052 +459030 +372429 +1652351 +1956202 +307260 +1348294 +1385269 +1609482 +1667043 +2113117 +1456940 +130370 +2623410 +2679510 +1291118 +1702497 +992990 +2312629 +1760142 +1971351 +2073682 +2443500 +1971349 +1513349 +459034 +1268029 +591416 +591406 +1513351 +1393300 +231081 +935131 +1045528 +38393 +2519992 +441583 +1071224 +1513333 +38395 +664181 +2030715 +2631867 +911533 +2030695 +2056870 +1513346 +2244193 +2113104 +1268026 +2100964 +1456900 +372441 +2555079 +935117 +1851000 +1686360 +1528029 +459044 +2518335 +1723667 +2451577 +1364899 +372448 +2371926 +845459 +1761154 +1166167 +510542 +2631878 +2555082 +591449 +743479 +1108563 +1667045 +2516420 +1717568 +1197408 +707127 +459035 +307272 +739632 +911530 +591450 +1489895 +1456929 +2113135 +845462 +510513 +2244218 +2244142 +1377229 +1513319 +38414 +737043 +1823506 +2741871 +1197424 +130413 +1749853 +2744815 +2516421 +2520024 +1100988 +845551 +2371960 +2113189 +1236323 +1821306 +1528120 +1513362 +38453 +993028 +951387 +679338 +845533 +510575 +2056883 +1723670 +2422515 +1076931 +679327 +2244264 +1652360 +591490 +2007428 +2113158 +2451598 +1208933 +1782978 +231098 +1412664 +75598 +1236326 +1528093 +591471 +591488 +288975 +2026229 +775817 +1076926 +1178581 +2623426 +130405 +75584 +130441 +130432 +130440 +1609518 +2244274 +2555160 +1153307 +1348311 +2349376 +2520018 +1076929 +1385275 +510567 +845527 +2113156 +1652359 +935134 +1121602 +1811575 +1823505 +2447 +357582 +679341 +845560 +2631912 +190576 +510584 +1513368 +1100979 +1348310 +1609543 +1062078 +2371959 +2113160 +1609524 +591482 +2244244 +1197421 +288971 +845549 +2451606 +1717581 +1087322 +2030733 +1909679 +1456959 +1208938 +2451610 +1528098 +1933616 +2555193 +1851008 +1528121 +1082810 +1108581 +459054 +993029 +1208927 +1082803 +993033 +2100966 +1768401 +510553 +993038 +1898350 +1236321 +38425 +845543 +1049963 +213757 +951385 +845557 +1144947 +775805 +190581 +719386 +1609515 +2451600 +2744814 +329124 +1851012 +1528117 +1236325 +1811573 +288973 +906804 +1823510 +679344 +213756 +1153306 +1062077 +2244268 +935161 +1456955 +911550 +2442 +591487 +2244233 +1456943 +1456960 +38445 +1667056 +357581 +1768403 +2451608 +591475 +307297 +935146 +1851009 +372472 +1456946 +1851085 +2770063 +1268042 +1412686 +2073686 +775830 +2520027 +362839 +1851061 +401214 +1667077 +2555204 +679353 +1667095 +2555249 +213770 +2429189 +510607 +362828 +951409 +2470 +510612 +1412667 +75606 +2287579 +2113231 +2555253 +1997844 +1268035 +2770062 +775824 +1208970 +1178599 +1348317 +911563 +1667066 +2312643 +510633 +426101 +1723697 +2770148 +2451682 +1788721 +2113265 +1208949 +2631935 +1062081 +1764103 +2113278 +1909684 +2451681 +213768 +2770130 +1764104 +1686371 +441593 +75608 +75622 +1851036 +75604 +2451621 +1851056 +441591 +2451663 +2770052 +2555228 +2555200 +1528154 +1723701 +1788724 +2113283 +1178624 +2469 +1412670 +2555234 +1723695 +951402 +1170712 +2113286 +362819 +401217 +775820 +1178607 +190591 +2371967 +2113258 +1528128 +1250441 +510598 +775843 +1178620 +1045530 +1788737 +1178617 +401206 +1528141 +2770099 +510628 +1723709 +755390 +2113249 +719389 +1144958 +1788705 +1823537 +1528153 +1667094 +2451679 +1380074 +2516425 +426103 +1135861 +2770072 +1528155 +2770113 +213769 +2520029 +719391 +951435 +1178608 +2770096 +1412672 +1348321 +1025840 +1158443 +1528160 +1708499 +75620 +2451671 +1851066 +247781 +1667101 +1208953 +2770054 +1851053 +1851071 +2429197 +1723686 +2422517 +1909690 +2450 +408657 +2474 +1788733 +951408 +951418 +679384 +2734371 +1819202 +591499 +2451685 +1178638 +911604 +2451780 +2631955 +845602 +1108589 +1062085 +75637 +2483 +1667112 +1393313 +2113330 +1489953 +1686394 +2010581 +845593 +130467 +1144975 +1208989 +993059 +1178625 +911596 +2372000 +2631996 +2451828 +1823542 +2476 +2371974 +2451729 +1208995 +2632001 +2287586 +2734370 +1788770 +1208986 +2113315 +2451822 +2451806 +2451820 +1089430 +845601 +2030743 +1757189 +1377235 +1348325 +2631963 +2750837 +2451776 +1317325 +679377 +2451731 +1909724 +993051 +1723718 +935176 +2451793 +1300581 +2416033 +2312655 +2451743 +130465 +775850 +38454 +2312700 +1236356 +2372001 +1178641 +247810 +2287588 +1236349 +1348332 +1100996 +353488 +1236350 +2451763 +2312669 +1788740 +911602 +679374 +1609580 +1823547 +993085 +2451703 +1757190 +993063 +2312716 +679378 +247794 +899406 +1317329 +2480 +1851090 +1348330 +775881 +2030749 +1089431 +845581 +1971362 +2287585 +2451802 +1788792 +2770158 +2429204 +1851094 +993058 +951445 +2312684 +1609551 +2073697 +2451810 +2631980 +679391 +2632037 +1208982 +510676 +679380 +1788795 +1909726 +1528236 +2312705 +1686390 +993082 +1971359 +2451750 +2451737 +2451761 +2631975 +2073694 +679393 +775863 +1788741 +935175 +1788786 +2451695 +510668 +190602 +845575 +1364910 +1528194 +1528249 +247802 +2007988 +1144971 +247784 +1208994 +1749875 +2113306 +1702505 +1412687 +2631956 +2312659 +1686395 +751421 +1909798 +911644 +1823551 +1250464 +737050 +1250455 +2632143 +510693 +75657 +1971364 +75660 +2451946 +2372019 +1528274 +510713 +1209022 +1770694 +1823550 +911639 +1770692 +510712 +2113358 +383478 +510746 +1909804 +1482439 +2744825 +911630 +1851163 +474921 +1788896 +1667115 +1025846 +1851182 +1209020 +2113369 +1317349 +1667117 +2451924 +75664 +1108604 +1489973 +2451872 +1987266 +1158484 +2865820 +1788905 +737051 +1788813 +342566 +2451899 +2451956 +1851191 +75667 +911673 +1209021 +2451984 +1851136 +1788833 +1317353 +2372017 +1788873 +1851164 +2451909 +1770688 +2113387 +1489987 +1909790 +2632110 +2113343 +1788808 +1528295 +2113351 +2280477 +1909782 +1851131 +2312741 +911677 +1788801 +1909811 +1851204 +1062088 +2451916 +2372018 +2720468 +911656 +2451892 +75653 +1909747 +510681 +1062091 +1851158 +1823555 +1528298 +1348353 +342582 +1909794 +1667122 +75648 +247819 +1956210 +1348348 +75682 +1851189 +1482444 +2632098 +2750867 +719399 +342565 +2113397 +383466 +1851197 +1646020 +2451977 +75645 +1528262 +1401946 +190605 +2451919 +1909801 +1723747 +1489986 +2451906 +1489983 +899408 +2507 +75666 +1851198 +1052840 +1158496 +1851155 +510738 +1851138 +1386556 +2555309 +1528273 +1348346 +1528271 +1761157 +2429218 +1158486 +1158475 +1788890 +1250454 +911658 +2287611 +1667116 +2451923 +1956211 +2451931 +2632120 +2073701 +2312757 +1788803 +1377237 +2506 +1317339 +1851207 +1909752 +1250460 +1528272 +2632125 +775906 +1528305 +1788799 +2113402 +2750885 +2632142 +1158476 +1997852 +1062090 +1909761 +510748 +383476 +1250448 +510703 +2451938 +2443508 +2429212 +951480 +911635 +1260801 +775945 +2021020 +1049970 +775938 +679412 +1300596 +1412712 +845604 +1909823 +679418 +357589 +231132 +202699 +1342321 +1412717 +951498 +845647 +1158509 +2372059 +1342316 +993119 +2372033 +1025860 +1933632 +2555355 +1456986 +1667128 +1209047 +2355867 +2452062 +1851282 +130489 +1528324 +1132723 +2555363 +1686418 +1178652 +1940152 +2632195 +845649 +1528367 +2632230 +1851267 +951500 +2632213 +935179 +1851279 +2355871 +2372032 +130485 +1135867 +2632256 +1528376 +2452033 +1268064 +2555367 +213792 +231142 +231128 +2452049 +2372026 +1609615 +1456985 +775944 +1170733 +1049968 +1702531 +1851255 +911702 +2555339 +911689 +1609607 +231141 +1489993 +2623434 +1317370 +202698 +130498 +1723792 +1851258 +1268063 +1132722 +1851230 +1821309 +1686425 +1851249 +2770175 +202693 +1317368 +951501 +906816 +993158 +1851269 +1089457 +1898362 +1667132 +1049967 +2014265 +911695 +1723757 +441616 +1788938 +1393316 +2113440 +1132726 +1528334 +247831 +2770167 +75709 +899415 +775936 +2429226 +1489995 +2452043 +2451990 +2555372 +1851265 +993147 +1236382 +1101012 +2067368 +1170730 +1851285 +899420 +845605 +755393 +2452004 +2452017 +2555366 +993166 +213787 +1049975 +2734377 +1851256 +2750889 +2067371 +1528336 +1377242 +2632236 +993141 +1236380 +1178663 +2452064 +1898360 +1364911 +2632265 +1144987 +1051345 +993148 +1052851 +2354964 +2452072 +1101003 +2515 +1300591 +899419 +2244291 +1317375 +2520051 +1788909 +906819 +845621 +213790 +1049972 +1851292 +1052852 +2429230 +2632206 +2030767 +1310052 +1851215 +1101005 +2514 +2030769 +2010587 +2021025 +1811598 +1681097 +765734 +1141266 +1348366 +2551 +1528424 +2452090 +1708521 +993168 +2287659 +1909844 +75739 +845658 +993211 +75714 +1788996 +2452113 +1377248 +349679 +247838 +2429251 +1686435 +1071243 +993205 +1108610 +1788977 +1380098 +1178676 +1770716 +2509657 +2452128 +1158511 +75744 +2452086 +263199 +993177 +2452193 +1178674 +736159 +951545 +349664 +2025564 +911721 +2113501 +1723800 +75719 +1412729 +130512 +1528407 +1153322 +1144995 +1178677 +1052869 +1681096 +2555389 +1377257 +2555405 +2744830 +911732 +1659684 +1348370 +1681093 +130530 +1317385 +1049982 +993186 +1811599 +775983 +2030786 +951546 +845655 +993183 +1811597 +1049986 +1667159 +935197 +1144997 +1412732 +2452162 +349663 +231153 +1528390 +263183 +2529 +1490000 +2429253 +1101015 +2452156 +1513395 +2452155 +510772 +2003734 +510776 +1197440 +2555398 +263186 +1528418 +2021027 +2073709 +2021031 +2696911 +1166183 +993195 +2632284 +1667160 +775982 +510775 +38491 +993209 +2021026 +2452163 +2452111 +1412735 +951529 +1049979 +1788954 +1071247 +951530 +2750923 +707162 +951544 +1788950 +911717 +775976 +906821 +993208 +845699 +2113535 +1528439 +2307917 +1456995 +911745 +231160 +1528433 +2576 +1291129 +1851329 +345727 +2113539 +263206 +1457016 +38561 +307320 +2113556 +776033 +2429279 +906829 +776009 +1528452 +911738 +1749890 +38531 +2582 +993245 +1317404 +130544 +38540 +765738 +2100975 +2312788 +906825 +1490021 +1513404 +2312785 +2520062 +1528442 +1528451 +993250 +679438 +1101020 +845722 +1528465 +2113522 +1770727 +1364914 +130547 +765745 +1708524 +2586 +776030 +845670 +1823574 +357593 +1490028 +1209074 +951558 +1490041 +1652367 +1412756 +2849999 +2030808 +591539 +776028 +1490049 +906826 +510835 +2073716 +2849984 +951561 +1770726 +776005 +845737 +1386563 +993225 +263204 +664195 +1490039 +1609694 +1609701 +776020 +342586 +38509 +2452229 +38508 +1490034 +1609689 +775989 +1528431 +1851315 +776004 +1528459 +2312807 +1412746 +2555415 +776022 +1609651 +2770192 +591553 +2849998 +38523 +1851334 +1609707 +2770180 +845740 +906827 +2372090 +130545 +332374 +776002 +776013 +845752 +2411485 +1819208 +2632309 +993256 +1528480 +1723810 +1950223 +1528458 +2555441 +1528444 +1528487 +1260807 +2312802 +2244312 +1528432 +993228 +2312783 +1482452 +2452213 +776014 +1342331 +765748 +1145004 +935235 +2287671 +776036 +2770179 +2349388 +329128 +1609684 +2452250 +2632314 +776021 +38510 +845673 +1412758 +707169 +707171 +1412740 +345726 +911747 +776016 +1528502 +707181 +776064 +1268083 +1657203 +1909864 +649176 +719413 +845870 +1723855 +2244346 +1317428 +993286 +776077 +1457033 +1851355 +1528567 +591622 +2113584 +729998 +38582 +2632370 +679479 +2372133 +591607 +1851352 +1823588 +1268099 +935243 +510893 +649175 +2632343 +935242 +2555509 +1457047 +2750927 +776083 +1101030 +993274 +679467 +1702542 +1490053 +1412771 +2632337 +1851367 +2452267 +1291138 +2113663 +510877 +2273850 +1412770 +1412796 +1686445 +2355896 +2073724 +2632349 +2113647 +591617 +1121617 +2113653 +1412790 +1609727 +1723842 +1101021 +2113668 +776042 +845821 +2113710 +2113658 +1528538 +1749908 +2632344 +2520066 +845786 +845785 +993280 +2770202 +935239 +2113709 +1300606 +707176 +1823587 +591589 +2113706 +2056909 +1702539 +2355891 +130583 +845871 +130595 +1457083 +75768 +2244331 +679480 +510858 +845796 +1757201 +2073729 +1300619 +776050 +1851348 +1528524 +2113607 +2372141 +1393325 +1317409 +845802 +1300624 +1708535 +1457069 +1291144 +1909860 +2100981 +591586 +1317427 +1723844 +1646039 +1723843 +1723840 +1652372 +2452271 +263208 +1317410 +510871 +776058 +1268087 +1528582 +1457070 +1291137 +1851341 +510872 +1412797 +1528587 +679464 +510854 +1702538 +2720473 +2372143 +2113602 +993293 +510889 +2706941 +1457027 +2113677 +2113723 +2113717 +2113728 +2555513 +2113637 +1457029 +1667181 +1268089 +2355882 +2030826 +1528499 +776078 +1528515 +2372104 +1268079 +845859 +1268103 +2555510 +1268104 +1268086 +664203 +906832 +1457056 +1457032 +1457038 +2452268 +2452255 +1528501 +2030816 +2367173 +1310067 +1823590 +2113618 +765754 +2691295 +2355883 +1457028 +1757203 +510883 +75771 +2056903 +2706948 +2411502 +1101025 +649189 +2555572 +2113807 +2113764 +1708541 +2429288 +911776 +2113833 +2030856 +2555552 +2555553 +1823602 +1909866 +2113749 +2244359 +679495 +2555569 +776111 +1609764 +1909872 +911779 +2422529 +2555574 +1823600 +1956229 +2600 +911786 +2030867 +1723899 +951587 +441637 +2030847 +1025878 +734911 +474934 +1250506 +1609768 +2030862 +2113767 +776104 +1659700 +75795 +2555558 +1851370 +1823605 +1997869 +1158535 +2609 +1851369 +510915 +2113743 +951581 +2113735 +1667192 +845884 +1268114 +1412811 +2372150 +510906 +2113786 +911789 +1158544 +2617 +2113842 +2113815 +510920 +1268112 +1667187 +1851375 +2279334 +776084 +1482455 +2287686 +510935 +776121 +1667186 +2312860 +906835 +1851386 +2520088 +2279330 +1490064 +510898 +2113834 +679486 +38584 +510934 +2372161 +2429291 +2273856 +1723877 +2452279 +2312843 +2113839 +2520079 +2113851 +1723874 +679499 +776085 +1940153 +1528610 +2312852 +510921 +2555575 +1178710 +38585 +510902 +1158554 +1757207 +231178 +2355900 +1609766 +1108623 +405025 +2608 +2555530 +679484 +1851376 +510919 +776143 +1823601 +1317451 +776125 +2073746 +2030848 +2555521 +1209114 +1686463 +2113917 +1770737 +2555581 +1317463 +2452311 +2073759 +776163 +911805 +1317471 +2649 +2030881 +745610 +1646055 +510999 +2113975 +776149 +1851405 +1397650 +511001 +1071259 +2113871 +776200 +511014 +2452289 +2750930 +2372175 +1209081 +2113919 +2355907 +2659 +1412837 +1851443 +247885 +740654 +2073782 +2113891 +2555609 +75813 +1393327 +1178731 +2312882 +1145009 +1909894 +1490106 +1686477 +2555582 +510942 +1667198 +911810 +1528674 +1528670 +75819 +1178716 +1145008 +1317468 +1490078 +679507 +1757208 +1708551 +1490104 +755449 +1025883 +2865853 +2452285 +75806 +1723932 +2632418 +845889 +1412851 +1178718 +1823620 +1412832 +1490083 +1317460 +2850019 +2865840 +510975 +1348389 +1380101 +1236404 +1101037 +1770733 +1178734 +2287704 +2355914 +1770734 +2280491 +1377264 +776151 +2073768 +1412850 +1052882 +510948 +1108626 +776210 +1178713 +2673 +2026248 +1528650 +75798 +2113882 +776208 +911802 +1681103 +751436 +2452308 +2113935 +679512 +1667197 +1686479 +2113888 +2555607 +2452284 +1393329 +2865857 +2661 +1490090 +510987 +2623 +2452306 +2452297 +1178738 +2372176 +1348400 +1250512 +1667199 +1490082 +1851416 +1025886 +1723906 +776198 +511015 +2021040 +2312881 +2452307 +510950 +734918 +1209087 +1609773 +511005 +2706953 +2273859 +2416049 +2113939 +1178732 +2632422 +776148 +1209089 +1997874 +1386571 +511060 +2287734 +441659 +679539 +1851479 +2073877 +899457 +2555629 +2416053 +591658 +1482467 +776222 +951644 +2113996 +511104 +1956233 +1686484 +2030886 +1062133 +2372199 +1457112 +2114025 +2312942 +1348406 +1789051 +2452395 +845913 +845939 +2452325 +776295 +1209137 +2632489 +383511 +2312914 +349691 +130631 +776283 +1490120 +2312951 +190639 +2073849 +1789056 +845930 +911872 +511027 +911860 +349695 +2555632 +2632456 +1490155 +2273865 +2114135 +2705 +2287726 +75828 +2452327 +1528818 +2687 +1528743 +2429323 +332375 +776277 +1708566 +1764130 +1723953 +2555633 +1369489 +2114023 +2452382 +1158566 +2114001 +190640 +2726 +2114061 +2520122 +2287741 +2114045 +1108636 +75850 +2073833 +911877 +845901 +1851484 +679544 +2113999 +2632483 +1135881 +1819215 +2422536 +1823630 +2555696 +911822 +383509 +511065 +935255 +2067377 +2287751 +2452380 +2280496 +1528748 +1667217 +1528801 +2312905 +2073791 +1789060 +1490144 +845892 +1377266 +2555621 +751446 +845893 +776309 +2688 +2067392 +1770754 +1528882 +679549 +2114127 +2452349 +591660 +1851481 +1723952 +1178752 +2114046 +2073860 +911865 +2287711 +776223 +1412879 +935254 +1403728 +1528786 +845905 +2114003 +776308 +1209132 +2706959 +2555635 +1490146 +2452313 +1789048 +2632474 +1528828 +2429335 +1657432 +1412871 +2355919 +1045545 +776329 +1528767 +2411512 +2850032 +1317482 +2114102 +1528775 +1348411 +1490132 +2114094 +845923 +649201 +2452384 +2452333 +38605 +2280494 +2372230 +776260 +1764125 +2114019 +1025898 +2555625 +2685 +2114077 +1956236 +511090 +776214 +2372238 +776248 +511092 +2287718 +2452316 +1108642 +511061 +2312923 +2367178 +2287707 +2312911 +2372233 +1528749 +511069 +1851523 +1348412 +951631 +1490129 +776250 +2312919 +1209129 +1528793 +776307 +1851531 +2632491 +349697 +1178757 +776262 +2073838 +2452353 +1412860 +1412865 +2355918 +2520125 +2355920 +1659706 +2372229 +247894 +342591 +1764126 +2287747 +75847 +1909901 +1686509 +2555623 +2114091 +951623 +1209135 +511056 +130632 +2312903 +1708561 +1403727 +75827 +511042 +2073821 +1789062 +2555692 +1209127 +1490123 +2073792 +2443520 +511110 +349685 +1823636 +951609 +1823648 +2452392 +1851464 +1789066 +1528861 +2632495 +1490152 +1062129 +349682 +845903 +2429316 +2632476 +993308 +2555657 +2452397 +1667213 +2555662 +1987282 +1170743 +2114062 +1528768 +349702 +911867 +342592 +845917 +1528895 +911841 +951621 +2520130 +2555739 +649205 +1667230 +2751 +75883 +2372273 +776347 +1528970 +1236407 +2114335 +1723996 +1412939 +1646083 +297732 +719433 +1851585 +951690 +2026252 +2372261 +911932 +38680 +2416069 +38681 +1490186 +911895 +202725 +1646076 +2632535 +130664 +2313037 +1412909 +130663 +511170 +511133 +1457117 +2372269 +38659 +2114292 +511134 +2520146 +213823 +2520138 +2555728 +2114179 +1457130 +1851549 +2114336 +2632585 +1529019 +2114176 +1490177 +993326 +2114255 +1250517 +1457138 +2114225 +2355927 +845943 +776340 +765766 +2114300 +441665 +2100993 +1025902 +190646 +1909929 +2429346 +2372259 +935264 +2114274 +1528909 +719434 +2770 +130637 +2244373 +2114287 +511143 +2632531 +2313039 +845980 +1789074 +2372249 +38671 +911889 +591707 +2632528 +2555749 +2114267 +2632555 +2114194 +951683 +911878 +1490167 +776343 +2073912 +1528906 +130662 +1909915 +2743 +1723972 +679563 +38686 +2312972 +2313059 +1723981 +2632542 +2114248 +511173 +679565 +1457116 +1158570 +776368 +1132732 +993314 +2372297 +2114175 +2520160 +441668 +1108649 +130676 +2114183 +2555767 +2114324 +591690 +2114252 +951661 +2416067 +1364922 +1823663 +2756 +2114211 +2632543 +845972 +2416060 +1851535 +2372248 +2520163 +2422549 +2372280 +1851591 +441676 +130671 +2114223 +1609795 +2114341 +1209158 +2372274 +1823661 +2114155 +1528968 +1723959 +1025912 +1609789 +951680 +899466 +130670 +441680 +1490175 +1909926 +2114222 +2632582 +2452438 +2114317 +1209159 +2429341 +1823660 +1667225 +899464 +353509 +1909921 +441663 +353503 +1749918 +1770758 +2632568 +2372301 +1529013 +2452453 +1528940 +1823677 +2632593 +1528910 +2313030 +1457148 +130650 +1528913 +2632586 +2372264 +130678 +2312990 +130642 +1686515 +2026251 +899460 +38669 +2520141 +2313023 +1528958 +231184 +911938 +2114205 +2555781 +297734 +2273866 +2244378 +993336 +1209164 +846001 +776380 +1909936 +263223 +130694 +2555817 +474964 +1529039 +1178768 +1178792 +2632627 +2452582 +2372323 +2114374 +1609805 +951710 +1659724 +1789092 +1789134 +1529033 +1529071 +2429353 +2632598 +441699 +2114420 +1236408 +2452488 +1686542 +1209170 +1749920 +1178784 +2806 +2555846 +2244406 +474966 +2632611 +2429359 +1909968 +2452568 +2632620 +1348431 +1724031 +2114367 +2452537 +1667261 +1717595 +1686539 +1909967 +2555844 +2313092 +511182 +765779 +1170747 +1197450 +935277 +1529057 +1529026 +2555788 +130690 +1178793 +1956243 +679574 +911963 +38698 +2632631 +1025931 +405028 +1851597 +951712 +1686537 +1909954 +1487148 +426119 +401240 +511190 +755492 +1393339 +441694 +1089517 +2520180 +2452467 +911955 +2452496 +247910 +1209177 +2452551 +1789120 +38711 +993360 +1482477 +1101044 +2632622 +1025932 +1076943 +1310075 +755470 +1667250 +2555801 +2555784 +1724041 +1403734 +2452557 +2555786 +1789100 +2056920 +951698 +511188 +2452485 +2452549 +459075 +1667248 +75893 +755468 +441688 +307343 +426120 +1380106 +2349395 +2114398 +2632603 +755474 +1686545 +2632650 +2452540 +2355936 +1933642 +1529044 +755493 +1609804 +755478 +1724012 +1178771 +2632602 +2555845 +993352 +2114360 +2244392 +899472 +935278 +1529029 +911951 +1037053 +1609809 +1686532 +1178773 +247911 +2787 +765772 +1724014 +2114390 +1178775 +846002 +2114393 +1132733 +2555813 +2452508 +1380107 +213826 +2452470 +1490197 +38704 +1851626 +1667269 +231187 +993362 +2632628 +2313089 +2520184 +2429356 +2114379 +1609810 +1947351 +1686553 +2349397 +1058183 +2555871 +2372322 +1909953 +719438 +2452524 +401228 +1789125 +1851598 +1076945 +755483 +1250529 +1529154 +1529097 +679584 +511223 +2372330 +1490209 +748578 +1749934 +1811613 +2744863 +1178815 +1609831 +745098 +1851694 +2452627 +1529173 +75909 +2750952 +2555936 +2114465 +1609836 +1145037 +511229 +247919 +247922 +591750 +2744844 +1209181 +474972 +911986 +1529179 +591736 +2003753 +2114554 +1851646 +2706966 +511238 +2026254 +679583 +649216 +1609844 +2349409 +2744891 +474980 +1490216 +2632659 +1702580 +1529113 +2632660 +2632683 +2073953 +1129935 +1529155 +2632709 +441706 +2632661 +1529079 +2750963 +1851654 +2114538 +1529182 +776397 +1317520 +1393355 +1300638 +2555931 +846072 +2101002 +1851700 +511197 +1789172 +1789166 +707198 +1348438 +1490206 +1401970 +2520200 +2007993 +2007431 +2313153 +2683869 +2114444 +1987289 +2114530 +1971408 +755497 +2555990 +2744873 +2632716 +776425 +2114529 +1457161 +1789150 +2632704 +1851729 +2114516 +846028 +2313157 +2114490 +2429370 +2452720 +1268148 +1811622 +2520201 +649206 +2313163 +284441 +2007995 +2349420 +1529116 +1724067 +1317516 +2632703 +1393354 +2313176 +2244417 +2749142 +1789175 +1348466 +1310082 +846063 +2744864 +1686559 +2744846 +2452719 +1412961 +1393359 +2555924 +459077 +1380125 +1529085 +1956274 +1490221 +1529078 +1529172 +1348463 +751453 +511212 +2509666 +2429382 +1659738 +2114493 +1317546 +591749 +2555992 +2313181 +911992 +2520193 +2750960 +2452595 +707192 +1101052 +1909978 +1317532 +1984489 +1997903 +2114558 +1708580 +1071267 +2114478 +2114457 +388495 +1749939 +486336 +1529162 +2429364 +1702602 +2429383 +2021072 +2114571 +2555893 +1811620 +2688756 +1268136 +1789192 +1317544 +2114542 +1076950 +441704 +2750971 +737057 +1377272 +1659742 +1529181 +591725 +1529160 +1609837 +1789187 +1749925 +951726 +1851637 +1393361 +846043 +1529102 +2114555 +1348479 +591757 +1209184 +2313146 +1348468 +2422558 +1317512 +1317508 +1529149 +2555951 +2555885 +2720477 +2744859 +474970 +1121625 +2014285 +846051 +1956256 +511240 +2429374 +2114455 +1851674 +1529090 +776432 +2555961 +2114474 +2555979 +1457169 +2750972 +1686564 +1947354 +2452694 +1789158 +1724047 +2744870 +247913 +1348439 +2452686 +1764144 +511269 +345733 +2114518 +1393358 +1659744 +1348478 +2452721 +591732 +1760172 +1789151 +511302 +38730 +1789138 +776424 +1789161 +719442 +1609820 +993382 +511286 +2683866 +2452622 +511255 +1956278 +1457163 +765780 +2683870 +1529142 +2824 +353512 +2287834 +2114598 +1348488 +1789203 +2516448 +1300651 +1823721 +951757 +2744906 +2313204 +2452854 +2313230 +2452873 +935301 +2452896 +1101053 +1490223 +441708 +1052908 +1062157 +1529224 +2313234 +2452811 +1529215 +441709 +2067417 +1209195 +755499 +1377285 +2287810 +1121627 +401264 +1851756 +1490228 +912006 +951764 +1789202 +1659756 +2313237 +1529237 +190667 +2287820 +2349434 +2452846 +2770261 +951758 +2452893 +2556047 +2026260 +1268164 +1789218 +2452894 +2452789 +2452758 +679607 +951751 +2770259 +2452812 +951782 +2632754 +2313205 +1490245 +993400 +1490246 +1317563 +2452765 +912026 +1764152 +1686591 +2556010 +2073960 +1317564 +1851778 +951752 +1764150 +2556016 +1789208 +2744900 +511328 +1724071 +1956282 +1058186 +1529270 +2429395 +2429410 +1851780 +1851763 +2452750 +2114595 +2452769 +2741879 +511331 +1390844 +2313238 +190662 +2849 +2556036 +719459 +2287850 +2452816 +2632745 +951761 +2750983 +2452727 +1789213 +2556030 +993403 +2632737 +1667316 +1397670 +2750995 +2770264 +1268162 +2556045 +2114600 +1529254 +912004 +2452831 +1529266 +1681112 +2429405 +2422564 +1910012 +1401973 +2452745 +1851765 +2632728 +2452864 +202728 +1667314 +2114592 +2452738 +2696926 +38741 +1412972 +231204 +1209191 +2452871 +2556063 +1268163 +993398 +1529218 +776451 +2114606 +1348489 +1348485 +1158591 +511326 +1659761 +2429406 +1851749 +511332 +2556048 +1209202 +1145039 +1956281 +1764170 +2452944 +1609859 +2372376 +2770430 +2453003 +2556111 +1529323 +2770284 +1076975 +2429422 +2770309 +1659769 +899487 +1317581 +75957 +1380134 +2452993 +2452937 +1348507 +1490257 +2009500 +1971419 +1910014 +2452971 +1851852 +2452982 +2355942 +2313267 +751470 +2632793 +2453019 +2372368 +2632803 +2021080 +383518 +1490265 +2114655 +2452925 +2556072 +1724100 +2632768 +776484 +1971418 +2452961 +2750999 +776476 +511349 +776493 +776479 +2556070 +649222 +2452934 +912042 +1851848 +1823733 +1686612 +284444 +1348513 +2875 +2632764 +2372361 +1789238 +2556087 +511382 +2556113 +2114630 +2850069 +776466 +1145072 +2287886 +1317586 +1529299 +1956288 +2850045 +2770278 +2750996 +474995 +2770353 +1145070 +2114634 +1910016 +1158615 +2632804 +2770307 +1529305 +2313249 +2313254 +2770395 +2770301 +1851850 +2030916 +649221 +899494 +2114642 +2429413 +511381 +474994 +1789226 +2313284 +912029 +2770398 +1851840 +1910027 +1702607 +2751000 +511395 +1789239 +2556102 +1413018 +755515 +75945 +130720 +2114650 +2452995 +2114617 +1971415 +2632762 +1823729 +2556085 +1121628 +2452911 +2632778 +2313288 +1529344 +1851792 +1268173 +1052911 +353515 +1940160 +1025940 +2452974 +1529395 +1412994 +1667347 +2372372 +2313262 +1529336 +1529397 +1529384 +1529410 +2313285 +776457 +1851816 +2313273 +511394 +1851835 +1947355 +1910022 +1413000 +1529369 +2114626 +1317599 +2770372 +2114680 +2026262 +2770340 +2313294 +1667342 +1667328 +1268174 +719467 +951790 +2770435 +2871 +2114681 +2770416 +2850040 +2313278 +899492 +2520216 +2452969 +1724087 +408687 +75932 +1317617 +75938 +1178835 +2280507 +776496 +1490271 +1686611 +1108670 +2073969 +2770356 +1994264 +591812 +679662 +2244460 +846106 +1380142 +2679552 +1681114 +935331 +2287936 +2355946 +1132741 +679646 +679654 +2520233 +846181 +1209227 +846326 +130753 +1898402 +1724109 +1764172 +1851866 +2556184 +1348525 +935314 +2372402 +1310091 +1851905 +2453093 +707225 +2056929 +130798 +75989 +935313 +2706979 +2114701 +2114793 +511423 +846320 +2114833 +2900 +2244562 +130855 +2556212 +2114778 +846297 +846157 +2520244 +38766 +2901 +2632832 +2696930 +1317695 +130790 +707217 +288995 +1609890 +1823758 +2453105 +1667355 +2244549 +846314 +1317672 +1268183 +1529513 +38829 +2114832 +2014302 +1529422 +1393387 +707221 +664229 +846111 +591787 +441720 +1609886 +2014300 +130822 +2355950 +1317674 +2114713 +2114836 +1457219 +130820 +2520237 +719472 +846136 +2411523 +679649 +2101014 +2101009 +75967 +1393385 +1310092 +1609887 +951808 +1413033 +2556156 +2114687 +993432 +1529522 +2114802 +2453122 +1457251 +2727798 +2313307 +993465 +2372428 +1058188 +1667356 +2114737 +2287940 +2244483 +846322 +1609892 +993413 +935310 +1317659 +2727793 +591826 +2114725 +75972 +846334 +2244486 +776539 +1956295 +190692 +2741881 +2429438 +1062169 +2632845 +846346 +2453037 +1529421 +2355954 +846275 +2287901 +776513 +1348531 +2744929 +2453071 +130801 +912062 +2114840 +2453121 +846147 +846182 +2896 +38761 +1529516 +776521 +2453057 +38780 +1348530 +2073984 +846335 +2897 +993450 +202744 +130739 +1843041 +846257 +2453035 +846107 +1956296 +2453106 +130775 +846201 +1529499 +2556174 +1457238 +846299 +1768407 +1457248 +2453120 +1457254 +1529507 +2244558 +511405 +1956294 +1609877 +130800 +1823755 +1268191 +1317684 +1997931 +2453077 +353518 +1609924 +1457269 +1457245 +1403743 +130809 +130874 +993437 +2244575 +1317694 +75992 +1380143 +2244471 +1529456 +993421 +441719 +1317655 +2556158 +202737 +1997918 +1987315 +846352 +846137 +130745 +846239 +326451 +1052916 +2056931 +2114742 +130830 +1609935 +2244514 +1490281 +2287928 +130825 +846259 +1317668 +362883 +1071280 +1667372 +2101015 +2623468 +130744 +1994266 +38755 +1413023 +1089541 +2244498 +2244556 +1529430 +591811 +1609960 +326448 +2556160 +846139 +1724111 +1529413 +707210 +1609912 +1457283 +1686622 +1457270 +38805 +1609885 +1609949 +951811 +38743 +1823750 +2453091 +2114834 +1062168 +2453099 +1724102 +776548 +1393383 +2114696 +1317680 +591792 +2244534 +776536 +2056926 +38788 +1457232 +2453119 +1076982 +1457228 +591824 +2509698 +1268189 +2114697 +2114769 +1702619 +38812 +846148 +2313310 +1082843 +846223 +2520242 +2244513 +1529524 +2244464 +2520238 +1317666 +2520230 +1529451 +2114804 +1386581 +202741 +993433 +1609869 +2556150 +993420 +1457268 +511436 +1457279 +511433 +591777 +1413038 +776528 +38786 +2556147 +130844 +846325 +591780 +1956297 +993454 +993441 +75978 +1145079 +38808 +2882 +993407 +2114688 +38784 +38763 +38804 +2898 +2453078 +2114689 +2114746 +130776 +1317645 +131037 +993475 +846457 +131035 +1609997 +1609986 +131002 +591878 +38990 +1610058 +2632860 +130964 +130892 +846407 +1702625 +130997 +307369 +231233 +38933 +76019 +846371 +1529531 +846444 +307455 +846419 +307361 +1610001 +846474 +846490 +130943 +372523 +993497 +130947 +1291176 +131028 +38957 +2244613 +2411541 +591871 +846482 +846391 +130898 +289000 +2411549 +2244641 +846445 +2632861 +993498 +38902 +131012 +307397 +38834 +307410 +307363 +2244652 +846485 +1610064 +131066 +1760184 +38943 +307439 +1702629 +2244610 +130996 +2114852 +1037063 +231225 +38968 +2244654 +38904 +307447 +131030 +591853 +38879 +2244630 +2411548 +591884 +231227 +383521 +1457297 +993483 +846473 +130993 +231240 +1529539 +1457310 +1609995 +935347 +38896 +130968 +846398 +1457287 +1610055 +38922 +846383 +1910034 +131051 +1609994 +38840 +130955 +2411536 +1250552 +993473 +591861 +1933651 +591875 +38985 +591839 +2244636 +1749967 +2556221 +846388 +190693 +213879 +765794 +307379 +1610052 +388500 +38995 +130952 +846460 +2244620 +2114851 +131015 +38906 +846467 +1760177 +131070 +846368 +38961 +131063 +776619 +511484 +2287963 +1529588 +2520266 +776574 +2556250 +2938 +1529576 +213880 +2520260 +951823 +1789254 +383529 +2422576 +1209244 +1659796 +912094 +511485 +1851940 +1025948 +2114921 +1851947 +2520273 +2931 +1910039 +213882 +2114874 +1108700 +2453127 +1789261 +2114926 +912077 +2453128 +1823769 +899512 +2556241 +951824 +2453151 +511495 +2926 +1300667 +2114938 +2520262 +2925 +2114872 +951816 +511500 +2074008 +707233 +1529568 +1317706 +2074007 +1764176 +2453135 +1764179 +2556269 +912107 +383536 +76039 +1667379 +1490311 +2429440 +1062179 +1659792 +2287961 +2114893 +1724118 +1108689 +2520254 +511470 +1667382 +2287953 +76031 +1686635 +1490301 +912080 +1490304 +511513 +2074017 +2632887 +2114877 +745106 +1108697 +2287964 +1403747 +846503 +2556258 +2074005 +1076998 +2067422 +1108692 +1529608 +2074004 +776581 +1077003 +1667383 +1956313 +776563 +2114911 +1108698 +899516 +776560 +511480 +1529572 +511504 +2074029 +383527 +1789262 +2453157 +1667377 +511483 +776668 +1062199 +332386 +993507 +2030985 +345738 +1724130 +131150 +1997938 +2453180 +776670 +1317721 +1529727 +247983 +2114960 +2520285 +2751036 +1667384 +1529658 +2372457 +1071291 +899518 +1403753 +326478 +76103 +1789269 +1209254 +2244691 +511534 +2114963 +326477 +131139 +1108709 +1610083 +2114977 +2429455 +1529649 +1413073 +289010 +993515 +993536 +951836 +1898420 +1089562 +1317743 +591907 +1300670 +1250565 +679688 +1393399 +776626 +776653 +1851995 +649236 +2632895 +76080 +1997937 +2244692 +362890 +1910057 +1490336 +2030974 +846537 +1852009 +846516 +1852017 +1390850 +263238 +1397679 +1490332 +511546 +2520279 +776656 +511532 +405034 +1667396 +1457323 +846540 +190707 +1686653 +2556285 +1089558 +2115024 +846536 +1610098 +1145089 +2030978 +2453215 +2287981 +2770462 +2071746 +1851976 +951830 +2556333 +1089553 +1717609 +1209248 +2355956 +2453206 +263232 +2074042 +1250556 +2727802 +1529677 +1667392 +2958 +1529682 +131147 +76122 +1851962 +2744940 +2955 +1108704 +1749969 +511526 +1851977 +76063 +1686647 +935357 +951849 +1062200 +2453177 +1529662 +1268201 +993510 +1529621 +2287984 +951845 +912122 +1413066 +1956314 +307463 +131126 +1529650 +1851984 +1174320 +1158641 +2014305 +2696949 +846549 +2683874 +1529714 +247967 +247978 +1686651 +719477 +1529704 +2244688 +247984 +1667398 +2950 +2453219 +2556302 +2115006 +912117 +993504 +1403752 +1823772 +511548 +1852004 +1397680 +500929 +1037069 +2744942 +131124 +2453210 +1250554 +2453192 +2556297 +2372467 +2355959 +1686642 +76107 +1529655 +131097 +912119 +993516 +846566 +1529744 +1702642 +1513516 +1749968 +2556308 +1529657 +1457329 +1851961 +951862 +2287976 +1724129 +1513511 +1529759 +1529752 +1529671 +1166215 +899536 +679701 +2074057 +1529666 +1851996 +2114972 +2244683 +899539 +1513517 +1851979 +362897 +1529735 +993509 +951842 +2026271 +993529 +2101028 +1761194 +1403756 +1062212 +2824091 +1667405 +993542 +1761218 +2313338 +231257 +76140 +1058194 +1071295 +1513526 +912150 +1153362 +935390 +2115163 +76132 +1659817 +1819249 +1457356 +1852032 +1821321 +326495 +1811670 +2824090 +2115093 +1789319 +1052928 +1898438 +1153344 +1852064 +935369 +2770513 +2349455 +2443540 +511581 +846605 +2115173 +405038 +1236431 +202755 +912160 +1529799 +1819251 +1300674 +1413083 +1141301 +1761183 +401281 +1071333 +2021093 +76128 +247994 +1153331 +1724142 +1178927 +1681119 +247998 +1821319 +2287999 +1145128 +2287995 +707239 +1529769 +2031001 +1457352 +1811674 +730021 +912133 +1852084 +1770801 +231252 +1166233 +39041 +2741889 +2770524 +1071301 +1529805 +1260815 +329137 +432873 +1197500 +1852025 +2453225 +1317771 +1681123 +1145118 +1513537 +405050 +1987329 +2014306 +912158 +357609 +2509708 +2770489 +39031 +2115077 +1158644 +231256 +408692 +1852049 +1413081 +1724143 +1153347 +1166230 +912175 +1811682 +1667399 +1789328 +2770471 +1071310 +2770476 +213896 +2865874 +1153333 +2244717 +935396 +1789313 +2770526 +2074074 +1490373 +951874 +2770480 +1145131 +1529804 +2741887 +2770525 +2115068 +475010 +1386587 +1052927 +2751037 +1087338 +846601 +1145101 +993538 +1764191 +1058192 +1513542 +1071334 +846599 +935378 +326503 +388507 +39063 +2556345 +1236432 +2115171 +993576 +2115076 +1898423 +2244715 +1050008 +1513562 +2115145 +2115069 +1789329 +345743 +213905 +1071304 +39037 +1761181 +2244743 +372560 +993561 +131188 +2115150 +1071311 +475015 +401293 +1852028 +846588 +2115059 +993546 +408694 +679704 +935380 +76153 +2288002 +326498 +2115118 +1529788 +2422589 +951875 +131177 +776682 +190714 +1397681 +332390 +1819239 +1933667 +2741891 +1058193 +591910 +231265 +2313337 +2244760 +2520310 +2288001 +1749972 +2115129 +202759 +1058198 +993568 +1852053 +2556359 +2115121 +1811653 +1197501 +1819236 +2074068 +912149 +2244746 +2349451 +372558 +846592 +2770521 +2372477 +1058200 +2030997 +1789288 +2865873 +39056 +329147 +2453249 +2679559 +2101033 +432881 +2115175 +2021091 +1852060 +2632911 +401285 +2009506 +459105 +475009 +1209265 +131210 +1997947 +2969 +2824073 +500934 +39026 +1852062 +1749973 +1513551 +1823785 +846634 +383547 +1490358 +1761192 +2244734 +131175 +1770793 +362899 +1811633 +1393407 +2115144 +2453248 +131152 +739642 +329146 +2313346 +1209315 +1490386 +1089569 +1197526 +1852120 +1174347 +1490381 +1529845 +2751040 +475061 +1209318 +1062223 +2520316 +1089576 +1702666 +1071347 +383549 +1852095 +2453260 +2115182 +1178936 +1178962 +755547 +383555 +1852098 +307474 +190730 +357614 +1178949 +1749982 +1153374 +1852109 +475039 +342639 +1174348 +679716 +131228 +131227 +213923 +2520327 +679712 +39078 +719488 +475018 +2349461 +751477 +1529829 +131215 +1852085 +1209302 +131221 +2115188 +2994 +1145142 +2453304 +2244764 +2993 +1910095 +1317777 +405056 +2679563 +1101082 +2313343 +1260822 +1852135 +2313347 +2453283 +511589 +459111 +383552 +1933678 +2115202 +2632932 +1052933 +2453295 +2520328 +1724148 +190723 +372574 +1166239 +213918 +1197514 +2429470 +1209303 +2453255 +2632946 +1910086 +372575 +1811683 +2443543 +475032 +1178937 +1724156 +745114 +1724154 +1852137 +591926 +1852093 +1811688 +408702 +1686670 +2632933 +76170 +2453297 +1236460 +592005 +1610130 +2850114 +1823805 +1681132 +1052936 +2850262 +737062 +1134244 +1348577 +2355982 +2850116 +2280536 +2770563 +1724164 +2696950 +846700 +1724160 +649239 +131283 +2244797 +745613 +2115231 +846682 +745631 +2850085 +131264 +2074106 +2509736 +1852182 +2734391 +263255 +2850228 +2850147 +1610180 +2101044 +2556386 +1391677 +1513571 +1174355 +337859 +231295 +1852184 +1852162 +1058209 +1051353 +362915 +1852150 +748582 +2372488 +2115206 +231288 +2850136 +1724166 +511641 +846667 +1386589 +1268217 +2010609 +2728782 +951892 +511622 +993635 +1610204 +776714 +951893 +263252 +1377326 +1413098 +131230 +426129 +2850086 +2244780 +1770814 +2850259 +1843045 +39094 +1348570 +362913 +935419 +846707 +2115218 +591998 +2453330 +1174357 +2850256 +2556395 +372577 +1823815 +2244789 +2751043 +1037076 +846655 +906866 +1898465 +2850247 +1852152 +2014330 +846650 +993589 +1724165 +912213 +679727 +511610 +912215 +1610197 +591982 +1457374 +1852180 +353541 +1610207 +1529869 +1984502 +2280538 +846659 +1702668 +2850223 +2074105 +734934 +1789366 +2115226 +1610185 +1209328 +2074103 +1610166 +2706993 +1062232 +1513572 +1971460 +2074095 +1823803 +2850128 +1852176 +1898470 +2101040 +1708600 +1058203 +1236467 +1413101 +2850108 +1513570 +3006 +2453313 +2728783 +1987336 +2850083 +39095 +76184 +755550 +664265 +1823799 +337852 +846687 +2556393 +1852185 +1749989 +2074093 +1101097 +2074097 +2850229 +2770537 +1268216 +2372485 +307478 +935408 +1377324 +2850205 +2509733 +846697 +459113 +935429 +2355972 +2770534 +2010611 +2014322 +1108731 +511642 +511639 +131249 +329155 +591944 +1379128 +432886 +1037077 +1121662 +1686672 +591946 +2850236 +2031015 +2355975 +2770540 +2509730 +1413105 +511633 +1457386 +1610201 +1823840 +2453347 +1667456 +1457398 +1823834 +213938 +2372516 +284463 +1268231 +1529884 +592050 +912221 +2074141 +1610220 +2074140 +1764197 +1348596 +2556420 +1768419 +846747 +912239 +1457412 +1956334 +846739 +76189 +592054 +846770 +912233 +1236483 +679748 +1291196 +2115236 +1724172 +776717 +2074144 +2372503 +1413113 +213940 +1823824 +719529 +1529880 +1025963 +776720 +2288022 +2372491 +2115246 +2556439 +1490404 +2372511 +1236480 +511674 +2313362 +2520335 +1659835 +190736 +511697 +2313367 +511677 +2556418 +1821342 +1823821 +592042 +1529874 +719534 +1761234 +2556428 +1529883 +776723 +1348585 +2115312 +2427385 +719530 +2520400 +2115273 +1342356 +2770573 +1610221 +1413112 +2313361 +131330 +1209335 +2115237 +1708618 +2313366 +2770582 +2520368 +1529887 +2356001 +1108741 +912231 +2770581 +1209336 +1708613 +1413115 +511698 +1667439 +2520429 +1667449 +776716 +912229 +1268220 +1667447 +2453346 +76186 +39115 +2520423 +1823827 +1310115 +332396 +2623491 +1310112 +1724180 +1513581 +1529872 +846746 +2372517 +592036 +1947370 +2115310 +2556423 +1956340 +1209337 +1310111 +776726 +2115302 +2288035 +912256 +1052970 +3032 +1317828 +912301 +1209361 +511751 +2556466 +2288041 +776746 +912279 +1413123 +1764210 +1317821 +912294 +1108744 +1852222 +776734 +2288050 +2520435 +511744 +1667479 +2372524 +284467 +2453360 +2556487 +2707009 +1062236 +511743 +2422617 +1764203 +1268235 +899587 +511752 +511748 +1300682 +776745 +776753 +2115322 +912293 +2010623 +3029 +511734 +912287 +3036 +2556488 +1348604 +2556477 +1940168 +1956346 +2556464 +1971474 +1764206 +912282 +2707003 +776747 +1764207 +2556471 +1348607 +511726 +2632987 +2074170 +2453363 +1268238 +2744955 +1317826 +1823853 +76199 +912303 +408725 +1482515 +2707016 +1529898 +2067439 +511728 +3022 +2556491 +776755 +2707020 +2696981 +2453369 +719536 +1490426 +1852223 +1317831 +2074157 +248004 +2429481 +1393412 +1659859 +1268252 +2115353 +2429502 +1268248 +284469 +776792 +2741911 +2453387 +441745 +1317848 +2422643 +2007441 +511768 +776794 +1490450 +912333 +776761 +1386603 +1659879 +1852244 +2453384 +1971481 +2443546 +734938 +511782 +2003779 +2313392 +1317859 +2429522 +2313397 +2520446 +2422628 +1956366 +1667521 +2744960 +912330 +2770586 +1135901 +1529926 +1667507 +76227 +511788 +511760 +679783 +1268242 +511785 +1529912 +2115346 +2429504 +2520457 +2115397 +1317847 +2422636 +2623492 +1300694 +2729904 +592062 +899599 +2429515 +1268245 +1764216 +2014343 +2422633 +408735 +1956362 +2696987 +1667500 +2556510 +511763 +2770589 +2741924 +748584 +1300693 +1178977 +2556500 +2115430 +405059 +2632988 +776777 +2280549 +1529925 +912322 +2422649 +951926 +401308 +76225 +1364955 +1997967 +2288062 +2010629 +1391694 +1317844 +899590 +776771 +1393416 +2420780 +2429500 +405058 +2115345 +2453399 +951924 +2115402 +2115356 +1529916 +776766 +2115360 +2288065 +1971486 +1956361 +2003777 +2115425 +2422629 +1529915 +398439 +2115422 +2115468 +1209365 +2115470 +1209363 +1037095 +1342363 +592070 +511800 +1141309 +899602 +707269 +846868 +2372536 +2520503 +951932 +2520496 +2729905 +906870 +2074234 +1764221 +1667544 +2372540 +2115445 +3062 +1659883 +1823876 +2372528 +459121 +1971496 +1513592 +2244830 +511815 +1197545 +1058213 +2427392 +2705025 +131365 +679792 +2115477 +935444 +2728804 +2422668 +1052974 +1610243 +2356031 +76233 +592112 +39121 +906872 +2356028 +1348625 +592093 +1658568 +2729909 +2520488 +1659884 +592116 +2288069 +1197555 +2115488 +1178994 +592101 +993668 +1513604 +1811696 +1762859 +2556522 +1852252 +1843052 +935451 +1610236 +846834 +2244825 +679806 +2688767 +2356007 +846853 +1513589 +1658569 +1823889 +2372533 +2244845 +39143 +2115494 +707262 +1178981 +679809 +592084 +2520518 +1910107 +2422660 +1610238 +441746 +2411566 +846889 +1407982 +213965 +993675 +131377 +263264 +592117 +1413144 +993664 +1768427 +231301 +2741938 +2074231 +263267 +2313416 +1108746 +1291214 +2115443 +1770864 +2074222 +1197542 +1761239 +39141 +2734398 +39139 +1610235 +846838 +1407971 +1610242 +1407986 +1968518 +1317881 +1610228 +511806 +1407972 +1652380 +2115439 +899605 +2688765 +2516462 +993673 +1956374 +2509743 +1179003 +1490472 +2520459 +1513619 +1364958 +2518343 +1317873 +1482519 +231324 +935446 +2115440 +1823885 +39123 +719543 +1852254 +307487 +912344 +679795 +1686689 +846881 +1762855 +592111 +1708639 +1761237 +1659887 +592118 +2285423 +1823886 +1482520 +2520474 +1610240 +2556543 +2697030 +1843058 +2244811 +951933 +912352 +2356023 +1610251 +2285425 +1823879 +2632989 +2520525 +459123 +1134249 +2288073 +2720490 +459133 +1342364 +131375 +2115453 +511790 +1089609 +2422664 +899606 +2850303 +1364956 +592087 +231308 +2279368 +2850305 +2520465 +1141313 +935460 +1659885 +2244824 +679798 +202772 +1610252 +2520468 +2623495 +441748 +511817 +2115479 +231306 +2007442 +592077 +2285421 +1971491 +1197539 +1768431 +1956372 +2516458 +679803 +1300701 +2356041 +1610286 +511833 +1940182 +2556566 +2031044 +2313419 +2520539 +1391696 +2697074 +2556586 +441756 +2556598 +1956407 +2741946 +1971502 +1529956 +1268280 +1956398 +679831 +1529950 +1956418 +1317903 +1380173 +2115520 +1300703 +2429543 +1291217 +1610284 +131401 +2697042 +2865926 +912369 +899612 +76243 +1179013 +2520555 +2744972 +2031049 +2288087 +2741965 +1379135 +1702674 +2356043 +1413150 +511828 +2367223 +511827 +2453428 +1052980 +231331 +2429546 +1529967 +1101119 +1987344 +1377337 +1413159 +1407991 +846909 +3069 +1513632 +1058224 +707280 +2556594 +1529971 +441754 +1268268 +2520556 +2518345 +1750005 +1300702 +2556570 +2697072 +592128 +1348632 +2729922 +592134 +2556572 +1348635 +2115532 +202776 +2056977 +1664693 +1379131 +592131 +1101120 +131389 +2031046 +1457458 +2556558 +2244864 +1659894 +679829 +2520548 +2280586 +776839 +2759593 +131388 +2115560 +2697070 +2115558 +2356038 +1413148 +1457452 +2697047 +2520574 +2115543 +1664692 +39152 +2691324 +1268275 +231330 +2865918 +2244868 +2115535 +1997985 +912361 +362936 +1956388 +776834 +1268282 +2556576 +511841 +2741966 +2707045 +1956421 +2520569 +401310 +1058228 +2707070 +2556717 +2850356 +679848 +511855 +2411573 +2850419 +1667576 +1764223 +1610326 +1291227 +1457479 +847055 +1956472 +1956485 +1413196 +1659903 +2556642 +2453447 +2372589 +2697151 +2697089 +1089620 +2056984 +1610331 +2837533 +679845 +2520589 +213973 +2288165 +2850307 +1348639 +1513665 +2697091 +2866005 +2279373 +1530003 +1101126 +1667563 +592169 +776885 +906876 +511883 +2074367 +2866012 +1268301 +2356078 +1667561 +131405 +1686694 +2244893 +2244898 +2429547 +2850319 +847014 +2865965 +1158685 +2633003 +2556644 +2453458 +2850329 +1268319 +2067465 +2520652 +1761242 +2288143 +2850401 +951940 +2074267 +1317955 +1457481 +2520628 +592164 +2115670 +2280623 +213976 +1667587 +1413216 +2288146 +131409 +2520609 +2313431 +2031056 +846973 +1457467 +1764227 +2115638 +1667574 +441760 +2074292 +2003784 +1823906 +2427409 +2244905 +1179019 +951936 +1342387 +679860 +1291229 +2115577 +1134255 +2115633 +776864 +664291 +2115631 +846989 +2372565 +511897 +2074322 +1174366 +511909 +2356080 +1971538 +2866014 +1610306 +2244869 +2280605 +1291230 +2683893 +2865967 +1268305 +2074282 +1681143 +475084 +846946 +1750007 +2697096 +2697147 +734944 +2031055 +1380180 +1174362 +1300709 +906881 +2372606 +511867 +2707080 +1610318 +2067483 +362945 +131427 +2850358 +679868 +846997 +2697150 +1667572 +337870 +1457460 +1457531 +1724208 +2741968 +263281 +1457482 +2056995 +1051366 +1457533 +2865972 +1457488 +1457507 +2729931 +1762884 +2074310 +1291245 +2850364 +1681141 +2691327 +2288106 +2850382 +2729944 +776851 +2288103 +847006 +1947386 +1170780 +912384 +1968531 +765834 +846961 +1811698 +1317927 +899620 +1482528 +1025971 +2623501 +1291225 +231335 +737066 +2741969 +248012 +2244884 +1707630 +2280621 +1681142 +2837528 +2115667 +213975 +2707054 +2824197 +2866017 +372585 +1317909 +1391708 +1819259 +847049 +511899 +846983 +1529993 +2313429 +1956463 +2866043 +2850327 +2556615 +2866052 +2288150 +2429576 +1610334 +592179 +2313433 +912396 +1823915 +847023 +1377342 +1268289 +231332 +1300715 +1166249 +1457490 +2372603 +1158686 +2556718 +441762 +2739176 +1413195 +2705029 +1342375 +2556697 +2074345 +2556694 +846949 +1490533 +2244907 +679861 +2728819 +1291238 +1956482 +1291236 +337872 +1513660 +1750009 +2865958 +2115583 +1490505 +2101064 +1457469 +2556696 +2850405 +2520646 +2850404 +664285 +2520631 +2837523 +1971530 +1971524 +1037098 +847005 +2850425 +935478 +1052998 +592163 +2683902 +2850402 +1457517 +2280603 +906879 +2741977 +1659906 +2115646 +2729933 +1658572 +353556 +2520663 +1997995 +2865943 +1482532 +2697102 +39160 +1971536 +765841 +2288110 +2697107 +2865959 +2520715 +679840 +2707061 +2850389 +2707072 +649258 +1089622 +2850423 +1956456 +1386606 +2453452 +2244880 +2707090 +847012 +1268310 +231341 +2697113 +2422721 +1377343 +2273877 +2520669 +2866031 +2741995 +2356057 +679863 +1513667 +1364964 +2427405 +899623 +1179023 +2443554 +776870 +1823942 +511948 +2074390 +2520758 +2718968 +1300717 +2288193 +2313457 +1236509 +2556729 +2244918 +2280636 +679888 +2313445 +2074419 +2074437 +776891 +332406 +1686707 +2707110 +3099 +2074427 +2288188 +1823948 +1823944 +993693 +993696 +2115703 +2742001 +76276 +2556766 +131453 +2288200 +2453471 +2356090 +2115697 +2707103 +2411579 +2074403 +776921 +2520759 +131452 +1342397 +511932 +847072 +2115723 +2288187 +362948 +1209383 +1053002 +2429585 +1457545 +2074434 +2115689 +2074405 +1530006 +76290 +2429581 +2520756 +679891 +776912 +2288177 +2429586 +2115695 +2742000 +2115717 +912424 +1852288 +511919 +2453473 +76281 +912410 +131457 +2115692 +213978 +912402 +213977 +1706790 +408746 +912422 +2115690 +679894 +2115725 +459149 +2010663 +1811701 +2556756 +592206 +1764239 +2420790 +1852290 +2453465 +2074395 +1053005 +2288168 +847073 +2556746 +2115729 +2115748 +2824201 +2556768 +2556769 +1391712 +2720502 +1413236 +2520730 +2115752 +2280642 +1823941 +2115738 +1764229 +2367232 +2313461 +511939 +2520725 +2288216 +2288203 +2372613 +2520754 +1174367 +2556745 +1413235 +2244912 +2115743 +1179030 +2010673 +1686700 +2074431 +202783 +679877 +2074388 +847111 +39200 +39172 +1490536 +2556791 +1457562 +1310138 +2057017 +1513683 +76307 +1413263 +1971547 +1236514 +993725 +847097 +2074491 +899659 +1667600 +2707120 +2244943 +679897 +2288224 +1610355 +1667607 +1413262 +2244941 +847124 +1166252 +2429606 +1490547 +2288240 +2074490 +2244924 +2115770 +131474 +1300719 +2074479 +1101132 +847108 +2115823 +1413245 +2520769 +1789413 +2520766 +2697162 +1610387 +1457567 +2115830 +592219 +2067495 +345778 +2115789 +2313468 +1134261 +1530046 +39182 +2067494 +2288230 +2623506 +2074496 +1134263 +2244950 +1762898 +1664699 +1413255 +2115769 +1413264 +76318 +2074461 +1789412 +1058237 +1811707 +1377354 +1530044 +1610363 +2074493 +2520763 +2688778 +847134 +39175 +847113 +2280654 +906886 +1391724 +993726 +1490551 +2313472 +1457557 +1317997 +213993 +1667599 +1971544 +1667610 +2115783 +2115781 +2074471 +2115771 +1413265 +2273879 +1789419 +2057025 +1610354 +993720 +2520765 +1457574 +1610356 +337878 +131493 +2101072 +1457576 +847199 +2115794 +131533 +745647 +1236513 +131511 +362949 +3114 +1457596 +2115811 +2244926 +39203 +2028133 +1956507 +1971543 +847188 +1708668 +2356118 +131604 +1750032 +1108760 +2556893 +2115851 +2115934 +408749 +2356105 +1179060 +776976 +2288245 +2074512 +131562 +2115885 +2633017 +1025980 +1852305 +1610417 +847333 +1956517 +1490580 +1025997 +1457648 +1413302 +1037118 +1513701 +1025975 +511996 +1457608 +131558 +131542 +1413297 +1646123 +1291263 +2679572 +935501 +131584 +847211 +2115859 +993739 +1823987 +76344 +2372667 +592245 +2633040 +2520786 +1610435 +847284 +1457602 +2633013 +592275 +1530055 +1179057 +2244991 +1408010 +2356152 +2115869 +1457649 +847314 +1852302 +1724224 +2057039 +511981 +2057036 +1646117 +2556845 +664294 +2372684 +1490574 +284501 +1513715 +2115867 +2520785 +3152 +2556801 +3157 +2520798 +2372725 +847324 +2372739 +1108763 +1750022 +1852315 +2416090 +1413287 +1310139 +847240 +1457604 +1530064 +1823981 +993735 +993753 +1513693 +847341 +2115881 +847230 +1108764 +1291262 +39255 +1490565 +1318015 +511978 +2356141 +362954 +1657213 +776988 +284478 +289019 +1708669 +2623508 +2372694 +1852310 +2556877 +2372697 +847267 +512009 +1101134 +1724227 +2556868 +2556828 +1530073 +2115952 +1179061 +2372654 +1413278 +1910126 +1610394 +1108758 +248019 +2443561 +1457600 +39253 +2115846 +1652385 +76326 +307507 +39251 +1852320 +2356104 +1852334 +2372655 +1852333 +2074530 +1940202 +1413313 +1768443 +2556869 +1490564 +1342414 +2244987 +776974 +2372692 +2556825 +3142 +512011 +131607 +76338 +76334 +3139 +1490576 +131609 +131585 +2115891 +2115893 +2031098 +847226 +847270 +1898495 +131546 +1490561 +2372706 +2026291 +3133 +1750019 +3158 +1987358 +1852323 +1667619 +1646118 +1646121 +388518 +2556842 +2556813 +776994 +2273885 +2633024 +263292 +1413324 +426144 +2031093 +2074522 +2556864 +1971552 +847281 +1823959 +284489 +1089635 +776989 +1490577 +2372676 +1457659 +2516491 +2367240 +2556862 +1250588 +2683916 +1667617 +76325 +2313496 +1610440 +1023360 +765849 +1174373 +2028134 +1530052 +2372664 +1513707 +1513708 +2115928 +76330 +1852300 +2031092 +1413295 +2356139 +2115860 +776965 +1910119 +707306 +2273894 +765851 +2356117 +3146 +2057058 +592255 +284481 +847224 +2115853 +511998 +1610406 +76336 +1089636 +2349479 +2115951 +441772 +1750015 +3162 +2074521 +1457654 +1708659 +2707129 +76360 +2850444 +1652394 +2074571 +2116057 +362962 +1667625 +912472 +1910130 +2116061 +1300728 +1610469 +2074578 +847350 +2520837 +1971560 +1708680 +2313516 +2429613 +1268387 +1530096 +1513724 +131638 +2010678 +2356176 +1490591 +777033 +2372773 +777022 +2697178 +2245059 +847402 +2116074 +719567 +1971555 +1457699 +1380191 +777014 +2866066 +2116010 +592278 +131624 +1610463 +2516497 +405072 +847384 +1268365 +1236526 +2520824 +707312 +1971561 +512023 +512045 +592300 +2313511 +1686713 +2742007 +993769 +1268384 +847430 +2057073 +777020 +1852356 +1852345 +2429612 +2116069 +2416100 +2313519 +1487178 +1348666 +847424 +847387 +847361 +1513755 +353560 +1310146 +76350 +2372772 +357623 +1364972 +1318051 +1706794 +1291283 +2115996 +2313525 +2453489 +1457693 +1852357 +1158704 +592292 +131649 +2520850 +2520820 +2313515 +2739187 +1530099 +2453494 +1037156 +2372778 +2057060 +3179 +2707141 +2556935 +2116081 +1268381 +2356227 +2313524 +1413341 +2245058 +2031140 +2116029 +372591 +1750037 +592285 +1408039 +2116004 +1987359 +231362 +2557011 +2057061 +2556950 +2520858 +2516493 +1101146 +2520826 +2556995 +2031145 +847431 +2556915 +1764240 +1291278 +2057101 +2509758 +1724258 +2356202 +2031117 +3183 +1408029 +2520864 +2356179 +2556912 +847405 +213996 +39270 +2556940 +2313523 +2556984 +1513721 +1956537 +1513757 +2074577 +2116079 +459161 +1998002 +1408030 +1956562 +2453495 +777017 +1968545 +2623514 +1956546 +2356154 +1482556 +2556956 +2115987 +76366 +1490588 +1652393 +1706791 +1610493 +1530108 +2556939 +1824001 +1457690 +2074581 +2633074 +1318056 +847397 +1610504 +1530095 +847444 +1413339 +777018 +1348673 +2356193 +2116003 +131714 +2245183 +906895 +1708686 +2245266 +1457758 +1291288 +1610524 +765875 +1956567 +1342464 +2245259 +131696 +1457822 +2057130 +1750038 +1291354 +2372804 +1610512 +39325 +39349 +707327 +1291319 +1987361 +2245132 +847785 +1291314 +847566 +2245090 +2705048 +1457723 +2245275 +2245104 +1457789 +1310151 +2245273 +592394 +847794 +765893 +1291344 +1610586 +847491 +847685 +847518 +847654 +847773 +847494 +847652 +2057121 +1954145 +847475 +2245077 +2367275 +847446 +2057107 +1457844 +202801 +2116121 +847610 +2245226 +2633082 +847577 +2057239 +2245137 +847757 +592332 +2245169 +2633077 +2707147 +847738 +1037164 +1310157 +1291339 +592382 +2071766 +2245118 +2245191 +131702 +1843081 +2367284 +2411622 +2010679 +935526 +1291300 +2245261 +2245127 +1933694 +1702682 +1610526 +847528 +592334 +847468 +1291353 +1037176 +2697203 +2057221 +847472 +1852364 +1318062 +1610523 +2866068 +2057146 +2245326 +2245243 +2245317 +777051 +1457767 +1956579 +847778 +2427418 +2245160 +2349481 +2285444 +1291304 +1610624 +39353 +1413361 +2031170 +2280673 +906896 +1457760 +847498 +2697219 +1610541 +2057187 +1291320 +2245249 +39288 +2074586 +2071769 +1664703 +1898508 +1342483 +1268391 +2245287 +1291303 +1984529 +2245343 +1610558 +2245288 +1291327 +2453507 +2025568 +1037170 +847579 +592329 +1342439 +2057208 +847703 +1457786 +2245209 +847655 +1610546 +592317 +1686721 +131684 +847788 +2739188 +1291332 +2367270 +39300 +2520894 +1457724 +39292 +2557040 +847547 +3191 +1377358 +2356240 +2245131 +2057118 +1318063 +592412 +2057242 +847783 +1457914 +2372803 +512073 +2623519 +1408071 +1513774 +1947394 +707326 +131704 +2509775 +231365 +2028162 +39347 +2116131 +2057192 +1457912 +1968570 +1984527 +847659 +2074594 +1717647 +1364986 +1610607 +847617 +993786 +592356 +1457777 +1342481 +847482 +1702685 +1291343 +131728 +592374 +2729965 +847776 +2057143 +2116113 +1968564 +592311 +1610521 +2057206 +1457924 +1457817 +2101084 +1457916 +847469 +2116110 +263306 +2057176 +2707151 +2245197 +664300 +1513779 +2116119 +398447 +707317 +2116124 +1702681 +847626 +2557050 +2031162 +847792 +1457897 +1610584 +1197589 +1768447 +2031166 +39297 +847523 +1291317 +847476 +2028161 +2245300 +39350 +1947412 +2411617 +1342476 +1457741 +2245142 +2245233 +847660 +2688793 +1457847 +2116085 +2367265 +847701 +2367268 +131657 +1457944 +1513761 +307511 +2116109 +202800 +2074589 +2509761 +1513772 +1291309 +2288264 +1457938 +1530121 +1342472 +592367 +1971566 +1457735 +1940246 +2288311 +2116215 +2288352 +2683932 +1108774 +2313544 +2074697 +952029 +2313543 +1268415 +2074659 +3227 +2116377 +2313564 +1482564 +2557093 +1413391 +2720514 +2429653 +1940227 +2116284 +1657483 +2116263 +755579 +2422767 +1956595 +2067542 +2288346 +2429625 +1377364 +1413412 +777084 +2116310 +1940247 +1053020 +1659943 +2557144 +353569 +2288309 +2372845 +2453644 +952050 +2453617 +1089655 +2557179 +1062267 +2288349 +2557158 +912502 +2372840 +2026313 +1657482 +2520914 +2453639 +2520968 +2742011 +3216 +2116399 +2280695 +2074699 +76389 +2074685 +2453550 +2074644 +2372843 +1940222 +1179071 +2116252 +2074621 +1179066 +2074686 +1490624 +475092 +76387 +2520932 +2429682 +1413440 +2031205 +2026312 +2453526 +2557117 +2280696 +1490620 +1268404 +1940218 +2313557 +2116355 +1764241 +1940225 +2116194 +2116232 +1940229 +2116375 +76385 +2116250 +2520953 +2557111 +1659953 +777071 +952036 +2067544 +2697237 +2116323 +2288344 +912477 +1657468 +2116228 +2288303 +1377361 +2280687 +1413461 +2116161 +2116293 +2557107 +2744988 +777080 +1062256 +1940233 +1179073 +2453546 +2557066 +1852372 +2074631 +1482566 +1770902 +1413395 +3212 +2429644 +441799 +1413403 +777060 +899688 +755582 +2520928 +2116211 +2557166 +1940231 +2288342 +408760 +401322 +1659955 +2074634 +2633101 +2520949 +2557157 +475090 +1852371 +2116381 +952037 +2520954 +2429635 +2453656 +2116279 +2313553 +777094 +2116320 +2280693 +2744986 +2067546 +441800 +1413404 +2429669 +2031185 +1413409 +2520941 +2557118 +2372821 +2116380 +2557129 +2453549 +408756 +2288322 +2520972 +1659944 +2116145 +1209414 +2420797 +2116274 +2116366 +777077 +2116362 +2313545 +755589 +2074620 +1413425 +2683938 +2280680 +2520967 +441803 +2520965 +2074682 +952025 +2116148 +1659935 +2453633 +952056 +2279395 +2633099 +1824027 +408766 +1413455 +2453618 +1657478 +2683929 +1657462 +1657487 +847819 +131748 +1910135 +679936 +2074754 +847830 +1610640 +1413477 +1413479 +2356263 +512102 +2356262 +2074731 +847805 +131747 +2372848 +935540 +2116502 +2521036 +765899 +847822 +2116471 +39357 +755597 +2557222 +2067550 +2245360 +847825 +2057255 +2116437 +2372852 +2557197 +2116450 +765910 +1457951 +993817 +512091 +1971572 +441809 +592414 +777104 +2521032 +2116524 +2557182 +847838 +1413485 +1824037 +2422818 +2356257 +2429696 +2372865 +847826 +847832 +2074740 +512089 +441812 +2313589 +2288374 +1852381 +2074748 +592423 +2356259 +1610637 +2372851 +847823 +1811722 +2313602 +2520993 +2411634 +512088 +847807 +2014383 +39358 +1408085 +755592 +2245374 +1789430 +2521004 +1686750 +1457962 +2031232 +2074749 +755598 +2739191 +1530139 +1268424 +847837 +952065 +1530137 +2453660 +3234 +1141330 +2116451 +2074724 +2116522 +2356267 +2313591 +2116479 +952064 +2557224 +512101 +1686723 +952067 +2116508 +1610635 +1530133 +1768449 +2101111 +1910136 +2416105 +2074729 +2372846 +1610643 +2116486 +2707175 +2356298 +2313660 +2074788 +2557252 +2031246 +2557302 +2356290 +2116613 +2372929 +1413563 +2429706 +2557387 +2453714 +2313675 +1530164 +2633117 +2116647 +679945 +2031237 +2116565 +2313650 +2683954 +2031252 +2521115 +2557370 +1268439 +353588 +1757227 +2633110 +1482585 +1268437 +2031236 +2557404 +1158708 +719575 +1724269 +2116665 +2429713 +2557373 +912518 +2683979 +2067560 +2557485 +2074806 +1482594 +2026327 +2116591 +1708702 +1490635 +2453708 +2697274 +2691351 +2557271 +1686763 +2116724 +2356315 +2074762 +1686765 +2557481 +2633146 +1789449 +2372905 +2372892 +2356305 +2633126 +777170 +2116642 +2697260 +2116534 +1268428 +1910143 +1824045 +2356276 +3248 +2557470 +2372881 +2074837 +2074772 +1318071 +1413569 +1108782 +2356318 +284531 +1179090 +2557332 +2453705 +2557427 +2557264 +912533 +2707176 +2116667 +2429710 +1824044 +2074757 +2116718 +2557327 +3250 +3269 +2557356 +2116670 +2557306 +1910157 +2116659 +2116549 +2356291 +2273904 +2116710 +2633151 +1023368 +2356280 +2031244 +2074766 +1413544 +1158730 +1686756 +2067577 +2074799 +1910148 +1413562 +777147 +1824041 +1686755 +2422829 +1852411 +1413564 +2067593 +2074836 +1179098 +2557256 +1667635 +1852416 +2557420 +1987365 +899717 +2557299 +2633134 +2453699 +1686772 +912534 +2453673 +2557448 +2116595 +76408 +1158727 +2313628 +2116682 +2026320 +2429708 +2557439 +2288411 +2116608 +1940254 +2683956 +2116725 +2372950 +2697275 +2031241 +2116627 +1413510 +2116624 +899710 +1789437 +777163 +2313668 +2313640 +2453716 +1108788 +2116589 +1667633 +2557452 +2557366 +2521082 +2356283 +2372912 +2074791 +2074767 +1530153 +2313677 +2116666 +2521054 +2521064 +248030 +899727 +899741 +2633163 +2288458 +2429724 +2557503 +1342486 +2521168 +952075 +2288436 +1413592 +2633158 +2739197 +777203 +2074877 +1530185 +1318088 +1610663 +679951 +2557514 +1852430 +2557527 +2116819 +1482617 +1530227 +912552 +2453742 +76416 +847848 +2372994 +1089657 +2429719 +512135 +2521122 +1101166 +2245380 +3295 +2557530 +2116755 +2273909 +2074873 +777201 +248046 +1530199 +2288446 +2521155 +1956642 +2288450 +912551 +263315 +2116810 +2313692 +1179106 +2116738 +76441 +2288456 +2245378 +76438 +2116822 +2453735 +408775 +131754 +2288431 +2453738 +248033 +2697281 +408774 +1209427 +2759608 +777236 +1413607 +1053029 +76422 +2509781 +777238 +1268449 +1530179 +2742023 +2288422 +1318101 +2521154 +1482608 +2116806 +2422840 +1071382 +2416112 +755610 +2453748 +2557559 +1706800 +3298 +2521132 +3300 +2707181 +1987366 +76439 +284535 +1940256 +1089667 +2429733 +777242 +2372965 +248028 +777243 +2429721 +2521177 +1789460 +2557506 +2521179 +76446 +2280729 +777250 +2372988 +2288447 +1413581 +2521153 +2313705 +679952 +2521126 +3287 +2074912 +2116811 +76418 +2429730 +2557528 +1724278 +1413602 +1530195 +1530225 +2288430 +1318085 +1179104 +1457964 +1179114 +1300746 +2288432 +131755 +2288441 +248037 +777262 +2557560 +707334 +2116744 +2521182 +1268447 +1413597 +1956638 +2245498 +592599 +1610704 +2116855 +1342507 +2521225 +2683999 +2824227 +1291425 +1457976 +1530233 +1984571 +2245517 +2245383 +592679 +2057338 +2718987 +592447 +592642 +2521236 +2695001 +1956672 +1457971 +592528 +1291428 +2720541 +2057294 +1291366 +2245413 +1717655 +1750065 +2695045 +1717657 +1291430 +1898517 +2521207 +1291371 +2074917 +1348696 +1610678 +2707190 +2356343 +1268478 +1610683 +664326 +1950242 +1971583 +1365061 +2707249 +1717656 +2521200 +1610682 +1458014 +1457994 +592493 +2623534 +1458004 +592490 +1365056 +1513803 +2521215 +993823 +2720544 +1318111 +1291414 +2057342 +1365019 +2688836 +1971587 +592597 +649273 +2427428 +592727 +1947423 +592584 +2718994 +664366 +2411681 +1457968 +1310211 +2707251 +2720547 +2057264 +1458042 +2824240 +2694983 +1342500 +231377 +2031271 +131761 +1391492 +1179127 +1310176 +1984566 +592585 +592601 +1458025 +1291377 +2695027 +1750066 +592536 +2824217 +1984570 +2697332 +592619 +1458092 +592703 +1610670 +2695046 +2057278 +1947462 +1652399 +1610701 +1947420 +2695036 +2683995 +1954176 +707346 +2719002 +2057281 +1984565 +2373015 +1513796 +664384 +719582 +1375001 +2245393 +734953 +2719037 +1310220 +592590 +1365014 +1947425 +2694991 +2245481 +512175 +2245424 +664354 +307518 +1348688 +2688817 +2824232 +2691378 +2245467 +2770604 +2707253 +664330 +1365009 +1750058 +2688815 +1291442 +592491 +745654 +1458067 +1365052 +592728 +2521241 +1037185 +1413610 +2057301 +1458023 +1413609 +592665 +512177 +2728832 +2074924 +1101170 +2101115 +2683996 +592577 +2728828 +2694967 +2557583 +1956660 +592581 +1717658 +2007450 +847877 +1391486 +2411680 +2729979 +1947464 +2720528 +2557594 +2367306 +1457970 +1657238 +664337 +664390 +592706 +2245485 +2411665 +512169 +1250602 +664353 +592479 +2688874 +1968585 +1291453 +1513793 +1458039 +2057331 +1947448 +1954174 +1458095 +1458077 +1947467 +592594 +1933696 +1310209 +2057289 +2557574 +1310223 +1197598 +1954177 +1291368 +1291454 +1342502 +1310166 +2707230 +1681151 +2057329 +1310246 +2028165 +1291390 +2245443 +2688869 +592469 +664343 +2694977 +1971584 +2057366 +1984543 +2057330 +2707216 +2707205 +592481 +1984536 +2028166 +2057302 +2707225 +1610680 +2245402 +2688834 +1342524 +592648 +1610676 +2707245 +2697290 +2728830 +592495 +1852437 +1458020 +1610716 +1291370 +131759 +592525 +2411652 +1348693 +2411643 +1513791 +2057309 +1968584 +1843087 +2521219 +2720542 +1458075 +1998010 +2521224 +2057300 +664373 +2411654 +2245500 +2557584 +745653 +1197606 +1954163 +777269 +1984599 +2245561 +2557620 +1610784 +906906 +848006 +2729980 +2245520 +2557642 +1686792 +2288468 +131794 +2697393 +2557641 +307526 +2074931 +935565 +592813 +2521254 +899755 +2707287 +2521255 +1513855 +1852448 +39393 +1101191 +1458151 +848005 +2349500 +2697366 +592758 +1179134 +1530234 +592844 +2697339 +2057385 +935573 +2521265 +2245559 +2074934 +649279 +765919 +2557607 +2074952 +131811 +847976 +1458130 +2074930 +2521261 +2057389 +2116867 +2429734 +131841 +2373036 +2688928 +1898530 +131815 +2684021 +592777 +2744996 +2245586 +2067610 +1513832 +1037196 +2837578 +289049 +592821 +1197613 +2684017 +2707254 +2101133 +1490676 +2695051 +2074927 +2067606 +935555 +1458129 +39401 +1984583 +1940282 +2684022 +2074936 +3307 +1764248 +592819 +2697349 +131775 +2521257 +2697389 +2697404 +592745 +2837573 +2697368 +2245575 +1174387 +2739207 +1852454 +1458145 +1610760 +2245556 +2245568 +1984593 +39397 +2837560 +2837660 +1852444 +592760 +2695055 +1386622 +1824075 +1843099 +2356360 +2837640 +1413621 +1037197 +2373017 +1513854 +2697398 +2373042 +2074935 +1089676 +2288464 +847936 +1391729 +1702715 +1291482 +847969 +1702710 +3309 +1610731 +1984589 +307519 +847956 +1947482 +1393435 +2739209 +664417 +2067609 +1051370 +131837 +2697357 +2770630 +2734425 +512203 +2691379 +1037198 +2367313 +1342540 +131773 +131819 +2057393 +2837562 +1686795 +1291456 +3308 +1513838 +2697345 +131782 +1291467 +2837551 +847996 +441818 +512219 +2557612 +76460 +1513847 +362985 +2557619 +2101123 +2688897 +2245565 +2770663 +2367311 +2557603 +2688901 +1037199 +2837619 +1291483 +2705097 +1513821 +847958 +131792 +1197609 +1179130 +847965 +2770638 +1458152 +2837630 +2356348 +847955 +131777 +1348701 +1984592 +592766 +1458113 +2443570 +1667655 +1408107 +2245540 +2071790 +1268492 +1513853 +2697385 +592771 +1458125 +2245543 +2697371 +1089682 +2245651 +1037222 +592856 +1058266 +2866183 +848211 +1236556 +1513934 +1940287 +1101225 +2026336 +39413 +432912 +1513924 +131919 +1386624 +1413641 +2245741 +1530245 +2074994 +337897 +2516517 +2509794 +1686800 +1179137 +432907 +707396 +1610853 +848122 +1947504 +1940290 +2866177 +131957 +2509788 +2307941 +1702721 +848112 +848064 +1458236 +707370 +131889 +1291516 +1490684 +2057465 +2057470 +1053052 +2866117 +2245640 +2074975 +935574 +1852457 +2557652 +1408126 +848151 +1053050 +2245594 +512247 +2411719 +1513943 +2557648 +2057394 +214014 +848193 +2866153 +2719058 +664441 +1236565 +1646138 +131969 +2116939 +131927 +1291507 +2031287 +1408122 +2245745 +202818 +2707292 +2866092 +952081 +1821356 +131900 +2057461 +1197616 +2116893 +679978 +1610827 +592894 +202830 +2280745 +2245673 +131907 +2367317 +1134278 +1053049 +231399 +848200 +1458187 +1513888 +39427 +2057510 +777271 +1811747 +2075002 +2245691 +1342568 +848162 +337898 +1750083 +848191 +1530244 +432909 +1750089 +2057402 +848048 +1610846 +848074 +131910 +2866097 +1610872 +848110 +459195 +848138 +1408120 +1408132 +848030 +848180 +2245683 +848115 +848129 +1458200 +1458262 +2028184 +719591 +1490679 +592884 +1708711 +2057489 +935588 +2770683 +592846 +1940289 +1956686 +1513933 +664428 +2557667 +592871 +1659970 +2057458 +848097 +76465 +848222 +231418 +2101159 +1702723 +131942 +592923 +1101202 +2116932 +2866162 +935586 +2245678 +1037224 +592903 +848142 +2770680 +1984602 +1686801 +1310264 +2866131 +432914 +592897 +2453758 +1686802 +2866201 +1968622 +848095 +2866211 +2285456 +2866146 +993893 +1513885 +848099 +848066 +1811740 +848156 +2557646 +337899 +1947494 +2691382 +1487195 +1342582 +993874 +2074964 +1058279 +1513909 +2453752 +2866209 +1984604 +707390 +592975 +592953 +2697415 +2557664 +2057425 +2866173 +1513902 +2074973 +993900 +1702722 +993879 +1954185 +1610851 +2101176 +1101241 +1947502 +39416 +2411702 +1408165 +2373059 +512230 +1898542 +131950 +1968636 +2509795 +1458204 +1089688 +707386 +848082 +2057437 +2443574 +2116909 +1053055 +1058261 +2866076 +1610809 +2866110 +1513913 +1101226 +906915 +2866129 +131945 +512231 +2288483 +1458226 +1686796 +459206 +707389 +935598 +1413642 +848179 +2866207 +459189 +2116913 +1392685 +1101213 +2697420 +2057412 +3313 +1197623 +993877 +2101180 +2429739 +1141336 +2557662 +1821353 +1789474 +2057498 +1947489 +1513894 +952080 +993901 +1659971 +1513925 +1058274 +372612 +2245761 +1101220 +2356370 +592927 +1610883 +2866205 +1413640 +848198 +592941 +848111 +2866171 +848121 +1058267 +1179136 +848223 +131888 +1153391 +2411714 +2074981 +1898535 +592940 +848370 +848408 +231443 +1998024 +1513963 +2557678 +848397 +777283 +906931 +2280759 +1707651 +1291547 +1490686 +131985 +1174406 +2245899 +1611033 +848402 +1947514 +848359 +1667667 +1968660 +1610933 +2116990 +357627 +707402 +679980 +1408172 +848407 +593026 +2349503 +2509800 +357630 +993925 +329194 +1037235 +2509804 +1898556 +1530252 +329220 +993914 +1209445 +39462 +848246 +1947509 +1051375 +1197641 +993919 +263339 +1379142 +2453760 +2116967 +1707650 +2623552 +848284 +2057563 +935628 +1954187 +1166263 +593040 +459252 +329191 +1898561 +2057589 +1260853 +1141349 +1458334 +1947512 +993906 +1236593 +1197654 +848409 +2116965 +353602 +848394 +2057538 +1268505 +2734429 +1707648 +1291560 +2521273 +2719067 +848296 +2057546 +848425 +2367333 +2075026 +664455 +2367345 +2288497 +1708724 +1101243 +1291543 +1610896 +132026 +231425 +459225 +848404 +848426 +1141346 +1310272 +405086 +1513968 +2427438 +2759622 +1458285 +1197658 +1291530 +848242 +593069 +1342584 +2719068 +1458297 +993958 +593001 +2728850 +848272 +2057554 +2623554 +1664714 +593031 +593018 +993931 +2679590 +2719070 +993961 +1310270 +1082870 +459261 +1610920 +132036 +2356388 +1310280 +1968647 +2356390 +1342611 +1610963 +848334 +329197 +1082882 +1717674 +2285459 +993907 +1197639 +2101187 +848260 +1291553 +459230 +132058 +2427442 +848274 +1082883 +1968669 +1121695 +593028 +405093 +2057549 +2245847 +2688944 +1610961 +202847 +848419 +1898558 +1610927 +1348704 +1458300 +1968643 +2116982 +459232 +664453 +777284 +1611015 +1610913 +1717685 +132037 +2443580 +935609 +1724294 +2075023 +329207 +848323 +848355 +231434 +2245802 +1310277 +512252 +765949 +2245868 +593013 +486393 +1310271 +2751076 +132046 +1610995 +1610936 +2443578 +2101188 +1365078 +1051384 +263335 +1236586 +2245790 +1291557 +405088 +593025 +2719072 +329215 +1610972 +132019 +1611035 +664446 +1646139 +1968668 +2427444 +1811751 +2516542 +2679593 +1611040 +1789486 +2420808 +132066 +2429743 +1933714 +1762934 +1898570 +2557715 +1413667 +2288510 +1667697 +1821358 +2057605 +432922 +1170794 +1824095 +2075028 +1811766 +2759632 +1770932 +777286 +512269 +1611038 +426158 +2116991 +1611079 +2557698 +2057598 +593083 +1174425 +1530325 +1824093 +1062280 +2117026 +76478 +2057600 +39475 +2837695 +1490698 +1708730 +755615 +739660 +1260859 +1708728 +1530314 +1611049 +1724299 +1413647 +337917 +1530280 +1236662 +3319 +1250607 +2453801 +459302 +1724308 +2770728 +1898574 +1611081 +248054 +1153419 +2837665 +1530303 +3316 +1108807 +1933718 +1108804 +952098 +1037238 +2453768 +132072 +1053060 +2521314 +2744998 +512255 +719600 +418791 +1209448 +1956715 +486404 +2557716 +1811768 +2453814 +1611086 +2422864 +1750105 +1789481 +1811773 +2518373 +1170801 +132083 +2521300 +1530311 +2837684 +363000 +329225 +1236658 +1667675 +1174413 +1530285 +777300 +2453769 +132082 +2557713 +1910179 +1134288 +1108810 +1789506 +2720555 +1158761 +214018 +1898573 +1852478 +1824103 +372616 +2453791 +2031309 +1236614 +1135918 +1342619 +1209477 +263349 +1236640 +2117055 +2373081 +912578 +2373121 +1153408 +2373105 +1391746 +1971622 +1071397 +1910181 +2521307 +2516541 +1174411 +459299 +1386630 +1667676 +1236657 +1789501 +2633174 +2695069 +1174424 +2770712 +1197676 +2288511 +2770753 +1413652 +132091 +512260 +1268511 +1708729 +2453809 +1910184 +2453789 +1174408 +1667686 +912574 +1170795 +1197669 +745659 +1611060 +1490694 +2759625 +2557706 +2117021 +593088 +2117002 +1179183 +475102 +1391510 +1158758 +2751079 +1170793 +363005 +1108812 +1667680 +459317 +2117017 +512257 +1236630 +1153410 +263353 +2633183 +1413664 +1158744 +2373117 +1197665 +1708725 +1843109 +1236638 +2117054 +1053062 +202849 +39474 +1268509 +459290 +2453798 +2373111 +2245946 +459280 +1971620 +1770928 +2117027 +2516561 +1179148 +1158768 +993983 +1197674 +1770929 +426164 +2633231 +329235 +2117110 +1998037 +2751102 +2557798 +1724318 +777308 +1310287 +2117114 +2014408 +2280763 +432938 +2453861 +1852541 +1708742 +899776 +353614 +912596 +2705109 +1391749 +1530351 +1611116 +357650 +680005 +383594 +1250612 +2557754 +2697443 +1310288 +1158773 +1724324 +1898584 +1197689 +1667720 +1611105 +1646141 +2117113 +2280762 +2707321 +2557786 +2117086 +1026015 +214042 +1852545 +1611110 +132093 +1611115 +459328 +441862 +2245974 +284545 +202853 +2557743 +2117103 +2117075 +1209529 +1824123 +1236675 +1260870 +408792 +2557769 +593097 +1179201 +1236684 +132116 +2031329 +1611111 +1053065 +899769 +1789514 +899773 +426163 +1852563 +2117089 +132105 +2117116 +952106 +848462 +2273918 +1236674 +2521327 +1611098 +1852543 +2557774 +1852539 +357647 +202850 +1789519 +1530355 +1236677 +2280765 +1811777 +2014406 +231464 +2557785 +2245973 +2521331 +1209505 +1824116 +2356411 +2557789 +1852555 +383590 +1956723 +337923 +1174428 +2697445 +1761278 +1987384 +1998038 +1956722 +952116 +2453844 +132115 +1530347 +353620 +848463 +2730003 +39479 +2557771 +1659991 +1659988 +132096 +2373138 +39481 +363022 +307547 +2557768 +1158776 +777322 +408789 +1686818 +2557779 +1158783 +777307 +2691395 +2411735 +2453854 +2453839 +2453845 +1910194 +248064 +2367352 +1513983 +2117068 +1681167 +1268519 +2516576 +2770823 +2770786 +1667731 +353634 +1852577 +1667725 +1209543 +486430 +1077026 +353630 +383601 +2770863 +2516580 +1077027 +2453903 +1898590 +3332 +2356416 +1458379 +1179210 +2057620 +512305 +2770818 +745131 +2633305 +1236690 +1026017 +1071404 +1268526 +1250622 +2557812 +2453866 +2557802 +1852587 +1108827 +2770783 +1236689 +2770833 +353632 +680022 +1141357 +2633314 +2633292 +593109 +2770781 +848524 +1318171 +3340 +1530384 +2117170 +2453901 +2770866 +1708748 +593101 +1530372 +1789526 +1910240 +2633250 +1348715 +1413686 +512307 +214049 +2313739 +2373140 +1077028 +1910209 +2850468 +1530374 +2422869 +649288 +1750116 +1708747 +994012 +1108835 +1413689 +132124 +707422 +1342627 +1458380 +3336 +1910239 +1413698 +1158784 +1530379 +39486 +1910203 +994014 +2313741 +39488 +2117154 +1053069 +1268527 +1053071 +2373147 +1077029 +2770779 +2770832 +2770870 +2633304 +1108838 +2770868 +2633270 +1611135 +512304 +2313729 +2739214 +2633274 +2679599 +2633245 +1910242 +2770775 +475109 +475113 +383611 +1260880 +307551 +2633286 +1789551 +1789534 +2516579 +1811782 +2633242 +132121 +1174433 +2245983 +357652 +2288536 +848521 +994007 +2770790 +2633294 +3335 +1811787 +2633264 +1667732 +2633246 +1852631 +2014415 +1910248 +1209554 +1135939 +2516585 +76511 +1062285 +2453976 +441880 +332428 +1770948 +2057621 +899792 +2117213 +952131 +2770889 +1145165 +332423 +2453938 +2770886 +755621 +1770951 +777337 +512321 +2866274 +2770878 +2453952 +441882 +76518 +1824131 +1268533 +1764263 +1530416 +1956729 +1852629 +1686834 +1910245 +2866259 +2453940 +2866268 +912628 +2837722 +1724342 +76534 +2313757 +2516582 +1852621 +76515 +2313751 +441883 +2837726 +2453972 +2697449 +2453935 +2453936 +512322 +2453919 +2117192 +2373153 +2117176 +1852630 +2117214 +2453921 +2850475 +746086 +1179230 +1667740 +214059 +1852628 +1910247 +1318176 +512309 +1158799 +214067 +1667745 +1530426 +76519 +2010702 +1268537 +332422 +2557897 +1250631 +1852711 +1530452 +2866286 +1987390 +2453991 +332440 +76544 +777371 +2453990 +1026027 +1413726 +2866299 +1667754 +2633334 +1852653 +2454011 +2866334 +777360 +746090 +76538 +777355 +1910279 +2117243 +1158816 +777340 +2453981 +1209599 +2453986 +1490742 +2866336 +248082 +755628 +777357 +1686839 +248077 +1530458 +1179238 +2866307 +1686845 +426183 +1158819 +2429762 +2734440 +2770933 +2280766 +2557901 +1852667 +2751120 +2014420 +1268545 +777351 +2288557 +1910278 +1789574 +1530464 +1852675 +2313774 +2356417 +1530470 +1686850 +1209598 +2454008 +214077 +2837755 +2866303 +1971639 +912649 +2356419 +1852700 +2453997 +777356 +1250626 +2866289 +2014417 +1268548 +1910284 +284553 +2117237 +2026339 +1268541 +2313773 +2770908 +2453989 +2117257 +1250641 +441884 +1824140 +2557895 +2866315 +1910265 +512357 +1852685 +2770925 +1852683 +680038 +76554 +248093 +1209601 +1611198 +1310290 +994050 +2521356 +1940295 +2057626 +132168 +2751122 +1530508 +1179262 +202859 +132145 +2031345 +39495 +512389 +1530510 +994041 +231485 +1458453 +593138 +2427449 +1071411 +707433 +39548 +1348724 +2633356 +2246079 +1530491 +848539 +2688956 +1141360 +512424 +1458473 +1413789 +1458481 +132130 +1393453 +1764268 +2246106 +1824141 +1971645 +2246021 +1101262 +512398 +593165 +2367356 +39555 +2031361 +2057628 +593129 +2246060 +1611176 +1458406 +1071412 +1413750 +952167 +593122 +1611247 +1413766 +2691397 +1530498 +593146 +39516 +1458516 +39509 +1611166 +2557904 +848571 +777390 +2031367 +2454050 +2454046 +2246012 +1393449 +2246112 +512399 +848562 +2031360 +1121712 +2246102 +777387 +1458501 +2246089 +2246058 +2117341 +1611230 +2349521 +1250642 +3368 +76570 +1940296 +2117330 +1971646 +2057682 +1458506 +777416 +2633357 +1954198 +2057689 +2057662 +848584 +1458497 +848585 +512377 +2454028 +2367357 +2117331 +1611197 +2117286 +1611163 +2117291 +1611231 +132169 +1458502 +2246064 +2246062 +1611157 +2349514 +2313785 +1971643 +1300777 +132135 +2246034 +2117319 +1413763 +3355 +39515 +848538 +2057623 +39523 +39491 +2454033 +2057643 +1611220 +1611238 +401356 +2117325 +1611172 +777393 +777409 +2246061 +2684039 +2101212 +848568 +848613 +1413788 +848537 +1166286 +2307948 +2031352 +1408183 +39533 +2246013 +2720568 +132144 +848570 +2117302 +593147 +2117332 +935655 +2117280 +593128 +2117362 +2246110 +593183 +2117266 +848530 +848622 +2246017 +2307952 +730024 +1458413 +730026 +2285469 +1458415 +2057672 +1458517 +132167 +441892 +1611194 +593158 +2057664 +2117287 +2057633 +2075069 +76581 +2313786 +2117399 +2454037 +2057656 +2028203 +39507 +512417 +2057632 +231494 +1482638 +512457 +2031382 +132267 +132291 +231491 +707474 +1058304 +755643 +935673 +1956738 +3407 +512459 +2720572 +1611306 +1179264 +848648 +2075078 +935684 +263393 +1852723 +512445 +2246295 +132311 +848655 +263400 +1458530 +2117548 +39642 +2246313 +2010708 +848713 +1611418 +2246130 +1764271 +1342635 +1458585 +2454103 +2356425 +263391 +1236698 +2623569 +2557973 +1458525 +2288577 +664479 +2246182 +1811825 +2246330 +39628 +2751128 +2075083 +132229 +263404 +2521364 +1611318 +263416 +2117431 +2429786 +2246221 +707465 +2117478 +2117517 +1611317 +848726 +1458566 +765982 +2246306 +1514040 +132339 +1514063 +1611304 +848754 +2246337 +2246250 +1141371 +1050025 +2246335 +2557984 +1101272 +2246357 +707463 +132197 +2117461 +2057699 +2246329 +2454088 +39665 +2101222 +664495 +3402 +1121722 +2349544 +39579 +2307996 +2246247 +132427 +848796 +2633361 +755641 +76601 +2246328 +707453 +2741298 +132393 +39560 +1664724 +1611406 +2373201 +39624 +2313797 +593280 +1458532 +2623568 +1071438 +2246284 +2101239 +906946 +132270 +1141365 +2246191 +39681 +1611287 +132372 +2427478 +848801 +1514066 +39566 +132424 +1268567 +39615 +2246355 +2288588 +2349539 +2454096 +2547795 +1998052 +76636 +2623567 +777447 +1708760 +2454154 +2429785 +1530537 +848664 +593281 +76597 +512449 +2101245 +76606 +1071429 +263423 +2101225 +1702740 +2101244 +512465 +2313812 +76604 +1811811 +1898596 +1611321 +2557986 +2117498 +906943 +593196 +2454119 +1789598 +593212 +2246256 +664489 +132285 +1458578 +2427470 +1611319 +593276 +132429 +2308007 +848709 +1318216 +2246367 +765996 +777425 +2246173 +132205 +132423 +1514024 +132218 +2454149 +1956737 +730028 +1530535 +2117439 +2246202 +1824142 +1611334 +2422887 +1611332 +132410 +1530540 +2117519 +848712 +1611417 +2057703 +1458550 +1514061 +593187 +2026350 +1611424 +1318218 +1611416 +1071448 +2117411 +2057717 +263397 +39671 +263388 +848652 +2454135 +2117452 +935670 +132363 +1385323 +2373207 +2246347 +76610 +39631 +2246217 +2246348 +512432 +1611403 +1611323 +664481 +1611394 +1811798 +848790 +1611313 +707478 +2246187 +2246265 +2246233 +2246362 +2427453 +2117454 +202875 +39610 +2557944 +2288586 +2117416 +1852722 +2454102 +263406 +1811826 +1071469 +39663 +39653 +345790 +2307992 +132351 +994074 +2246270 +132194 +2521387 +1071468 +1071447 +1611410 +2246170 +2557922 +248107 +1611455 +2349560 +848685 +1998046 +2246234 +2429783 +2117418 +1101269 +2411745 +664491 +2117547 +1071420 +2117466 +2246309 +2246243 +1514014 +76598 +2246203 +1490772 +848680 +906944 +1811833 +1342633 +231509 +1135953 +1530562 +1071435 +1811823 +2454066 +848815 +1611339 +1342631 +2101223 +2313844 +2246334 +1611295 +2557956 +730031 +132451 +1968684 +132303 +39614 +2117447 +1611429 +512441 +2557940 +329249 +1071471 +730030 +76614 +593208 +2429772 +2427450 +1458527 +1530539 +2117505 +2246338 +2075085 +2557946 +1611475 +2745008 +2057693 +39655 +2288580 +2307988 +2429769 +1611270 +2246156 +263415 +2246292 +1458582 +1530557 +2349540 +848762 +593250 +2349555 +1611441 +2728855 +1530560 +2427476 +132275 +1348728 +2003816 +1053086 +2734451 +2373236 +2558054 +935689 +2117645 +1291605 +3420 +1530579 +76659 +2117596 +1348730 +2866370 +486443 +2117577 +2866358 +388526 +2739224 +2246389 +1940300 +76658 +1843123 +848822 +1971664 +2866371 +1681193 +2707346 +1026037 +707492 +912670 +777471 +2557998 +736172 +593299 +2521410 +1852741 +2454167 +1998054 +512497 +3419 +2075094 +2373216 +848831 +1530569 +2521403 +777463 +751481 +952181 +2558017 +2558048 +755648 +1490785 +593311 +231523 +1530576 +2734455 +2707334 +512504 +2367363 +1380213 +39689 +2633371 +1821364 +2866351 +2751156 +777464 +475119 +1026038 +1318247 +2031403 +2866344 +2751146 +2521414 +2246373 +1037257 +1971660 +2454187 +1490789 +2557989 +2101247 +1050029 +1490783 +2558032 +2730016 +2697460 +2837760 +1824158 +1667772 +1998059 +2003812 +2633384 +719619 +2730011 +2741303 +1380217 +1910304 +2454177 +2031405 +664498 +2117631 +2720581 +1393466 +2745015 +2697463 +372628 +2751142 +1998055 +912666 +1458595 +1458592 +1717719 +2313867 +1365103 +2373230 +2057739 +76654 +1764279 +2313863 +2454180 +512551 +512530 +1089727 +475121 +593306 +1393468 +2349566 +248126 +1318229 +263449 +593302 +952178 +1954200 +1380216 +2707341 +1380212 +2117562 +2866349 +1365100 +1413861 +2558015 +2558034 +2558041 +2117601 +2751141 +2866376 +2866352 +2117597 +1380215 +76662 +1318239 +2866386 +363050 +132462 +848821 +680090 +1397691 +1209617 +1750132 +1940299 +1490784 +2866368 +2117558 +1852740 +1724386 +2003817 +2313895 +1824169 +263471 +2101253 +848845 +2117684 +2454237 +1071495 +1490800 +2558068 +755657 +680099 +2454189 +2373244 +1971672 +2454250 +2633397 +2454240 +2075125 +2313884 +2454257 +1611488 +1824163 +39701 +2429805 +2454213 +2067653 +2075119 +2014428 +1197722 +2349576 +2067649 +2521419 +2117711 +2280775 +1393469 +848850 +2117695 +1968689 +39718 +1482648 +1530597 +1971673 +2521431 +1664728 +994086 +2117688 +2117659 +2454231 +2117668 +912674 +2521425 +2454198 +1789607 +2101256 +2117654 +994093 +952199 +1660038 +1956759 +2454238 +2454190 +1413893 +2454217 +2117687 +2117657 +1413896 +1956763 +1490790 +935694 +2521430 +2558081 +2454244 +1686864 +2558087 +952203 +2246415 +1062334 +39693 +777482 +2313897 +1365110 +2246398 +2117724 +2454216 +2373239 +1514086 +39706 +2313901 +1708771 +2117739 +1514080 +1611491 +202893 +1764282 +39709 +2558098 +2349573 +2313904 +952194 +2117682 +2349569 +475131 +1998073 +952208 +935699 +2429803 +1482641 +1236709 +1852770 +1413900 +2313873 +994088 +1458616 +1413878 +2454205 +2429808 +1071502 +2866400 +231530 +2117787 +1158840 +2422899 +1403772 +906957 +1024530 +1403774 +2558176 +2558114 +1413925 +593332 +2117783 +2558135 +2558175 +1717726 +952229 +2454292 +2246465 +1413928 +952230 +1708778 +848868 +1236717 +1611524 +994117 +1717724 +2356439 +2057748 +202896 +1482654 +1413916 +2866406 +1611514 +848878 +1768475 +766010 +593327 +2759654 +2308035 +952231 +2246455 +848913 +512587 +755660 +2356440 +1611511 +1179280 +1413938 +2454280 +132486 +848905 +1413927 +777516 +1403776 +1037259 +2558146 +2728856 +1530615 +39729 +2067656 +2288647 +1413915 +2246447 +1050030 +2697480 +1852778 +2454278 +2117762 +2558169 +1236715 +132497 +1611546 +1197728 +994111 +1843127 +1764299 +2697474 +1179282 +1413918 +2521456 +1458641 +1458645 +906955 +2057751 +952218 +2010716 +1514088 +2117779 +2558159 +512590 +1514091 +2558192 +1667791 +2373248 +76680 +2057756 +649301 +2558131 +1717729 +1724394 +848922 +337941 +1530622 +2521457 +1530624 +1458648 +2745030 +2288646 +263480 +2521458 +2349579 +1408204 +755666 +2373252 +848884 +1764297 +2429815 +2558129 +994126 +1910322 +2730025 +849017 +766033 +1458734 +2411777 +132540 +132524 +1724402 +2313934 +2633423 +2117834 +1458685 +707515 +777521 +2720594 +664505 +848993 +1291649 +132538 +357661 +500944 +1852795 +1852816 +994163 +2246557 +132544 +2057777 +1824191 +1268615 +777523 +664509 +500938 +1291664 +132581 +2057800 +994137 +357665 +132552 +1375009 +1179287 +2117832 +2411768 +2117870 +680115 +2246520 +2707350 +231546 +1652420 +2246506 +2117813 +1611592 +1724407 +848995 +1724404 +1611594 +289067 +500943 +2117850 +2246587 +2349591 +289075 +372639 +39751 +2246533 +1954204 +593377 +307571 +1458738 +2741318 +357663 +2558231 +2246468 +1611579 +39755 +2719081 +1987407 +1681203 +2246564 +500963 +1657254 +2313943 +2246553 +2558255 +1197736 +1611555 +421400 +1310301 +2246482 +289072 +848970 +2356443 +1458688 +500945 +848981 +994140 +1514127 +39745 +2246546 +1089735 +1657255 +2623582 +848949 +1458697 +2246473 +2117817 +1611628 +2246543 +2075136 +848962 +1458742 +1375010 +2454310 +2288654 +357675 +2246567 +1611570 +39744 +848937 +994132 +2057784 +39735 +1291632 +848967 +1971678 +2633444 +2751178 +1291653 +1852803 +848935 +2373269 +2558250 +2373285 +994128 +500953 +132541 +593353 +132511 +664510 +994144 +2741317 +132533 +1686875 +1611610 +848963 +2454300 +1611566 +132519 +2117853 +231537 +421395 +2057785 +2117816 +441911 +2313937 +231535 +357658 +2057766 +1268616 +2313933 +284562 +2246502 +1458724 +1458687 +1250663 +132598 +2313997 +849044 +2373312 +2117941 +332460 +2454321 +2521480 +76698 +2246595 +3468 +1268619 +3471 +2313959 +755673 +76697 +2416123 +2057806 +248162 +2313984 +1158845 +2117901 +2117924 +1268624 +512610 +1852834 +1268630 +2117994 +2314000 +2117897 +777558 +248163 +664515 +2521487 +2349598 +3470 +1910337 +76694 +2558312 +935718 +1987411 +1062347 +1530662 +2075167 +935719 +2558277 +76711 +2751184 +2117882 +2118012 +512626 +2117900 +2075140 +1530657 +1611637 +3465 +2246598 +2117881 +1413965 +2516593 +2521474 +2422903 +2117895 +1530668 +593386 +2117887 +2117926 +512618 +2117939 +2075138 +2314021 +1910353 +2429822 +2558278 +2117933 +132600 +2521496 +1268643 +2314002 +76726 +777554 +1764303 +1268620 +2356455 +1158848 +2313985 +1291671 +777535 +1490839 +734980 +2031434 +2288663 +76728 +76730 +512603 +2730026 +2031425 +132590 +2558257 +1852833 +2075155 +777547 +2558334 +2075150 +2521471 +2288661 +76718 +2719082 +2558313 +2373305 +2558267 +76729 +2558315 +1490842 +2454325 +649303 +2031430 +76701 +1530673 +2558326 +2516596 +1209638 +2313998 +2633459 +2313988 +1268639 +248150 +1385334 +952248 +1824193 +2356464 +2521490 +2313983 +1971680 +2454334 +2422916 +1940313 +2031475 +1490865 +2454355 +2031437 +2454364 +912692 +190826 +2521524 +2558378 +2429847 +2118070 +2118090 +2516597 +912691 +2454351 +1393487 +1145184 +2422918 +2558344 +3492 +1413998 +2118059 +740689 +2118044 +512653 +2454374 +2454377 +1348769 +680133 +2454340 +1724429 +512654 +2118051 +2075172 +1403787 +912715 +1135973 +2558358 +2118055 +1686900 +2454363 +1770979 +1348774 +1490870 +2031436 +2031438 +2118030 +284566 +2558368 +1686892 +2118099 +2031456 +1530691 +512642 +2454381 +1686891 +1667817 +2067667 +2454375 +2558364 +2454344 +2118046 +2118064 +2422912 +680136 +190822 +326528 +3473 +849047 +1652424 +849048 +132604 +994184 +132625 +1611685 +1403791 +1487216 +512667 +441918 +263495 +2633471 +2246664 +2075183 +1724446 +1530734 +2246626 +1686917 +1910362 +1655176 +1482669 +849100 +1824210 +1414019 +432945 +1158852 +2558399 +2246650 +1611650 +132613 +2558458 +734983 +2118217 +1852859 +132621 +512668 +2558431 +2558436 +1667827 +2118137 +426196 +248168 +2558433 +1268658 +1667826 +2246654 +849091 +1910367 +329256 +2416128 +1158854 +2118204 +1414005 +39790 +512669 +2246649 +2558449 +39779 +1318315 +2246669 +2118200 +2314093 +2633474 +2118113 +1994283 +1291679 +1708792 +935723 +849104 +2633480 +2246635 +2314085 +849102 +2349602 +2356472 +2558479 +1490881 +1852857 +1760191 +2558422 +1047603 +1414003 +2633484 +1708794 +353647 +1414010 +2246636 +132626 +593388 +2558457 +2118140 +849083 +2558428 +2118212 +353646 +263499 +401366 +1611663 +426191 +1179311 +1174442 +1987414 +1611670 +2558464 +214124 +849073 +2349600 +766049 +2558471 +1956806 +1821365 +1209660 +2558395 +994190 +1047604 +1611660 +1482670 +1686914 +1611683 +2454423 +2075186 +2558412 +994186 +1236725 +2558421 +1482667 +1611680 +1487218 +2558415 +2558426 +363061 +2367377 +1342654 +2026365 +1724444 +2273938 +2314096 +284568 +2411782 +1657257 +2521544 +2521561 +132701 +766064 +1898658 +2118268 +849135 +777595 +2246670 +1236771 +1530763 +680164 +1291701 +1724460 +2246686 +1611712 +1145188 +337964 +1101313 +2454464 +2118259 +1821368 +2246675 +1077062 +1209667 +486450 +593467 +849134 +3514 +372651 +1852891 +1236788 +1082920 +1236764 +2246692 +2118240 +1082910 +1348782 +1348780 +1482680 +1101316 +307579 +2454444 +2308052 +2246720 +372669 +1236783 +593462 +132652 +1236765 +593480 +132653 +994233 +952307 +2118257 +1318327 +1898640 +132666 +329261 +1135989 +912734 +363062 +372667 +1047605 +664526 +935740 +2246715 +1414040 +593414 +1530781 +2558490 +1236767 +952312 +1236773 +214141 +1933764 +1530788 +593425 +1750178 +1898643 +1611753 +1852898 +2558506 +994206 +1414041 +214133 +1681206 +1702791 +1197748 +2633554 +1250688 +1514150 +1750174 +912729 +1702783 +1490885 +1724458 +1789630 +2057854 +1166300 +1530789 +1365124 +2118255 +1681209 +1291684 +1750171 +1530777 +2373383 +1174448 +2118312 +1082897 +2308042 +214129 +1414032 +935738 +952313 +2118304 +593460 +849129 +1852869 +1852906 +1268662 +284569 +680152 +2118236 +39820 +593443 +994227 +1611716 +2454461 +994225 +202924 +1490892 +76754 +1037270 +593457 +2547820 +231553 +132707 +214143 +680148 +2101299 +1702784 +337957 +1375015 +372675 +1377404 +2118246 +680155 +337962 +2633540 +2057855 +1458839 +1037268 +593451 +952303 +1898625 +1310306 +593483 +1365117 +1724462 +231573 +2454447 +1664730 +1101303 +372674 +1702799 +1260895 +2633542 +1702790 +1898650 +2633556 +593418 +2246726 +2411791 +1811867 +1197763 +2288699 +730054 +1268665 +1037269 +849112 +512716 +1611802 +1236787 +1530760 +1458837 +849121 +39818 +1058318 +2118261 +994201 +1037275 +593420 +1611714 +2454462 +2246688 +132683 +1852883 +2454460 +132646 +1660062 +1611698 +132716 +1197757 +849116 +1392698 +1852864 +1318344 +593421 +1968703 +994214 +1236728 +2411792 +2246713 +2411794 +1611721 +2308040 +332470 +372670 +1852882 +1236745 +2373379 +730052 +1717748 +1702792 +512698 +1141412 +1724461 +664531 +132649 +593474 +214131 +1397702 +2521557 +2246718 +1101312 +2057856 +1236750 +1101311 +2118230 +1681217 +849139 +231566 +1342657 +1135990 +1611701 +2314103 +132696 +952304 +2118404 +707551 +248177 +994285 +1318347 +2246795 +849211 +1458876 +2010723 +935769 +2246800 +2558572 +2057865 +2288728 +1458869 +1530817 +1380220 +1051391 +593512 +2770954 +680178 +849197 +593505 +1708802 +935764 +1458884 +935773 +2288714 +1045559 +1667844 +849228 +2314120 +2118362 +1179324 +2118327 +849273 +1514171 +2288738 +2057880 +1179323 +2118384 +1062370 +593504 +994249 +1490922 +1490907 +906972 +1268672 +649309 +1824221 +2429885 +2288726 +2031526 +737087 +2118391 +2075227 +39901 +1377406 +2314136 +2429891 +994259 +39843 +1490905 +935777 +1490940 +1051390 +2420854 +2516600 +1611857 +912737 +39861 +39860 +1458854 +132774 +1458842 +3521 +2454510 +1987416 +1490909 +2454511 +2118409 +1750186 +2118383 +2739233 +2373405 +2057870 +2118347 +1708801 +994279 +39835 +39864 +1414059 +1490946 +1514224 +849177 +1514192 +2558529 +2288730 +912742 +1342663 +39881 +2516606 +2288717 +2454495 +1514204 +2314112 +1611851 +2118414 +1514164 +1458881 +1318359 +849256 +2420855 +1702813 +912735 +935772 +2429876 +1514178 +2118372 +680175 +202928 +1783003 +994271 +1458901 +132742 +593509 +1458904 +39878 +2521567 +39851 +680182 +680172 +593517 +1702805 +2420864 +1530811 +2429872 +1414072 +1530846 +1811875 +2118402 +1390851 +2118395 +2246790 +2031528 +2429896 +1652431 +2373406 +132725 +2246792 +1121774 +1062364 +1051397 +849224 +1530816 +1611823 +2031509 +1458894 +1062366 +952321 +1414043 +2558537 +1611859 +1414067 +2118407 +1611853 +1318361 +2373399 +202930 +1414065 +1458891 +2420828 +1530840 +1724469 +593520 +2367381 +2057863 +2057895 +1318362 +849258 +1408214 +2031519 +906973 +1458906 +1660070 +2420840 +1458851 +1071531 +1702808 +593498 +2118350 +1458859 +1458877 +2118357 +1318352 +1852916 +2031516 +1482683 +2558548 +2454519 +1611970 +2118422 +849321 +1611900 +2118445 +680189 +593555 +1724478 +132795 +1365132 +1750193 +1611919 +475153 +680190 +39913 +132777 +2558599 +512751 +1458957 +2411806 +1530873 +1852929 +1611906 +475150 +2454534 +1458975 +1514229 +486455 +2454543 +2101315 +1037283 +2288755 +486452 +1708812 +2273949 +1268675 +2454548 +1611920 +1994286 +649310 +1611936 +849332 +1458938 +2031534 +2246822 +2101320 +849354 +1530874 +1611908 +707564 +2373431 +2454538 +1994285 +2558606 +2057903 +1611932 +2031538 +2246846 +593542 +1291716 +1037291 +1611904 +2373417 +1108883 +2057936 +593539 +1611902 +593540 +1291723 +1611962 +849351 +593524 +202938 +1375016 +1611929 +1291719 +2633619 +1458995 +2558608 +849314 +1310313 +994288 +1458993 +39914 +2118447 +1611953 +2633607 +1708806 +2057911 +1514228 +1717757 +2516608 +1318370 +2246845 +2246865 +2101317 +2633585 +1968708 +2558613 +2373414 +1071543 +263515 +39910 +1108888 +2454533 +1062371 +1365137 +849349 +1667846 +1611976 +1458964 +2057929 +707559 +1968710 +2118573 +132818 +2118586 +777680 +952355 +766085 +2454664 +1348792 +680223 +1667852 +680202 +512811 +1145198 +1058325 +1702823 +349714 +132821 +1852968 +952351 +2697499 +740697 +1393495 +1852960 +1458999 +1071554 +2866428 +329264 +332477 +680219 +2314152 +2118529 +421405 +952388 +849413 +3552 +1667857 +1530902 +1166306 +512772 +2373445 +2118486 +1071561 +1530921 +76790 +1611992 +512776 +2734487 +2454553 +952370 +2273950 +680207 +1268686 +76810 +1811880 +132802 +1686952 +849422 +76800 +76825 +2118556 +952371 +1414116 +1514235 +2558620 +912754 +1268688 +1852966 +1530892 +2118515 +1108889 +1071558 +329263 +512791 +1071548 +2118588 +248181 +1824225 +2075258 +777672 +2118600 +935804 +952389 +664555 +231598 +421410 +1686972 +2288774 +680200 +1530947 +1377413 +849385 +2521604 +2429908 +2850507 +777666 +2454603 +2411811 +2633632 +849411 +1852942 +2246876 +2770966 +1393503 +1141426 +2429909 +1724487 +3548 +994320 +1490964 +2454595 +2314144 +2454626 +994308 +512768 +777651 +1987419 +2770976 +1852962 +401372 +952381 +1667853 +2454598 +1318396 +777658 +2633626 +2246877 +952340 +512789 +2067680 +680229 +1824226 +1236825 +132809 +3557 +1071560 +2031540 +76819 +1530934 +76786 +755693 +737093 +736181 +680197 +1053117 +2118595 +1490975 +1145196 +680196 +994311 +2118456 +1530895 +994309 +1318387 +2308069 +849414 +1764326 +2850491 +2454563 +593591 +1686956 +2280801 +512771 +1764317 +680230 +1998088 +1686962 +1318382 +421404 +512763 +2118497 +1686966 +1490971 +1158869 +76798 +1393502 +2850509 +2850516 +1397713 +1348794 +2454634 +2118491 +1681233 +2454554 +994313 +1852945 +2720601 +1135998 +1414112 +1611993 +1530931 +512781 +593708 +1318446 +132842 +3574 +2356487 +2280804 +486478 +593624 +263541 +1811891 +746101 +133143 +2118603 +421432 +231726 +486560 +76859 +2246896 +426200 +337995 +1530982 +248237 +1612064 +329267 +231622 +849477 +1811884 +133274 +132854 +345951 +2308088 +40058 +132943 +214188 +1664733 +707600 +40051 +133028 +133124 +1071572 +1062398 +214266 +593640 +719644 +2759667 +263666 +2288789 +730085 +1408227 +1612054 +214273 +132956 +2558653 +133154 +357697 +133282 +2101327 +39972 +398490 +345929 +231707 +76855 +133146 +1612002 +746099 +755696 +486525 +664559 +740709 +2031550 +133090 +593621 +2633638 +486482 +1956825 +680248 +1612010 +730075 +345853 +1318430 +231691 +2308090 +2558693 +133203 +2118641 +2277805 +39981 +345911 +214240 +734989 +133102 +2075286 +133189 +76828 +1612039 +1998092 +1811889 +2697508 +76842 +680290 +664580 +231672 +332502 +2314171 +214173 +2101344 +214255 +40034 +214186 +680242 +263561 +707598 +307592 +398542 +849443 +133115 +133305 +751512 +2101358 +593604 +593641 +3565 +133269 +133181 +751503 +1062399 +2014445 +132934 +680273 +133046 +1686976 +2246918 +2067687 +736186 +1318431 +133123 +214236 +263521 +214267 +1365142 +231663 +475168 +231623 +1612051 +345918 +2280805 +332492 +736202 +248228 +132849 +345881 +421441 +214206 +2516613 +332537 +1764333 +1291731 +231723 +486530 +338000 +2454686 +40068 +766092 +1071584 +432952 +2697520 +1530959 +2429917 +132902 +736195 +132942 +133196 +398509 +912774 +707595 +40033 +2118654 +263544 +133357 +1998091 +133008 +248231 +1998096 +231717 +1365150 +486485 +1987425 +398550 +3580 +707580 +231633 +2558654 +345824 +2057950 +345937 +1530967 +231693 +512832 +426204 +2730037 +1612024 +421470 +740725 +133081 +2118627 +132939 +231713 +133204 +1612045 +398520 +736194 +263562 +512838 +1933765 +680253 +332568 +76867 +1612005 +133059 +2075295 +231728 +593669 +441942 +1530984 +39999 +133171 +2308079 +214167 +1318422 +263616 +76878 +263604 +40057 +2454721 +899859 +486491 +2118643 +1514251 +994330 +1403799 +132894 +133063 +994327 +332536 +231732 +133156 +345928 +307593 +2288794 +486466 +214212 +40066 +345846 +231607 +398573 +1660093 +248203 +751502 +1291736 +332513 +512850 +76827 +2558655 +40011 +2288811 +248183 +398567 +935812 +2031546 +421439 +248224 +76861 +746095 +2454707 +2075269 +39965 +40031 +2075300 +39978 +132865 +263589 +2075299 +734994 +2558691 +345898 +263621 +133147 +486505 +2314175 +2057943 +751510 +133333 +500968 +263576 +263617 +2558660 +2075289 +133256 +231639 +263539 +3568 +214198 +398544 +133301 +263629 +2429919 +263531 +736200 +2697506 +231682 +263625 +680267 +398495 +486490 +1053121 +231602 +231720 +398583 +40003 +231687 +132968 +398496 +2558671 +751531 +231626 +76874 +40001 +2429929 +593623 +1660092 +512846 +486500 +751515 +2075274 +849492 +1956824 +345905 +214185 +248217 +730080 +935825 +2246915 +263581 +263686 +345946 +133035 +372690 +2429914 +132937 +730087 +132925 +398547 +76834 +345888 +231673 +214219 +231748 +248190 +214274 +2308089 +326535 +593701 +39957 +2101354 +1375019 +2071816 +345945 +593634 +231688 +707581 +1530970 +133037 +2558663 +1318449 +133134 +332491 +2288787 +398587 +1062390 +338008 +730106 +332516 +214234 +1612056 +263578 +2101348 +2246902 +231661 +398557 +263559 +2118620 +849461 +248214 +751504 +40008 +263560 +214201 +912768 +1393506 +935850 +1612082 +1531041 +1250696 +1612085 +1702853 +2118678 +1348815 +1365155 +1724519 +1898683 +2057972 +512877 +664610 +1491001 +1724499 +1724528 +263689 +2454733 +1459029 +912775 +1300820 +1724524 +248247 +2118688 +1209726 +1459023 +1121806 +1956829 +1026053 +1531014 +680316 +1026059 +1750206 +2558714 +1037295 +1531028 +1708825 +76910 +1089766 +2866443 +1348817 +1956827 +1268693 +2314186 +777696 +1852991 +1318460 +912791 +952435 +1612087 +2280808 +1702852 +1708820 +1940315 +40072 +849535 +935849 +1531024 +2633641 +1646163 +1852998 +2697522 +2057973 +2246939 +1077080 +912785 +1717771 +1971709 +2454763 +1121805 +1369523 +994354 +2454746 +2003831 +1757231 +512886 +1724512 +2314191 +664613 +952418 +849511 +2031559 +1612100 +2633680 +2373481 +2101361 +1686987 +1971705 +512900 +1250699 +1824240 +1853002 +512898 +2866453 +1998104 +2866458 +1250693 +1414129 +512904 +1667882 +1209723 +1310318 +1708826 +1260915 +2118696 +2031563 +1724523 +1987430 +912789 +2633679 +1531019 +593735 +2373471 +1686995 +2454731 +1414127 +1531004 +363071 +2356492 +133371 +1667876 +1318456 +649315 +512912 +2633650 +2454727 +1898685 +2558705 +133369 +1971708 +593728 +849526 +1318462 +1852994 +1724543 +1853017 +1910414 +994361 +2246971 +1348822 +1940324 +1414141 +994364 +593756 +1300824 +994366 +1910413 +1853018 +2356496 +777732 +2118805 +512923 +2547829 +2118800 +593766 +1108904 +2057982 +2118793 +1667885 +2356503 +1612112 +994376 +1209736 +2356505 +2373486 +1053126 +680319 +952451 +2118802 +1853010 +1026066 +1108903 +777733 +849585 +680327 +133390 +2003838 +231757 +1291739 +1487228 +2720605 +2623608 +2558768 +1268710 +1348823 +912794 +1291744 +1318486 +1824254 +2697531 +2770992 +248253 +1414151 +459368 +1531069 +1491019 +1531082 +2373495 +1531057 +2633699 +952463 +1037303 +1998111 +1403807 +2246952 +2558780 +680331 +899870 +2280809 +2031596 +680326 +2558769 +849572 +1414153 +1998106 +1933773 +707645 +1811901 +1724547 +231756 +441954 +1531052 +994367 +1998113 +1667890 +1101351 +1667887 +1853047 +2558772 +593755 +1686998 +2118794 +912798 +512942 +1998114 +2697534 +1459038 +1853026 +593776 +1843151 +1342686 +2288832 +401385 +755701 +1491022 +777752 +849562 +1121809 +952449 +994377 +2246963 +1531066 +1612130 +1197794 +1950265 +76933 +2454786 +899871 +1058332 +1365160 +849571 +2246956 +2246965 +2118764 +1369527 +1708840 +2246966 +849541 +2427500 +1954212 +2118789 +1414147 +214283 +3595 +1612136 +1141440 +2730057 +248254 +593891 +1612162 +1369530 +849619 +664640 +1414155 +2771011 +664786 +1612175 +2734513 +2247041 +935863 +1385355 +593935 +1348842 +2247000 +849587 +664641 +593803 +664740 +1652442 +1375030 +2010734 +2246981 +2684062 +1843155 +664630 +2720609 +2684064 +1310321 +513003 +512974 +593782 +2101371 +1300835 +849628 +133410 +2697583 +1121820 +2730058 +2247008 +1612182 +2771045 +1956842 +133411 +1853055 +1971747 +2280813 +2101375 +2623609 +593815 +593921 +994412 +593857 +1968720 +2771003 +664653 +2285496 +1348835 +2246982 +1994292 +1197798 +2246995 +1397718 +664646 +1910420 +2771043 +513019 +1824260 +2075315 +2314229 +2850552 +2003847 +2118847 +133437 +2707398 +1646165 +1940328 +664783 +2521635 +1898709 +1380232 +2730060 +593893 +1037311 +664650 +1853070 +593874 +2118900 +2031605 +1365174 +2547837 +2719089 +459370 +593906 +2246985 +2697559 +2246987 +2771055 +1348850 +1101360 +2118858 +593807 +1459050 +2850534 +2623612 +76937 +1811910 +2866482 +593828 +2850579 +1491031 +512980 +664771 +2850564 +1956846 +2521634 +1531097 +2771029 +664711 +1968727 +1459049 +1956841 +2707399 +994410 +1950268 +512971 +680360 +707670 +1971735 +2356516 +1082942 +133433 +593876 +1514280 +2850531 +1236860 +2280814 +1933775 +2850591 +2277808 +2751263 +1531111 +1853057 +1612183 +1612160 +2373518 +2730073 +2719093 +2751262 +1750217 +1612185 +2314228 +664647 +2730049 +2118868 +1956852 +1968729 +2058017 +1121819 +593855 +2411818 +2691423 +1365177 +1365194 +1403808 +849604 +2697560 +441972 +1268716 +1414163 +513012 +2697542 +513041 +664661 +513001 +2691418 +2075317 +1342692 +664643 +730144 +2003851 +2730061 +740733 +1910416 +593932 +1956851 +1612144 +664680 +1047617 +401392 +680355 +2759678 +2014460 +2730068 +2118870 +664751 +2014457 +664762 +1987442 +2684061 +2521638 +1843159 +664699 +2558795 +952489 +593829 +2247006 +730141 +1724558 +1811909 +2247038 +593809 +2759675 +2521628 +1998132 +777805 +1824267 +1050054 +2558853 +2373525 +2118966 +1108913 +513076 +2521674 +2118957 +2521641 +190868 +2521702 +707683 +1910428 +1940329 +1789659 +777807 +2558843 +680378 +1531135 +2521665 +2118952 +1053136 +777797 +1209755 +1101363 +513057 +849655 +248256 +2558841 +2558840 +1824268 +1491054 +2373545 +2021154 +2118932 +513055 +1403809 +849638 +2697592 +2521660 +1482699 +2288849 +1491047 +1531136 +680379 +2288857 +777798 +2558846 +2118912 +40089 +2373533 +2558829 +76945 +3598 +1062413 +2118914 +1687008 +513063 +2075336 +2101376 +1824265 +1660117 +1956867 +1209756 +2373527 +513067 +1491042 +1053129 +1209757 +2707405 +426213 +1971755 +2734518 +2075345 +2031607 +1491055 +2118940 +1414185 +2521681 +849654 +1531122 +1209758 +849646 +680397 +680381 +777793 +2558842 +2521672 +2314234 +76961 +2373528 +2118967 +2697588 +2075343 +1414188 +2075388 +2373568 +680448 +2558883 +1318550 +1531172 +2118984 +1108915 +1318531 +912821 +1300850 +1291757 +2558887 +1268742 +76984 +2280819 +2521709 +2837790 +1414214 +2003861 +1987456 +513107 +2866507 +2771062 +680412 +1971761 +2558934 +2119031 +2118979 +1071608 +1531202 +777861 +1708859 +2558916 +513148 +1414190 +2075378 +513159 +1318537 +2075355 +2356529 +1853086 +1987457 +2558868 +2031636 +1209763 +363077 +2558956 +1824284 +2075372 +2031630 +2118970 +1108919 +2837810 +2521730 +513120 +2031633 +740746 +2454844 +1403817 +2031631 +1531160 +680426 +1531183 +899879 +2026374 +513168 +1318549 +133450 +2837799 +2633738 +1077096 +513142 +513146 +1077091 +1687020 +2633735 +2558928 +1089812 +755715 +2866500 +1531216 +2075392 +2558871 +2558890 +1531207 +1491064 +2119030 +1531152 +2119047 +1531150 +2031627 +1687023 +1089809 +513095 +899878 +2373586 +952502 +1089816 +593945 +1108920 +2119021 +719661 +952521 +513112 +2558920 +1531148 +1724595 +2633727 +1268753 +513136 +707688 +2633728 +2031639 +1531199 +740738 +513102 +1853082 +2454829 +214312 +1380240 +649333 +2118973 +513130 +1268751 +1318547 +912810 +2454837 +2118987 +1179367 +2558872 +513100 +2373573 +513154 +777828 +1824289 +2558933 +1089815 +899876 +2119035 +1089814 +2075370 +2119049 +513126 +2558889 +2075373 +363078 +2373574 +513197 +2314264 +2247072 +593977 +231769 +2558972 +1987460 +40126 +133476 +1811926 +2558977 +593976 +442008 +1414228 +1491079 +2558984 +1459114 +1414227 +1047618 +1459077 +1717810 +1459084 +593951 +133461 +1933780 +1612259 +935886 +730150 +338022 +1750249 +3609 +707698 +594011 +1236896 +1750244 +2308100 +1531234 +766112 +2119103 +1724601 +1491087 +766114 +664815 +2119099 +1197816 +2547841 +2411830 +593966 +1318573 +1071609 +746119 +1612218 +849715 +475202 +1197829 +2247054 +2558979 +2119132 +849731 +1318571 +1491086 +1824297 +421514 +2247055 +1459080 +1342700 +2373599 +680472 +1660124 +401400 +1933785 +1708866 +1365208 +2547840 +1664736 +1318574 +1236902 +1843173 +707706 +2850655 +2691427 +935879 +952538 +1910454 +1750254 +1291781 +1236888 +1101375 +777889 +707711 +849681 +755725 +1514330 +1348863 +2850614 +2247067 +593992 +935880 +1612223 +1414218 +2058055 +1365213 +664819 +2349638 +1158878 +1514289 +1260920 +2850638 +1318567 +1179379 +1811916 +1531225 +1459078 +1760199 +1459119 +2119125 +1459110 +2349652 +2247120 +680468 +1071611 +76991 +2058061 +1971779 +1071615 +133479 +2429948 +1250705 +1971776 +1811921 +1514324 +593952 +2850647 +1236877 +1612242 +1300854 +1612249 +1933784 +952539 +2850644 +76990 +263700 +849769 +2119095 +2707412 +1174454 +766115 +2558968 +2247134 +1717807 +2411837 +707715 +994428 +2247075 +442000 +1612211 +593994 +1491084 +2558995 +2707413 +594008 +40121 +2427506 +2356538 +133485 +2247105 +2850657 +2247091 +1764348 +1365207 +263698 +2771066 +2058045 +1898715 +2558973 +849705 +2850609 +2058060 +2684072 +1824302 +1459086 +2058053 +513193 +2119114 +1811912 +2058056 +2058064 +133452 +1414215 +40120 +1459097 +1702863 +1058337 +1612215 +1702870 +2850636 +1071612 +849683 +2119055 +1910467 +2691429 +1956894 +740753 +1300861 +1491101 +2559065 +2031657 +912838 +1531261 +2288887 +2119161 +214326 +77009 +214324 +513213 +1393529 +1491122 +2559056 +332602 +2559008 +1062432 +2454862 +2119198 +326539 +2373610 +2031661 +77003 +2288882 +1268768 +1268788 +513210 +3615 +2559039 +1158880 +1853105 +332607 +2314290 +1956891 +2031668 +1956883 +2559060 +2521770 +1764352 +2559073 +680496 +1491102 +680484 +1089823 +1771023 +1053151 +649339 +680475 +2119158 +1971795 +2559025 +1318587 +1987469 +1414234 +2314272 +1268782 +2119178 +777922 +777918 +1101382 +1531282 +1318590 +1318588 +2373609 +284583 +2314271 +2273970 +2119168 +1491105 +2559046 +2031681 +77015 +2454861 +1824306 +3617 +2119210 +777921 +952551 +2422939 +332609 +2559067 +1531279 +513239 +1393528 +2745082 +2559032 +77012 +2521764 +2119194 +1950276 +1667921 +1764351 +2751271 +1300863 +1268787 +1789674 +777933 +214318 +1531280 +1853125 +2422940 +513282 +1369543 +1136008 +680488 +513220 +1050057 +1318584 +1491118 +2314301 +513259 +1956885 +912837 +1853127 +513290 +1268785 +1987466 +1910459 +2075416 +1377420 +1531269 +1089822 +77006 +1971800 +2119215 +2314286 +1853110 +2559010 +77019 +680486 +2633756 +2455031 +1414277 +214381 +1482716 +513312 +906986 +680501 +1783009 +1491136 +849818 +1179409 +1667948 +2356551 +2119279 +1459171 +2521774 +2454887 +40137 +2119282 +2771201 +2559141 +2633749 +513317 +1531347 +2771236 +778001 +2824373 +133537 +2075434 +1531332 +2119495 +2559120 +2288999 +1531365 +1531334 +2075457 +594071 +214405 +2824253 +2771095 +2454965 +2771191 +2075485 +1491137 +1531382 +766147 +3701 +513307 +1062453 +2824315 +1058344 +2119567 +2429979 +2119348 +2119299 +231783 +2771211 +1612267 +1531331 +1531404 +1071641 +1531305 +1491171 +2521800 +2771148 +1531446 +2288984 +214393 +1708872 +849826 +40237 +2119424 +2119359 +2119294 +2075487 +1750255 +1459164 +1612307 +133526 +2430019 +77058 +40188 +1811932 +2455034 +777959 +2119323 +214384 +2026387 +2028215 +2119371 +1771077 +2119255 +2521777 +133577 +912910 +1179408 +1291786 +2771197 +2430009 +2119257 +849773 +2521790 +3631 +1414245 +2771282 +594066 +2429981 +2454892 +2771246 +1053167 +2119322 +77067 +2247145 +77080 +2356556 +2288896 +190890 +1667930 +133536 +513301 +338024 +40158 +2454940 +3652 +2824347 +77038 +935939 +2454953 +1531394 +2824282 +935927 +2288893 +2430021 +2119480 +2771087 +1482719 +214379 +442009 +2771101 +1459183 +1058339 +2119556 +594064 +2119386 +1531387 +1853137 +1531330 +1179403 +1459137 +2288962 +40151 +214392 +2521796 +1531442 +2119423 +912874 +202979 +2521781 +952580 +2559137 +1414282 +952559 +2429975 +1531495 +1702887 +766146 +2058084 +2373646 +214369 +2289004 +2349665 +1531466 +3630 +2771289 +214365 +1612288 +40141 +513293 +2373632 +40142 +719673 +2028213 +332615 +2289005 +2119483 +1853138 +1414264 +2009655 +2824250 +2288964 +2288988 +2771103 +2411838 +1612296 +1082946 +2314335 +594055 +40171 +594061 +1954219 +1531351 +2771309 +935938 +2288911 +1179395 +2075443 +1491138 +2119408 +513306 +649343 +2430011 +1971809 +1514337 +1053169 +442049 +912913 +3716 +1491165 +133504 +1491166 +2119521 +1853165 +2373629 +1179398 +77065 +849852 +849796 +1062452 +231775 +1053165 +1789687 +2119267 +1789693 +1853131 +353663 +2824279 +2026383 +2771365 +2771305 +766118 +1531419 +190879 +1062466 +1531360 +2771213 +2119290 +2119305 +2454928 +2771112 +2771203 +912905 +442040 +1853163 +133585 +1687041 +849787 +1531470 +1268794 +766145 +1459149 +2031718 +2454909 +2356548 +1058343 +2308114 +2824320 +2455015 +2771353 +2771088 +899896 +777968 +1687059 +2771147 +1702878 +2031723 +2067721 +849805 +3639 +1783007 +2289014 +40173 +1145208 +1612273 +1771045 +2771198 +1491154 +2454899 +2247142 +2314360 +2119548 +2314363 +405115 +3640 +2559142 +849877 +3706 +1531372 +2367407 +338023 +2824267 +2119530 +2119263 +1414255 +1414251 +2824283 +2454911 +2771220 +1771037 +2454889 +912885 +912906 +2454946 +2058077 +2101393 +2771291 +190892 +2356555 +3641 +849780 +1687050 +2697602 +1612293 +2771284 +1459138 +1051403 +1531343 +1531336 +1179393 +2455013 +912875 +1702876 +2633755 +1403829 +849777 +214400 +2288997 +1179407 +2824314 +3702 +1459181 +1062476 +1071640 +2429994 +1531425 +2734525 +2349660 +1071629 +899888 +2247150 +2119313 +2429993 +1789712 +1531391 +2314321 +899895 +2119488 +442026 +2288970 +77083 +214414 +3647 +1051427 +2119522 +849851 +1612304 +1771059 +2314337 +2429995 +2058082 +1824316 +1459168 +1071639 +2771367 +1491148 +1179411 +1491191 +2308117 +1724626 +849924 +2119583 +1708882 +40250 +394558 +1708877 +778048 +1531514 +2075518 +513381 +513340 +1724622 +2289031 +2119658 +77098 +680538 +2119621 +2075510 +2314401 +1121845 +2289021 +1342706 +2119703 +2707423 +2119620 +778027 +778060 +1853183 +1491186 +1250725 +2314395 +133616 +1209784 +442067 +2119672 +1998166 +2075505 +1318613 +2455043 +513399 +2247181 +1414319 +952585 +1348885 +133620 +2443592 +1514344 +1687066 +2373679 +2119654 +2119631 +594080 +778035 +2075525 +1377428 +2289024 +1853170 +2742068 +2521840 +1414329 +1531522 +1531525 +2373677 +778045 +2075527 +1377430 +1824347 +1459184 +849917 +214430 +680536 +1724620 +2455042 +649347 +2521833 +2247182 +680518 +1300871 +1956927 +2247175 +1071650 +2119639 +1179429 +2521825 +513371 +1491188 +513365 +1209790 +513346 +1310339 +2119600 +1724621 +1956906 +1971813 +849915 +680519 +2730085 +2119678 +2289029 +1318620 +849909 +1209787 +2009664 +2521836 +1956908 +2707419 +1179423 +1771103 +1414312 +1459279 +2719100 +594102 +2247232 +2521862 +850172 +2119931 +2247295 +133693 +2247325 +1491212 +2559258 +1956996 +1957000 +2349713 +850196 +2247241 +2314452 +1853203 +1291815 +2247270 +1459247 +2031766 +1414348 +263720 +133647 +594213 +1957004 +2058182 +2119854 +850229 +2247267 +2119706 +1968737 +778082 +2247299 +1750295 +594123 +2349728 +2373682 +133725 +2430034 +40284 +1987478 +1291790 +133713 +594264 +850000 +2633793 +2697605 +2509870 +2697632 +1514348 +1459220 +2119720 +2771422 +2058150 +263713 +1956988 +133707 +2314410 +2521911 +2720635 +1037330 +1531572 +2697617 +1459280 +2247265 +1612382 +1898720 +2559233 +3751 +1750276 +1612370 +2455065 +778079 +2247273 +994500 +1491217 +1724638 +1310346 +994494 +1268823 +1612380 +2247353 +2559300 +307608 +1531594 +2031749 +2771405 +2521875 +1459242 +1956950 +850169 +1291794 +594141 +2247293 +664840 +1612353 +2373740 +1783010 +2058158 +2455057 +2739256 +2411852 +2416139 +850112 +2314435 +1667960 +2058142 +2119718 +40262 +2247219 +2247300 +2058109 +2697614 +2119827 +2119897 +594202 +1612400 +2739253 +2623634 +2349671 +2559266 +1037324 +2373688 +2247233 +594113 +594169 +2119890 +730159 +1531618 +2247348 +133698 +2707465 +664836 +2119819 +2058169 +2730092 +2559295 +1724653 +1957005 +1898717 +664834 +2411857 +2289044 +2411846 +2119926 +1956974 +2771438 +2247227 +2119716 +1531558 +133668 +2058178 +2031730 +1652461 +594132 +849940 +2119865 +2031734 +2289045 +2075564 +1047622 +2559272 +2356575 +2119928 +2559290 +2623642 +2075545 +1724654 +459394 +2751281 +850082 +1750303 +594252 +1101392 +850133 +2119824 +2720655 +2742069 +850130 +952602 +2058181 +2349698 +1843185 +719681 +2349701 +513405 +2058129 +231798 +2247347 +513401 +1082959 +1612359 +2771418 +1910479 +2633785 +1101393 +2521896 +1644337 +2373709 +594241 +849987 +2559186 +1459217 +2373716 +2745090 +2119901 +664832 +850203 +2521865 +2031744 +2720650 +1310370 +2559214 +40300 +1268828 +2349721 +1459253 +513414 +2021163 +850131 +133655 +2739258 +2521885 +1531549 +664833 +850109 +1612404 +1956945 +459396 +2314404 +2058148 +2559195 +2559216 +778066 +994489 +2247240 +952598 +2247254 +2373685 +2559298 +2688978 +1750268 +2058146 +513400 +1291792 +2730096 +2521880 +459399 +994504 +459395 +2559304 +850164 +1291824 +2247243 +1482728 +231799 +850031 +1750299 +2707441 +2349700 +1612352 +3747 +850144 +231808 +594160 +2734543 +2119799 +1843184 +2247255 +2058098 +133738 +2559187 +1268818 +2031738 +850155 +1037327 +952600 +2720644 +77113 +1531564 +2521920 +2367411 +594140 +1940351 +2559282 +2075569 +307603 +1197839 +2559294 +1724634 +1491214 +1531602 +935957 +1971828 +2058094 +2119836 +1459251 +1612384 +594174 +133672 +2707450 +849967 +2119789 +2559236 +2695081 +594104 +850049 +2119841 +2289050 +1459207 +849976 +133729 +2559301 +40285 +513402 +664846 +594177 +2411861 +2247236 +1724651 +1957012 +2559251 +1514360 +1179431 +1811938 +1612428 +1291826 +2349680 +912925 +2247302 +2314428 +2119798 +1940353 +1459281 +1459250 +1531613 +2373814 +1789726 +2120029 +778223 +442117 +513509 +1179448 +513620 +2119949 +1531714 +2730099 +2559385 +1646193 +778211 +2455082 +952660 +442100 +513549 +513450 +2289057 +1179452 +2314536 +1971834 +513514 +1660153 +2559394 +680554 +778143 +2003881 +1318633 +2356611 +2739275 +513488 +1531752 +1491226 +2120131 +1026114 +2559349 +1824358 +680586 +513497 +778105 +2031783 +2120099 +1491263 +1531693 +1824369 +1853251 +2559364 +1491267 +735008 +2559379 +513636 +2120045 +513528 +442113 +1687087 +1724671 +1910507 +513616 +513459 +2633856 +778247 +1250738 +2455087 +2559369 +2314525 +778273 +2120052 +1853321 +1531703 +2455118 +513482 +1491232 +1853327 +1268840 +778175 +2356591 +1687081 +1853223 +1910491 +778173 +2559402 +2356603 +2119976 +513487 +680567 +1531746 +2633799 +1491252 +952689 +3777 +1348909 +1971835 +1910487 +2120194 +1491253 +778274 +513449 +1853256 +2455094 +1209805 +1708909 +1077116 +2559337 +1250733 +2314559 +1910509 +1045568 +1348929 +513543 +513585 +1209804 +513596 +1179432 +1853242 +952617 +1646185 +1318653 +513624 +1910496 +755785 +778248 +778276 +1531679 +1531642 +1531735 +1531655 +2120041 +1789718 +1348900 +2120142 +442084 +513468 +952626 +1414373 +1724700 +1853308 +2314464 +2455113 +3784 +1771110 +2314504 +513618 +2559367 +2119948 +778094 +1531709 +2720657 +1062487 +1644341 +2314535 +513492 +2314548 +1531716 +1179437 +1531680 +1348905 +952651 +3775 +735009 +778269 +2314471 +952610 +442073 +2120159 +1531683 +1646182 +1646188 +2559365 +2356633 +2119977 +513458 +778198 +2356606 +2356608 +1910514 +778278 +2075598 +214449 +475215 +2373800 +513527 +2633819 +475210 +2120054 +778201 +1724681 +1724708 +442083 +442099 +1026111 +513645 +1724676 +1318642 +1250731 +1491266 +2119992 +3770 +680559 +778272 +2633832 +1491240 +442121 +719685 +1853227 +952693 +2559388 +1318650 +680587 +2075582 +1348899 +1491221 +442138 +2120044 +2633862 +513463 +778177 +1026098 +778263 +1390858 +1268847 +2559372 +2120181 +1724660 +442082 +1491257 +513444 +1531678 +1300882 +778095 +1179444 +778100 +1491270 +1318631 +2120036 +1789722 +1687106 +952647 +190908 +1687093 +778117 +1724657 +2559386 +442118 +442141 +1179439 +442111 +2120082 +1390873 +1708892 +1318632 +2120021 +442116 +778108 +1853318 +2120038 +2373804 +912939 +1026101 +2120217 +2633886 +513597 +2559404 +1250750 +190910 +2119983 +1250770 +2521945 +2455123 +1318641 +1531690 +2559407 +40306 +935966 +2120317 +2120228 +1491284 +912964 +1071669 +2247388 +2031793 +513690 +2120258 +338036 +2751298 +2120231 +1612464 +952707 +77150 +3827 +935977 +707725 +952696 +2075616 +1414407 +2058220 +2075624 +1318678 +2516627 +2289082 +594282 +345973 +994530 +133746 +1342710 +1089844 +1853331 +1380255 +2075637 +1197842 +2120241 +912971 +2058207 +2633901 +952712 +1531768 +2427516 +906989 +2559418 +850245 +1724729 +345971 +1482740 +2120254 +952714 +2633898 +778291 +778310 +906990 +2289086 +850238 +513678 +133763 +912952 +1612437 +1393535 +1459294 +850244 +994523 +1403847 +1612465 +332623 +1414406 +2031819 +2751301 +1940358 +2075619 +2430045 +2120298 +1910517 +3796 +1531767 +850251 +1071662 +1414448 +3800 +1101396 +190912 +912961 +2075613 +1531813 +2314564 +1318666 +2684082 +2031805 +2751297 +332620 +2430040 +1491279 +952700 +2120227 +77157 +2120244 +2707480 +2427511 +899925 +2120287 +1268856 +2247382 +2516629 +994521 +1414447 +1764364 +1408269 +1764365 +2031822 +935976 +1768500 +231810 +2120233 +2289084 +77170 +912970 +1957029 +2280828 +1771118 +2521956 +77142 +40327 +1318677 +2734551 +2120305 +1531775 +2455173 +2031802 +2559408 +345976 +2031814 +40320 +1062492 +1414425 +2422941 +1071659 +2120312 +2120265 +3823 +1789733 +1531804 +1789735 +133762 +952702 +1531782 +2120329 +2075635 +1660156 +3816 +2455142 +1531772 +1764367 +2422950 +1764363 +2373839 +2120274 +1071674 +2314577 +1380257 +1724737 +442156 +1789738 +912978 +850283 +190920 +1987499 +1998180 +2751310 +513734 +2247397 +2633905 +2559479 +2559442 +2120353 +2455179 +1531855 +2058226 +442154 +778335 +2010763 +2455189 +2559443 +2559457 +778340 +2120401 +850275 +850264 +1491296 +2120342 +850287 +2373851 +1318717 +2734562 +133780 +1971851 +1910522 +1957045 +77184 +1268860 +850277 +2633917 +1612472 +2745106 +2521987 +2559471 +1987497 +850281 +2120452 +1531856 +77191 +1957038 +1687122 +1300894 +2314586 +426223 +2559462 +2751311 +2120460 +1318712 +1291833 +513727 +1300899 +1954228 +77201 +664860 +77185 +778316 +2120478 +2120396 +475238 +1058353 +1910529 +2559481 +2314587 +2559486 +778342 +1971849 +2559451 +2559496 +2120455 +2280833 +1071676 +778323 +2521990 +1531867 +2247393 +77175 +778343 +2314581 +1824395 +1910521 +1531868 +1994305 +332651 +1348939 +475233 +3844 +284585 +1531825 +2120345 +1318706 +1318701 +2120453 +332649 +850286 +2455180 +1348946 +1053209 +2559467 +1300897 +740767 +2120368 +2120470 +2416155 +77197 +2120500 +2120393 +1687117 +513717 +1318703 +40340 +2373849 +1318695 +2289095 +1724738 +2280832 +1318708 +2120467 +2751317 +2455216 +1414459 +40339 +1268879 +363088 +2455198 +2120340 +1853343 +2455197 +1531842 +2850855 +850298 +2455240 +2850706 +912982 +1268898 +2850806 +2014490 +2633920 +2850709 +2455270 +2850680 +1998195 +2120534 +850297 +2730111 +935984 +1998186 +1824399 +77213 +2850822 +1957048 +2522033 +2455227 +1209827 +2075647 +850292 +2850817 +1667990 +1086133 +1053213 +1491307 +2289120 +1531889 +2455232 +1342712 +1853365 +1998194 +2120543 +2289115 +1414475 +2850819 +2455241 +2633935 +2120541 +2751320 +1268897 +755797 +1853382 +2455235 +2289121 +133797 +1491308 +1998196 +899935 +2850825 +2850783 +1971871 +2120551 +1687129 +2522021 +2559537 +2850774 +1957053 +850294 +1408271 +664861 +2850792 +1491305 +2559512 +1853373 +1853371 +1853370 +2075666 +1971867 +952719 +952735 +214463 +913000 +778360 +912993 +778372 +2422956 +1026121 +2247399 +2075663 +1687127 +513741 +1491306 +2850704 +326540 +2455253 +2373886 +2075664 +766182 +2850814 +1318753 +2120561 +2373872 +2120535 +2850751 +737110 +1268899 +2373866 +2850813 +2850758 +1853384 +2850748 +77216 +2373868 +2373871 +332665 +2850850 +2120514 +133804 +649360 +2559531 +2850712 +2850804 +2850763 +952742 +2009666 +2824494 +2031868 +1531907 +1179471 +1724770 +2003898 +2009668 +214470 +2075672 +1531937 +1491321 +2522047 +2866526 +1209866 +513796 +2314642 +2633986 +2356673 +1268908 +3861 +2373944 +2120632 +2516639 +2289143 +850308 +755834 +899970 +1531958 +1482750 +1910570 +1531906 +2373916 +1853417 +2120717 +2120605 +2824429 +3856 +2120567 +2559585 +2120752 +1077131 +1318780 +2455306 +952754 +2455331 +513772 +1414502 +1531936 +1821378 +2522057 +2522070 +214480 +2373964 +680634 +2824414 +2120718 +952759 +778432 +1687137 +297758 +2559583 +2824480 +1910533 +1853398 +2824510 +1491338 +214466 +77241 +2373897 +77264 +1318774 +1077130 +2356652 +2120613 +1821379 +1077123 +513766 +1209836 +1957054 +2633941 +952785 +2314653 +1957070 +2075681 +1531920 +1414535 +2516643 +1910569 +2559591 +1491332 +2824460 +2120808 +1910540 +2522048 +755815 +2289132 +2559547 +1724761 +2373951 +1910572 +1053218 +2633993 +1268903 +913009 +1724782 +1318786 +1910541 +2120727 +2559565 +1414546 +1268906 +1414537 +2559607 +2559645 +3864 +1414557 +2356657 +2120647 +2824398 +2120588 +1482744 +2824417 +2314656 +952765 +77233 +1910539 +1209837 +1414591 +2824472 +1108961 +513792 +1318784 +2274000 +248274 +2120784 +913010 +2559614 +2559604 +952763 +1910551 +2120699 +2009669 +2120610 +475240 +1414523 +1108960 +2824488 +2120667 +1077137 +2373917 +2120829 +1724785 +2824513 +2633947 +77255 +2289152 +778409 +778417 +1089854 +1789748 +1853397 +2031858 +77227 +1414517 +2559589 +1089856 +2430060 +778415 +1708930 +2075710 +952767 +2120789 +952764 +1414542 +2455347 +1089859 +2559628 +2356675 +2455333 +2824413 +1708942 +513768 +2522045 +1957069 +2120820 +1071678 +2455290 +2120658 +2356667 +2824443 +2120767 +1764373 +1174464 +1179472 +1026126 +2314626 +2824482 +2120803 +2559563 +1702899 +755833 +1209867 +1236928 +2416156 +1459326 +1414484 +2373973 +2314622 +755831 +1491345 +1667994 +2522062 +778425 +2633944 +1403867 +1724759 +2120751 +214469 +2120612 +2430062 +1789742 +2824419 +1268911 +1414600 +2373982 +77242 +1174463 +1414512 +1414511 +2120651 +994538 +2634108 +2634115 +77298 +372717 +2559737 +2026401 +2427520 +2121018 +1532035 +1179476 +2026402 +133835 +2374028 +2522105 +1077152 +2374019 +2559741 +1403888 +755839 +2634087 +2058238 +1318831 +1612486 +1853442 +2274011 +2314730 +1414668 +680653 +2373997 +2314698 +2374040 +1687149 +2634044 +2031916 +1026134 +2120894 +513851 +2274015 +755838 +2522127 +1037334 +2559654 +1403889 +2314696 +2120948 +1077140 +2634099 +3912 +778461 +2120952 +2120866 +2634081 +2559746 +778487 +2356703 +3906 +2634104 +2522113 +2120916 +77289 +2120855 +2067750 +2354988 +778448 +2455383 +1532009 +284591 +3901 +2634125 +2559657 +1724845 +1348955 +2559656 +1706809 +2374035 +755844 +2634050 +2374025 +248298 +751550 +913037 +2075721 +2121083 +1197846 +2374004 +778483 +2697671 +1706805 +3882 +2120969 +3894 +3915 +2031886 +913034 +2374039 +913028 +952860 +2559705 +1250787 +77293 +2559729 +1026135 +1853491 +1706810 +513833 +2634092 +2374020 +952864 +1414647 +952841 +2522128 +2367424 +77314 +850330 +1414640 +2522125 +2121071 +2356712 +77349 +1708947 +1459338 +2455366 +2247411 +2634116 +513855 +2031887 +2067754 +1660178 +2356695 +77312 +2559733 +2075741 +2121042 +2075743 +1853446 +2697663 +2374027 +2075733 +1687152 +1414669 +2314675 +1482775 +2522117 +1209872 +1209880 +2455397 +2314681 +214485 +2559744 +2274007 +1724844 +2455374 +2374043 +1268925 +1724806 +1702900 +2120989 +1532005 +2354984 +2121004 +1260925 +2559652 +2751328 +1318826 +40354 +1414610 +2634078 +1853495 +248309 +1414608 +3897 +1687154 +2058237 +513818 +1532019 +2120879 +1724823 +2374014 +442169 +1655200 +2634067 +2026398 +2697668 +1853462 +2522122 +1491348 +2120954 +755850 +2634110 +1403896 +475244 +2522096 +2058243 +778453 +2120863 +1459330 +284595 +2031925 +778499 +1853445 +850323 +2522111 +1853485 +2559655 +2634020 +40355 +952805 +2455367 +2314677 +2356704 +1853481 +2121005 +680659 +778495 +1414624 +3890 +77319 +2120968 +133814 +2559677 +1250788 +1209873 +1789760 +1179495 +2121109 +2559818 +1491368 +1789758 +778506 +513863 +2121165 +2121169 +1403911 +778525 +1687170 +2559839 +2121199 +2121229 +1532054 +1136022 +680677 +2289172 +2559838 +214501 +77376 +77382 +1108972 +2455425 +2455465 +2522161 +1403909 +2121161 +3938 +1459349 +1414688 +3935 +1062523 +2559822 +2274020 +1532058 +2455419 +1821384 +1612504 +2741341 +442176 +1724864 +3937 +850348 +1179498 +2522146 +2071823 +2634142 +1136018 +1687172 +1491360 +248311 +2121207 +486598 +1491365 +40365 +2559766 +2522166 +2121141 +1910610 +2247447 +2697674 +2559828 +1136024 +426236 +2559841 +1933799 +1811955 +2121152 +1053224 +1179481 +1377435 +2559819 +2247427 +1687167 +1660181 +1687164 +2734568 +1250798 +1532072 +2559797 +2522140 +1668029 +2623650 +2559804 +2374069 +2430074 +2121145 +2121177 +2009678 +2121215 +2121154 +1459353 +190937 +1250797 +190936 +1050071 +1250799 +2522150 +2009680 +1062518 +899992 +2522149 +1380258 +1179497 +349730 +1268929 +1108973 +2121224 +2634147 +850340 +1824443 +1532048 +1811952 +680670 +2455460 +1687174 +486599 +740778 +899997 +2121120 +751551 +202987 +1998203 +475249 +2247426 +1910599 +850339 +2559780 +2121174 +513933 +40419 +1687211 +2374093 +2121387 +2247535 +2314764 +1318881 +40370 +1843195 +2121290 +594417 +1491418 +1954230 +345995 +2121333 +2771491 +2067766 +2121473 +2356721 +1062547 +1532095 +372743 +2247465 +2121533 +935993 +2075791 +2354994 +2411872 +2121418 +513980 +40424 +2289210 +1853589 +2031941 +2522224 +1062550 +1197863 +2075795 +913047 +2247541 +2522252 +1687239 +1209909 +332726 +1811968 +442215 +133891 +2427529 +513927 +1514406 +2455491 +850363 +2522280 +513900 +2075801 +1612575 +2559913 +594360 +935999 +778551 +1702915 +2121335 +1491404 +1898757 +1821394 +513965 +202995 +2121329 +2455479 +1532111 +345986 +2058249 +2559891 +2374136 +486608 +2031928 +1957089 +2075831 +2075785 +2289205 +1166324 +1209921 +594336 +332758 +1062543 +913068 +1459373 +2634162 +372736 +2289209 +778532 +2014497 +442187 +3956 +513942 +513966 +1853584 +1026163 +332736 +1348957 +133866 +432986 +2850869 +133885 +2522197 +1037339 +1491421 +426241 +664871 +2075777 +513909 +1260934 +2121257 +2121266 +432983 +1179503 +2430079 +77430 +936008 +2374102 +1668038 +1414720 +913066 +2121464 +2374150 +372722 +1910621 +2101425 +2559923 +442213 +2289229 +2522222 +1459364 +778547 +214506 +2121434 +1197870 +1158906 +2356725 +1491406 +594339 +2121371 +2824536 +1209902 +2547868 +1026162 +913055 +746124 +2697695 +1724881 +1318877 +2455532 +513890 +1898756 +1414733 +133948 +133909 +2121360 +513976 +594376 +2121382 +1209910 +2058270 +1612547 +2075817 +2522262 +1612564 +1385368 +2356724 +2247508 +2121401 +1514403 +332700 +2728878 +2247497 +133901 +2075820 +401428 +664874 +2771471 +2247527 +2121512 +707736 +2559911 +1291849 +2121301 +2121397 +513968 +1724869 +2374101 +1532105 +1819320 +77401 +332755 +907005 +2075834 +1532157 +442188 +332771 +2559902 +2101448 +1121863 +907002 +2374138 +2121535 +459404 +2121474 +1612551 +332762 +680698 +2559903 +2075798 +1771137 +936002 +2559914 +133907 +2314753 +1179504 +680690 +1491372 +850369 +1724885 +1910645 +2121286 +1121868 +2697675 +1933801 +2314793 +2121518 +513944 +1612560 +1414718 +513959 +263735 +1459395 +2247491 +77398 +594408 +2697687 +1532147 +1612594 +372734 +2058253 +1145226 +1179502 +1062532 +1532102 +2121384 +1532142 +1514395 +1236943 +77415 +2559884 +513975 +1789785 +2031942 +1071690 +2121320 +2850867 +766194 +2121398 +1702917 +2121425 +1514399 +1459388 +133869 +1414710 +2522216 +1532104 +1702908 +1209905 +1459383 +2121527 +2121275 +1811971 +1179514 +2314768 +2247482 +1971892 +401418 +332785 +2121399 +2121471 +2623652 +952889 +850392 +332773 +900001 +133890 +2455538 +133882 +1209904 +133900 +1209923 +2697694 +401426 +2522258 +2522296 +1853567 +900008 +2121540 +202990 +1062552 +2559890 +2121555 +2031934 +2075848 +2247503 +40405 +1514391 +1532176 +1532175 +594372 +2547873 +2101440 +2289217 +1414723 +2067771 +2101450 +214513 +1197865 +2289237 +2850876 +1532112 +2289227 +1687230 +2314775 +1491383 +2121409 +850377 +2455476 +1209920 +2075793 +2121326 +594356 +1789775 +1414749 +2771455 +2247510 +1491388 +1824453 +2374086 +2634157 +1668039 +751553 +332793 +952903 +133911 +2031933 +1209919 +133912 +133897 +2559898 +2247471 +2634156 +850378 +77405 +332763 +1414704 +594379 +2522236 +1824462 +740780 +2522266 +2559854 +850379 +2031937 +2314786 +2522242 +2121350 +850381 +2289196 +900010 +1687228 +1702916 +1393545 +432992 +2422978 +442201 +345987 +426251 +1491378 +3973 +2274038 +1687249 +2374179 +4001 +1026183 +514006 +77485 +2121699 +1414818 +1414816 +952910 +2374215 +2634230 +1532274 +1910670 +2837853 +1414822 +2374191 +2274035 +778647 +2314839 +2824626 +513992 +913079 +2356728 +1724927 +2026431 +2824572 +2837855 +2314842 +2374200 +2374230 +1491436 +2356736 +755869 +1724918 +1687255 +2824553 +514018 +4009 +2121661 +2374198 +77489 +2634211 +952930 +77456 +1179522 +1250864 +77455 +755888 +2707507 +2121718 +1318909 +2031959 +778646 +2121689 +1491438 +2121587 +1724893 +1910686 +1482785 +2067780 +3983 +2455549 +2121582 +2634233 +3977 +778610 +248326 +2026434 +2121669 +1532206 +2289241 +248342 +2314812 +778652 +2067777 +1789793 +2121687 +680713 +1414775 +2824551 +1687245 +4012 +2031957 +778599 +1250863 +190951 +952931 +778612 +514015 +1482792 +1414782 +778650 +2634212 +2289242 +1414812 +1724924 +1250852 +1708960 +1532282 +2121676 +1250814 +2374242 +2374223 +190952 +1532190 +2824615 +2121569 +2824584 +1268948 +1724886 +2121598 +952916 +1532230 +778593 +2824555 +1414790 +1853600 +2634199 +2121721 +2824640 +2121614 +1268939 +2314802 +2751338 +248344 +77493 +2031985 +2559960 +77486 +2314855 +2356731 +1532193 +778572 +1482789 +2121723 +2314813 +2837844 +1250837 +77492 +1250860 +248340 +2374205 +2031954 +952913 +1724898 +1026172 +755878 +77508 +1724888 +77459 +2374189 +2121684 +2075870 +2121629 +778622 +1318891 +1668047 +1491439 +77494 +755874 +2121586 +1026169 +2824577 +77469 +2121735 +514002 +1853609 +1414817 +1414789 +2121743 +2824575 +190949 +2634291 +2720693 +2707509 +778743 +2121825 +2374364 +2697701 +2522416 +1950322 +2720692 +1950317 +2374438 +1940427 +2121905 +2455595 +2634247 +2121931 +2522335 +2697724 +2122029 +2121978 +2356798 +2121790 +2374380 +2734577 +2430086 +2122093 +2634355 +2075937 +2374357 +1971896 +2522406 +2634338 +2356800 +2634371 +1724940 +2522337 +2866554 +2122086 +2121783 +1491445 +2121988 +2374346 +1269011 +778663 +1957116 +1853628 +2374419 +1853637 +2122016 +2274040 +2522420 +2634389 +2707526 +1724938 +2101459 +1824469 +190963 +2122228 +2374252 +284616 +2720688 +1403917 +2075907 +2634372 +2697707 +2684147 +2121998 +1724951 +2122061 +1853645 +1414864 +2032072 +2634299 +2560137 +778682 +2121993 +1971906 +2075943 +1853636 +2374332 +2634409 +2122112 +2003902 +1957133 +2122208 +2289252 +2522412 +2560026 +190964 +2374268 +2121967 +1269003 +778730 +755906 +2122067 +1269029 +2289257 +1026186 +2354106 +2374367 +2684118 +2032043 +2634343 +2634286 +1403916 +2684116 +2032092 +2684143 +442228 +2374375 +2455591 +2560014 +2697741 +2122034 +2122176 +2314893 +1414846 +1940437 +2374322 +2684151 +2634342 +1414893 +2122163 +2122207 +2374275 +2522400 +1940418 +2075922 +2720687 +248357 +77534 +778667 +1318919 +2634396 +2684112 +2374328 +77518 +2122023 +2122227 +2697743 +1403929 +2075882 +2684134 +475283 +1414882 +231826 +1724945 +2032079 +2121924 +2122195 +214528 +2374302 +1318930 +2122054 +2032044 +1268961 +2560091 +755911 +2560058 +2634278 +2374372 +2356757 +1950331 +1957102 +1491472 +2560101 +2121886 +2289255 +2522425 +1950325 +2121834 +1724965 +2522329 +2559983 +1026195 +2122015 +2684137 +2560085 +2122095 +778747 +2032039 +2374293 +755913 +2634274 +2634390 +2455582 +2522319 +2032074 +778702 +1414885 +2684140 +2121868 +2314866 +1268985 +1414909 +2356773 +1318922 +2121881 +1668057 +1971911 +2032000 +475282 +2122125 +2455581 +2684126 +2122161 +2032081 +2771497 +2522375 +2121979 +1824477 +1940439 +1957129 +2289280 +2684142 +1269012 +1268993 +1724953 +2684128 +2289269 +2634265 +2121922 +2121930 +2634347 +2122042 +1414836 +2121943 +2121901 +2455602 +2121871 +514048 +1940406 +1268999 +2707527 +1414900 +2121784 +2075947 +1724939 +77514 +2032059 +2634378 +2032040 +190962 +2121934 +2560074 +680720 +2374324 +2314879 +2634402 +2121956 +1957103 +514028 +214527 +2075926 +2560006 +514042 +2274046 +2122113 +2560106 +1414879 +1957125 +2314858 +2122187 +2314868 +2684121 +2430091 +2356805 +2356758 +2032064 +1268958 +1491454 +2697711 +2356760 +1414840 +2730115 +1300940 +755901 +2455588 +2121857 +2289250 +2121782 +2075886 +2697733 +778661 +755899 +1403915 +778749 +2026441 +2374420 +1950304 +2122224 +2560015 +2314875 +1771140 +363130 +778686 +1940413 +778687 +2634345 +2121851 +1318926 +2560097 +2684156 +2455626 +1532312 +2122291 +2634421 +2289317 +2751366 +2289287 +2280868 +2745144 +2122255 +952936 +740801 +2634428 +1403944 +2280870 +2122316 +2430129 +1957143 +2745142 +1397729 +778806 +2422986 +2122374 +77565 +2430128 +778760 +2684207 +2560150 +2455614 +2032108 +2075988 +1269035 +2289302 +2707551 +2032140 +2684183 +1957154 +2075997 +1414924 +77564 +2751349 +778788 +2032115 +2720705 +2455641 +2289300 +2122377 +1957149 +1532334 +2455669 +1414912 +1724970 +1660191 +2560168 +1724969 +2741419 +2430131 +2560163 +1957157 +2742078 +1853661 +2430106 +1318938 +2289305 +1532303 +1771144 +2455642 +2560148 +778768 +2422985 +1957147 +740800 +2455643 +913100 +77560 +2455666 +2032103 +2455660 +778792 +1532344 +2455636 +1532321 +2122336 +719716 +77556 +2455665 +2720710 +2455639 +2289288 +2289316 +2289293 +2289289 +2734605 +2560156 +2289291 +1269034 +2075993 +2455650 +719711 +2422990 +2122260 +2314931 +1532319 +248363 +778802 +2745146 +2003916 +2634424 +2734607 +2430130 +2522442 +1414951 +2707578 +778822 +1957180 +2751386 +2697768 +2003922 +2122483 +1708974 +2032183 +2289351 +514069 +2314977 +2122387 +1491489 +1957193 +2734616 +2076052 +2560190 +2289349 +2684211 +755942 +1062561 +2522517 +1687257 +2032152 +2684214 +1971925 +2122385 +2314966 +1491521 +755938 +77571 +2430155 +2707588 +190971 +2076064 +2455699 +1269062 +1386640 +1853663 +2032159 +2122403 +2430139 +2122477 +2122490 +2560207 +2067808 +2076047 +2745161 +1950347 +2707579 +952964 +1940455 +2707574 +1414941 +2122380 +2032179 +2122447 +2076035 +2289337 +1940451 +2122475 +952949 +2076042 +2289325 +2003928 +2522516 +2720715 +2122443 +2122451 +2122416 +1491491 +2634447 +1269054 +2076051 +2522507 +2076057 +1269067 +2032171 +2314985 +2455688 +2122382 +1687268 +2422999 +1318940 +2076071 +1668063 +1491524 +2707589 +1491502 +2003925 +2455692 +1940452 +2314978 +2289346 +2032182 +4030 +133956 +2455693 +2522502 +2734622 +2560238 +2314973 +1414943 +77572 +2720716 +353676 +1318944 +2751393 +2122407 +2032167 +2122438 +2634438 +2560215 +2374477 +1668072 +2560251 +1824494 +1491534 +2734634 +2374484 +1318970 +1300976 +2315004 +2315003 +307626 +719725 +1348987 +1179537 +2720738 +2739296 +2289357 +1269078 +2076092 +1971963 +2560398 +514136 +1300965 +1771165 +1318958 +1971949 +2734639 +735034 +1971955 +2314987 +1414955 +2122583 +1319022 +1414997 +1269087 +1414975 +2122509 +1310386 +1514417 +1301004 +1342721 +2560347 +2634457 +2430173 +2742087 +2560250 +594432 +2560279 +1209939 +1646237 +2374479 +778873 +1950361 +2374504 +1532361 +1971970 +2122524 +514180 +2315020 +2315030 +1414974 +2374513 +1824495 +1957207 +2522575 +2076121 +778839 +1414999 +2122676 +1998220 +2314990 +2032202 +1269101 +514098 +649383 +2021179 +1957231 +2866560 +1491541 +133970 +1957215 +1971972 +2707606 +850447 +1179541 +2734642 +1318997 +2560298 +594431 +1971973 +2356838 +2122603 +1971950 +2122698 +2289374 +1300968 +2730172 +1145233 +1318982 +1957202 +2707642 +2122609 +2837872 +2122699 +2122546 +2560397 +2374485 +1532390 +2455726 +2014503 +1318957 +1998223 +2122540 +1532350 +1811972 +2122551 +2560316 +1300983 +2430170 +680748 +2076087 +1724997 +214543 +2122686 +514111 +1532364 +1702924 +2289372 +1318964 +952972 +77596 +1725000 +1348978 +214540 +778836 +2522533 +1687276 +2707603 +1209954 +4052 +2374493 +594424 +1996087 +1414957 +1532377 +1319024 +2850923 +1348974 +2003945 +850456 +2522519 +1386642 +2730139 +2032199 +1687281 +1269100 +1300999 +346000 +2122522 +2076116 +1957226 +1269073 +2751405 +2730138 +2356851 +952969 +1957201 +2707610 +1687278 +1724986 +680733 +1491546 +514099 +1971936 +2122513 +1318967 +1342722 +1310387 +2356841 +1532371 +1300996 +1687275 +2522544 +1491540 +2076119 +1045577 +2522540 +2739311 +2739316 +2745189 +514146 +2374514 +2745174 +2745190 +1369551 +1459419 +1824498 +2739298 +1459427 +2430181 +2522563 +2745177 +2707630 +1532391 +1300966 +2076082 +1940471 +1957225 +2315037 +2455755 +2522523 +1414993 +1655209 +778874 +1532387 +2745186 +1853684 +680738 +1687273 +2684228 +719728 +1301010 +2076169 +2315038 +953026 +1824504 +190980 +2522593 +953008 +1789822 +1853715 +953001 +2455829 +2032294 +1269136 +2634497 +2010792 +1957244 +2522600 +1415035 +2279411 +332809 +1824508 +2455801 +514213 +913115 +2455833 +2122898 +2122892 +77613 +952998 +1319032 +2374542 +1532432 +2032277 +2522611 +2122871 +2122772 +1660204 +2560490 +1319055 +2122847 +2032256 +77617 +952985 +4055 +2289427 +1532456 +1403966 +2032263 +755952 +2560452 +2067810 +1532426 +332810 +2356861 +4075 +2032232 +2634496 +2522631 +2076166 +2122893 +1532441 +2122850 +2122747 +755953 +913118 +2032301 +1771185 +2122762 +514207 +778887 +1415022 +2289417 +2430218 +2315083 +2067822 +2076158 +1771199 +2122826 +2560415 +1415049 +649397 +2289410 +2032300 +953003 +1771177 +2032305 +2067826 +2076170 +1957259 +2455811 +2560467 +2122843 +2122810 +2076178 +1415062 +2560474 +1301008 +2315099 +2745194 +2522617 +778896 +1532454 +2560468 +514217 +1687287 +1415038 +77607 +1415028 +1853714 +2122722 +2634500 +2455794 +1077199 +1415025 +2560416 +77627 +190985 +2455849 +2560418 +2522626 +1077205 +2455798 +77616 +2560457 +2430219 +1687303 +2032266 +2430217 +2522621 +2122854 +2430213 +1687283 +1957264 +2356862 +755948 +1179551 +2122883 +2032254 +2122876 +2430220 +1771183 +1319054 +1491577 +2076154 +2032278 +2289388 +2455814 +913117 +2032257 +2315108 +4056 +1771195 +2122754 +2634477 +1853710 +2315111 +1824507 +2122723 +2076165 +1789811 +77609 +2560424 +2423006 +2430230 +2076133 +2455856 +1319063 +2032370 +1771273 +2123022 +214577 +1491643 +2122916 +1996091 +214568 +2122900 +2032381 +190993 +2430250 +2076257 +1771232 +2076279 +2032333 +1853735 +900086 +2003955 +1491584 +900063 +900082 +2076211 +2430263 +1491608 +1612612 +2430251 +2123004 +2850967 +1771208 +1062578 +2123007 +778934 +2455876 +1482815 +2455921 +1532472 +1853753 +900080 +214550 +2067843 +2032319 +1062588 +77670 +1491634 +4102 +2101462 +2430242 +2021186 +1053270 +77659 +900076 +2067839 +2430246 +2522642 +2122965 +737118 +2289531 +2067837 +77674 +1209968 +2522672 +2560512 +2076215 +1051433 +1824516 +913141 +2076252 +1415067 +1783014 +2430260 +1491606 +2067835 +900074 +1377447 +2455926 +1145234 +2123023 +1062577 +2076276 +2032335 +2560528 +2122934 +1996093 +2356872 +2560497 +900085 +2122977 +2560505 +755974 +2560522 +77677 +1415103 +1771214 +2730182 +214551 +2076243 +2771531 +2076231 +1789835 +1062587 +850463 +190996 +2122956 +2122928 +2076213 +1853747 +2850974 +1996094 +2455916 +2443597 +2522639 +4079 +2076253 +2289512 +214561 +1789826 +2123008 +1853744 +755978 +2122946 +2032336 +778955 +2076293 +778966 +1668089 +2122966 +2289515 +2623658 +2076262 +2032323 +1532462 +1789833 +2076275 +2315131 +1771201 +2122918 +2067840 +1771256 +1789842 +1771264 +1532461 +1996097 +2076207 +1789832 +2315146 +1771233 +1996095 +850468 +900069 +248376 +514230 +2122971 +2289464 +2279423 +405130 +1771270 +1269145 +594445 +1771250 +1269142 +2032346 +2122915 +1957268 +1853743 +1771211 +1532482 +40428 +77668 +77656 +2076251 +2315143 +4104 +2315136 +1940484 +2122923 +2522667 +2122912 +1789829 +1408284 +1750328 +2247594 +1491655 +1365240 +77683 +2509880 +1319138 +2560576 +133995 +2123222 +1668099 +2123203 +2123030 +2560620 +2123036 +2123084 +40440 +2032420 +594461 +2315152 +1532566 +2289572 +2315170 +2315167 +2560554 +1459472 +2247601 +2123039 +2289559 +2289583 +1415137 +1319083 +2123181 +850474 +1415131 +1348999 +1532503 +2734670 +2771543 +2123061 +779003 +1491661 +778991 +1987556 +2697809 +2123229 +1532523 +2730184 +1269166 +680790 +850530 +1269168 +2003970 +1291863 +936021 +1824526 +514301 +1349010 +594457 +514315 +1459448 +4126 +2123144 +2123149 +1843196 +850509 +2771597 +2289578 +2123142 +2032422 +2522695 +2014515 +1824519 +1532501 +2032407 +594455 +719732 +2560621 +2123093 +2123214 +850505 +514304 +1319101 +2443599 +1459437 +2771654 +2123073 +2771539 +2374582 +1612619 +1319106 +2771622 +514305 +1771293 +1179577 +936029 +1415143 +1269153 +1053279 +1668108 +1459480 +913148 +2123182 +1415176 +2123123 +913154 +1377451 +2456021 +4117 +1687316 +2771615 +1415130 +1380268 +850496 +2289589 +2771594 +1491673 +1668103 +850529 +2560568 +900095 +2560589 +2730185 +2123207 +850511 +913162 +1482830 +514266 +2123216 +2123138 +1811975 +913144 +1532516 +1532509 +1853762 +2076348 +1491674 +2123136 +900096 +1269174 +1301021 +2850975 +1532571 +1269167 +913147 +2247589 +2560566 +1319089 +850514 +594488 +514260 +594460 +594473 +2289571 +1342726 +2560542 +2076311 +2289581 +1532543 +2560579 +2123158 +1843197 +2522687 +850537 +1415114 +514322 +1532540 +2455995 +2374571 +2560627 +1687310 +214578 +2123056 +1319125 +680788 +1702926 +719733 +2430290 +594471 +778988 +1415153 +514272 +133979 +779018 +2315216 +2560544 +2456004 +4130 +1415126 +2455991 +2247599 +2771613 +2123108 +1971989 +2623660 +2032418 +2289575 +2123122 +735037 +1491658 +2032415 +2456010 +778974 +2634512 +1269160 +1134300 +2123246 +2560541 +2430298 +2289539 +2123242 +2634516 +1319084 +2374602 +514326 +1514424 +353684 +594485 +1349013 +2745205 +850492 +133986 +2771577 +2076317 +1179569 +2315166 +514308 +134013 +2560658 +2032464 +779024 +2560688 +1026209 +1269182 +1652477 +1319148 +1349022 +2416189 +1045580 +2315219 +1415185 +297792 +2634533 +514340 +1646261 +2032461 +1037345 +2560682 +2374649 +2374620 +191029 +1026221 +2634546 +1319150 +1209972 +1026206 +2695100 +2374633 +1026211 +1415199 +1026220 +1269198 +2374648 +2273294 +2123258 +475297 +2356897 +2560691 +735038 +500982 +2560694 +134015 +2032452 +1209975 +2374619 +77696 +2374657 +2026459 +2273292 +2274064 +779026 +1655213 +1910750 +1037347 +1026223 +2032456 +2374623 +1491681 +1954240 +1652474 +1971996 +514344 +1646244 +1646273 +2032479 +1415239 +850551 +2315229 +2560724 +779075 +1532621 +2560732 +2560738 +4150 +2522749 +2522746 +2123370 +953081 +680814 +2560698 +1082991 +1062598 +2076364 +1415214 +2374719 +1301028 +1250877 +1972003 +1853799 +1824544 +2315248 +1612640 +1957313 +2560749 +134020 +4156 +2123354 +2634551 +1077210 +514364 +2123321 +2634555 +2374715 +779064 +2522741 +2123316 +2374681 +1725050 +1987562 +2560711 +2123360 +1532624 +994590 +2697819 +2123335 +2076372 +1957307 +4138 +2123361 +2560745 +394563 +2026460 +1687324 +2123362 +2745206 +1459505 +2560702 +2032475 +1459496 +2730193 +1853794 +2430326 +850563 +2742110 +2315231 +2032481 +2032505 +2560705 +394561 +2123403 +2374690 +2308141 +1532640 +2123318 +2443602 +2560712 +1532649 +1415213 +2734674 +2032498 +850564 +2560701 +2560754 +2076370 +2695102 +4153 +1349027 +779069 +1957306 +1179597 +2697816 +779079 +1853792 +594498 +2123381 +2123328 +2522733 +2123297 +779046 +2560720 +432995 +2123383 +1319157 +1415233 +2356905 +2123290 +1121883 +594499 +1077206 +2456050 +2684231 +1725051 +953077 +2123351 +1415216 +2247621 +2560706 +850574 +2560733 +2560721 +2356903 +1532639 +2123296 +191044 +1319183 +191045 +1491701 +1269227 +2634601 +2123532 +953088 +953117 +1824557 +1377457 +1532725 +1668132 +2076386 +1109027 +2560779 +1109023 +77712 +2634621 +1415262 +2274075 +2123477 +1910778 +1910756 +1491700 +2456143 +1910782 +2456130 +2123438 +1998244 +2560772 +1089915 +1532747 +1415274 +2374764 +2707662 +1109028 +2021192 +2456065 +4204 +953133 +2634604 +4215 +1709029 +779108 +2315253 +77722 +2123522 +214618 +2123472 +442254 +514421 +514459 +1491716 +1209991 +2456124 +1209999 +1789868 +1319166 +2123501 +2315305 +2374734 +1532657 +2560758 +514448 +1062601 +1209982 +1109029 +1853821 +1725057 +2560802 +649406 +1972007 +1269208 +779104 +2560816 +1269211 +2123447 +953151 +214605 +2634566 +2356915 +191047 +755989 +953107 +1415312 +1236970 +779107 +514434 +2456096 +1415255 +1532688 +2456126 +953112 +1532738 +2522758 +134028 +1709028 +1532664 +1998245 +1301036 +77715 +1910765 +1349046 +1109024 +2032514 +2456142 +1532740 +2560784 +953153 +2751440 +1482835 +1532700 +2456112 +1089913 +1491699 +1415305 +2456092 +2123506 +953109 +1998243 +850582 +1532675 +77710 +2315314 +2123451 +2456123 +2560799 +514471 +1026233 +1349061 +4198 +755992 +2374767 +2076399 +2560831 +707757 +1709018 +2560792 +514463 +514444 +2123488 +2374759 +953144 +2123445 +353686 +953105 +1415263 +953111 +1349051 +2634625 +2356921 +2456080 +2374770 +779096 +1725077 +2734678 +2123455 +779099 +1179603 +1319186 +1532661 +1532673 +2123491 +953090 +2634618 +1532717 +2076384 +2315254 +2560774 +1089912 +2751443 +2123482 +4209 +2123539 +1957327 +1415257 +1644359 +2374796 +191051 +514542 +1824592 +214620 +953215 +2634639 +1998252 +953185 +1415354 +953177 +2356933 +2734682 +2123600 +2456154 +2456157 +2560860 +953162 +1390885 +2374800 +2315353 +2374784 +2430339 +2560859 +680840 +514553 +2374782 +779143 +719752 +514580 +953221 +1660225 +2560910 +2374793 +514581 +1709047 +214636 +2123595 +1853879 +2123572 +1415319 +2456191 +1390887 +2560900 +2123582 +2315344 +2734685 +4224 +913195 +680861 +680829 +1415325 +1824602 +1179619 +514583 +2560882 +2522791 +680851 +680833 +1532760 +1415367 +2850978 +1532777 +1415329 +1349067 +1771315 +514562 +2123583 +680843 +2374791 +1077219 +1415350 +2374785 +2076415 +2123594 +2123557 +2751447 +514530 +2456174 +514577 +1771311 +514540 +1998251 +2456168 +514578 +514556 +1390882 +1415321 +1532771 +594514 +2356934 +680845 +1390884 +2560857 +1415334 +779133 +2560897 +1532781 +1179648 +1415352 +2430340 +2522810 +2123807 +1972016 +2374819 +134076 +1319212 +459417 +2076459 +1824639 +40475 +1532807 +1291890 +1291889 +2411888 +953237 +1750340 +134118 +594658 +4245 +134039 +1652488 +1491745 +779176 +1824637 +1532863 +719771 +680891 +1319226 +307639 +707759 +1365253 +134084 +936056 +2123662 +850838 +1725097 +1349080 +594555 +1310424 +2101471 +2456204 +707760 +40489 +4243 +2123744 +2123725 +1725093 +1709049 +2026466 +850796 +850848 +594670 +850651 +1612680 +2123691 +2356972 +1250879 +40514 +2123641 +2123732 +2003980 +594526 +2123730 +2123913 +2076428 +664898 +2522824 +2720754 +1459563 +2374869 +1349097 +1612650 +1702936 +2123822 +2123784 +594676 +719767 +2522828 +594543 +850691 +1612704 +850675 +594531 +850641 +594641 +850615 +2739337 +1459653 +850644 +2684236 +779194 +1491733 +2247679 +594630 +2123658 +1269252 +2028220 +594578 +953250 +779158 +2123898 +2730210 +594580 +514644 +2560978 +2356969 +779196 +594568 +994630 +1783023 +2866584 +134112 +1824626 +514614 +2123653 +936052 +2374846 +2560942 +2123802 +2076431 +2123901 +2123710 +1824622 +850608 +2560926 +2289676 +1310417 +2349768 +1532843 +1824631 +594582 +766259 +1532887 +1652485 +4231 +2560953 +719770 +936048 +2123630 +2028228 +1612696 +40471 +2560995 +1612663 +2076472 +1646284 +2247651 +4242 +1291888 +2315383 +134078 +1646285 +850892 +1037361 +1771323 +1459547 +40468 +2374856 +900108 +2247650 +994640 +2076489 +1459575 +2247633 +1026237 +2374864 +2707673 +1824627 +1459683 +850750 +1532810 +1415427 +994636 +1037360 +779165 +2684235 +1459576 +2374857 +500986 +40472 +2021195 +1824633 +2356982 +1853891 +766219 +2771686 +994644 +2707668 +1459530 +730164 +1824623 +1459699 +2866579 +2289671 +850753 +2356968 +1415419 +2247736 +2315367 +953235 +2315377 +913202 +936055 +1365244 +2561003 +1377459 +2247673 +2123840 +40492 +1365251 +1514442 +2026473 +1269270 +2123899 +1319229 +850885 +1612660 +994628 +2123922 +2076439 +850634 +1491731 +2123651 +134063 +2771685 +1365248 +514650 +263750 +1459628 +2123835 +2247702 +1319204 +1491749 +2123851 +2771672 +1459557 +1121891 +594633 +1459527 +1269249 +594558 +1612679 +1532882 +1709054 +2560961 +2076477 +514624 +850865 +442264 +1459655 +2247748 +40494 +2123825 +442266 +2356979 +1853894 +2374848 +134152 +1291891 +40528 +40505 +594626 +850664 +756010 +134135 +1269267 +442267 +850794 +2247671 +936068 +134086 +850720 +1459654 +1301041 +2560951 +2522805 +2315397 +2247738 +1482844 +1725103 +1717816 +134134 +2123689 +1269266 +1725106 +1121888 +779178 +594535 +1037356 +134048 +779150 +1101422 +134122 +850813 +2032533 +1459579 +730161 +850673 +1972018 +850653 +2123927 +2560958 +1853889 +40469 +2247647 +2374844 +2123944 +850742 +1415378 +1415416 +1644361 +1532803 +1532813 +936049 +514628 +1843207 +1415385 +1702956 +2274079 +850747 +1459605 +2123875 +2456209 +850736 +2123761 +1532837 +2032529 +2522796 +191055 +2730209 +372753 +2374867 +2274081 +1291907 +2026471 +1646280 +134071 +719759 +850852 +2123910 +1702942 +1062610 +2374840 +2123897 +2707676 +2076454 +1045629 +1045607 +1109035 +1045617 +2274090 +2634692 +779202 +2634717 +1646307 +2026474 +1045632 +1910808 +1045623 +2058321 +2522867 +77774 +953257 +2123950 +77762 +1532907 +2374908 +40546 +2356992 +289090 +1655230 +2273306 +2374912 +4260 +2416216 +1045613 +2634689 +289089 +1644363 +1045615 +191057 +1910826 +2374893 +1655235 +2374937 +2273312 +2374928 +1646295 +2561023 +779204 +649413 +1644366 +4263 +4262 +2634685 +756026 +2634706 +405133 +426281 +2123992 +1532913 +263780 +2456235 +1403999 +1771327 +2315465 +77777 +214664 +2032611 +1026255 +1532971 +40557 +1532921 +263772 +2443604 +2124120 +2374952 +2315452 +2123982 +1532926 +2374962 +850924 +1532918 +4279 +936084 +2076501 +994669 +372769 +1134305 +2247786 +1459735 +338072 +1789884 +1459773 +2561058 +1415497 +426299 +2058338 +850922 +2247762 +2124046 +2124006 +2315470 +1957347 +134176 +1853962 +1101432 +2124117 +231859 +263779 +2247781 +850992 +850949 +2123990 +2561036 +40558 +1646311 +263756 +2274096 +1532914 +1415476 +1459759 +1514461 +1415452 +394578 +214670 +2032604 +1408303 +1415511 +2076510 +936074 +1415473 +756036 +231864 +2058337 +2058349 +426275 +372765 +2032564 +394583 +907014 +1459781 +2289699 +2058351 +1702969 +2032568 +1532930 +2123961 +2751455 +1459720 +2124015 +1532937 +756046 +2315411 +2374949 +2124127 +2058332 +1349112 +850935 +2058323 +850959 +1459776 +2357010 +2123984 +2123977 +756032 +2124139 +2067867 +2058344 +394602 +2123987 +2247766 +2315467 +2010822 +2124078 +2123981 +2308145 +2247796 +77778 +779257 +994656 +514683 +1725132 +2367444 +2032606 +2561061 +2032618 +2315454 +77780 +2315426 +1415478 +2124103 +1750359 +426274 +1687355 +850918 +1179677 +1725127 +850958 +2124129 +1532912 +756045 +263764 +1408300 +936077 +953267 +394582 +2315448 +1482847 +2028233 +486621 +2866594 +1612774 +766301 +2124002 +432998 +2123996 +1987575 +2374948 +1532964 +779220 +1532934 +2124063 +2124000 +850931 +2124011 +2067859 +779217 +1174482 +1415475 +2357001 +913217 +1403984 +2032620 +2315436 +850995 +1210011 +40562 +1415492 +2456278 +2357045 +2032645 +1415553 +1365259 +1415563 +4315 +2028236 +851055 +1459822 +1533023 +1854003 +2076517 +2124256 +2751456 +2375013 +2374995 +2124386 +913230 +1789907 +2315519 +1459832 +1053318 +851014 +1491782 +203019 +1415544 +2076525 +1687360 +2561127 +1687376 +2058359 +2124353 +1819324 +2124322 +2076574 +2124462 +2357038 +851001 +2522893 +40601 +2058382 +2124385 +2124344 +779270 +2315522 +1210028 +2456251 +2522906 +203017 +936131 +203011 +707776 +756067 +2032641 +2430352 +936126 +2289774 +2375009 +1533011 +231874 +1491797 +1687383 +1789931 +2124281 +77792 +1236980 +851089 +766317 +936114 +2375015 +2076536 +1789904 +1652498 +2430367 +1089937 +907015 +40572 +2032686 +2058358 +2289722 +1058365 +2357050 +2058389 +2026496 +2124377 +1612819 +1415537 +2522904 +1789917 +1053311 +2032644 +2071829 +2076535 +2076511 +1940494 +2009691 +2634739 +2032710 +2032681 +2032737 +2289737 +2076565 +2067874 +2375016 +2247928 +134182 +851102 +2315533 +2420880 +2124411 +2315477 +1532988 +2456279 +1612800 +2561191 +1709093 +1415533 +779299 +2315550 +2375028 +134192 +1415580 +2561173 +4293 +214694 +2741427 +4304 +680900 +1533025 +1853984 +2124496 +1459800 +1153440 +850999 +1532983 +779268 +2247948 +2247837 +1898776 +1612808 +1821402 +2032690 +936130 +2124238 +1717820 +2076559 +1145257 +2561123 +2561119 +426306 +1910855 +1612810 +2289718 +442283 +2308150 +851072 +2124345 +2456273 +2101488 +913229 +2032651 +514711 +936113 +1612781 +1459803 +307660 +1404026 +2124335 +2561179 +1319303 +2315502 +2067871 +2124464 +2124460 +756054 +1053303 +680924 +1533019 +2032643 +191073 +486622 +2374994 +851116 +680905 +2076584 +2124379 +2315476 +936098 +2561146 +1957352 +1491795 +2247917 +1957349 +2315568 +1319295 +1514483 +2289717 +1771357 +2561161 +2124314 +2509890 +40579 +2315531 +2124275 +1811997 +851079 +851069 +40592 +2124466 +2124193 +756055 +1771343 +2751458 +2456253 +1612807 +2315557 +2247918 +2124506 +1853982 +1408322 +2247957 +1687365 +2124339 +1415558 +2124500 +2032718 +2124262 +1612817 +900120 +1459837 +2420871 +1415577 +1491800 +2411896 +1725159 +1811994 +2124380 +1459808 +40607 +1771353 +2561113 +1459806 +2375011 +1709083 +1236978 +2124329 +4332 +2561128 +2124410 +2375021 +1771349 +779306 +2076582 +2032723 +2058362 +2124499 +1532976 +2076548 +1053310 +779312 +2730212 +2124484 +2315549 +2247939 +719775 +2315484 +2375035 +1491809 +1853978 +2374999 +2456301 +1210030 +1037378 +1319301 +2374984 +1210022 +2032677 +2124200 +2247862 +680925 +2315478 +1415603 +134215 +2357059 +756074 +2824666 +353776 +1750370 +2771705 +2375038 +231881 +2561213 +1491817 +2522947 +214711 +851133 +486632 +766349 +1459890 +191082 +40662 +307687 +2824715 +2456330 +2824691 +1646316 +2367449 +851139 +2354121 +779337 +1210039 +353733 +1415602 +1026271 +353750 +353718 +353766 +307665 +77793 +353720 +442289 +2634763 +1415604 +353729 +913242 +2824660 +994683 +2824709 +2367448 +2561233 +4354 +134244 +134250 +2824716 +2124530 +134246 +2634774 +231888 +2850992 +4358 +353719 +1459886 +2076595 +1210051 +994674 +353747 +191091 +353742 +2824690 +900128 +353692 +486635 +353697 +1533063 +1210040 +307691 +1533069 +40679 +953298 +297817 +353691 +2522917 +2824675 +1533053 +1415591 +1612835 +2124524 +766345 +2561212 +307673 +1459860 +134216 +994679 +2824717 +134222 +2124510 +307692 +2522948 +2522934 +2771704 +353703 +40622 +353704 +134220 +231883 +2561237 +953290 +2124528 +307686 +297829 +2634768 +2679620 +2561272 +1179697 +1533082 +1514534 +1843219 +1854019 +486652 +2456366 +1725166 +1237015 +2456383 +486644 +1514530 +2456341 +594716 +1725165 +2561265 +2101494 +459475 +2289782 +1514510 +1365263 +40695 +263789 +1612852 +2124556 +1612861 +363158 +2349813 +2456360 +2561283 +2634779 +40698 +486666 +2561258 +1459899 +2509897 +1237007 +2456371 +1459895 +2247974 +2771727 +851178 +2247965 +1514502 +514719 +459451 +433025 +346015 +338083 +433043 +1174501 +1821428 +1237029 +338090 +1197917 +994699 +1459898 +1101445 +433008 +1854045 +1612896 +1533092 +459459 +2248021 +433031 +2248032 +1459902 +1514525 +1821417 +2456347 +1514531 +1819332 +1174502 +1134340 +1197908 +486643 +1365264 +851208 +851202 +459446 +2509903 +2248027 +2561268 +1134322 +1053323 +459453 +2561241 +1812005 +2289780 +1612905 +433048 +1812010 +737137 +1365265 +2101493 +2561284 +737136 +2248025 +372778 +346017 +1824693 +1037391 +2771735 +913249 +514716 +1071718 +459442 +1821412 +851199 +426314 +1037392 +338098 +2248024 +1121902 +2561269 +2248002 +2771732 +1170841 +1087371 +433016 +2561275 +756083 +1037389 +1121895 +1898788 +134267 +1179698 +2745220 +2561291 +1174520 +1210060 +1237030 +1771366 +851169 +2058440 +2509898 +1236997 +1812008 +2032766 +388566 +2247994 +851186 +2561247 +707785 +1789935 +372803 +2032763 +1087368 +433013 +664916 +730171 +2247980 +1717832 +936156 +442311 +1998267 +459449 +1612920 +2058412 +2739341 +994693 +1612897 +1197934 +1612904 +1237026 +2634781 +707784 +41446 +338166 +41439 +1812021 +41024 +338117 +936232 +1652511 +594809 +41012 +594896 +594856 +2850999 +41451 +433201 +40762 +40945 +134352 +594933 +263816 +594798 +338138 +372877 +263857 +40705 +1612929 +40944 +41138 +1514641 +514727 +433095 +1101470 +594990 +263980 +594983 +2101659 +41350 +307733 +40835 +2028241 +594848 +41175 +40875 +2076645 +263812 +514738 +1514633 +1652523 +594861 +594782 +2851004 +594799 +730180 +41060 +40820 +40860 +40884 +594770 +2866635 +231926 +2101639 +2101612 +2866642 +134358 +936244 +40773 +594926 +2101567 +338110 +433063 +40722 +40979 +134291 +41219 +2101565 +41345 +372893 +1514578 +134283 +134383 +1514604 +594845 +338150 +41173 +433139 +2076634 +263991 +936207 +134297 +40866 +594921 +338160 +594936 +232004 +41207 +40829 +263817 +41244 +40817 +372808 +134335 +2076642 +594953 +394624 +1037414 +1514638 +433178 +41255 +41196 +2101530 +41450 +338163 +1514639 +2101668 +41360 +433097 +1071729 +426321 +338155 +41278 +264028 +231947 +40766 +41038 +41246 +936188 +514730 +134273 +231931 +372811 +41314 +594914 +41343 +263806 +40906 +1652508 +433120 +594967 +40715 +231998 +514735 +263813 +41202 +4386 +1058377 +426336 +41368 +40892 +41300 +426335 +594749 +594989 +372843 +394632 +307727 +433055 +4377 +514733 +2707694 +41441 +1101476 +664918 +426330 +40755 +41298 +1260950 +134330 +41208 +2076641 +77801 +338111 +41275 +134365 +1812029 +40799 +307702 +433085 +263835 +40814 +41438 +41182 +41325 +41430 +41401 +231955 +263829 +433127 +730176 +372827 +41239 +41059 +264000 +232007 +41362 +2866606 +263868 +2101586 +1491831 +41232 +263879 +433086 +433188 +40713 +346063 +594949 +594832 +2101551 +41258 +2101546 +433136 +231950 +231993 +594843 +41094 +433184 +41040 +936245 +263819 +433196 +594868 +2851017 +1514605 +40938 +459492 +40927 +41371 +2101635 +1482875 +263827 +41344 +41136 +231905 +372818 +594801 +372884 +1037407 +40768 +1269321 +324737 +41127 +2866597 +1260954 +1968747 +264006 +41017 +1514626 +936213 +372898 +2101667 +231952 +41124 +1968759 +426331 +2101644 +433083 +231935 +594996 +2076638 +2101517 +2101620 +1365268 +433098 +594888 +1291918 +263824 +936261 +307753 +263897 +936199 +40748 +936217 +40803 +1166339 +41373 +2101630 +40804 +41002 +41238 +594955 +433123 +433091 +1101471 +41409 +594807 +426326 +1037409 +1514538 +41408 +41364 +936195 +263810 +263927 +1514636 +2076625 +594909 +231980 +1514625 +2101643 +2375073 +372908 +1709137 +346070 +2561314 +2357066 +1533105 +1319316 +953312 +2375054 +1533128 +2411900 +994709 +4415 +77814 +1789943 +346066 +1062614 +1101513 +1533101 +779360 +1197939 +1533108 +953325 +1166352 +1415639 +1910864 +2751464 +1533130 +2561303 +1533098 +2561296 +2522956 +1612946 +1789944 +595010 +2032769 +2248051 +264039 +514748 +1260958 +1854054 +1250890 +2375052 +2561301 +1121911 +1933829 +353794 +1533122 +1459917 +1089950 +2561313 +4404 +4409 +2124568 +514743 +2357067 +1260974 +1250902 +2289783 +1250898 +2623676 +2067878 +1174551 +307755 +2124589 +1260961 +2315578 +41466 +2076667 +2634793 +134389 +394637 +1771369 +2124580 +737141 +1533120 +1725176 +1824703 +4421 +936269 +1260979 +433215 +4417 +134395 +900133 +2739342 +1237033 +1898795 +388598 +1087375 +2076659 +779368 +2522954 +1910862 +1910873 +2375057 +514774 +2124740 +2026500 +1386655 +2742120 +2430407 +514804 +2124730 +2289837 +1533158 +1972027 +2124682 +595049 +1179714 +1533156 +595055 +1145259 +595030 +2561331 +191100 +214756 +2697846 +595032 +2289820 +1319354 +595034 +1533186 +2076700 +2866658 +595066 +2076680 +514796 +1459947 +1237036 +2124701 +2124668 +1459937 +514803 +289099 +41499 +134409 +2561324 +2742122 +1824723 +1998269 +1365277 +1824727 +994745 +953343 +2013320 +2308153 +1789958 +1533170 +2248104 +936291 +2456412 +595068 +1291921 +2349818 +2522975 +2124783 +1319340 +595074 +338191 +1310439 +203027 +1491852 +134414 +2837901 +953330 +953337 +2124773 +1771372 +134431 +2430391 +1533136 +1415650 +1053345 +779376 +2522981 +2124674 +1415678 +1415655 +2010849 +2522988 +1365274 +2076707 +1269338 +134475 +680941 +851307 +851237 +2456408 +719784 +779400 +1459989 +405158 +735048 +1053341 +4437 +2837891 +2315599 +191107 +1940497 +41479 +248408 +779379 +851345 +1940495 +2248083 +2076678 +595017 +2289808 +707792 +680961 +994738 +1053356 +2013319 +953334 +1319362 +1400681 +1053336 +2076682 +41488 +1668188 +1702993 +2430390 +2561334 +851248 +756087 +2430396 +442321 +2522969 +2430401 +2697844 +851294 +134424 +1687391 +936287 +1415675 +1533181 +134430 +77823 +2522961 +1269329 +1789960 +1459951 +2124676 +2248076 +779401 +514762 +2124641 +134449 +134432 +1319374 +2124623 +2866664 +2289836 +2837898 +1380306 +913264 +134451 +779396 +779377 +2026501 +851343 +756086 +2456414 +1459990 +2124683 +1380304 +851280 +1349127 +2289818 +2522973 +2124694 +1491845 +1349126 +1843239 +1319373 +1053357 +1459964 +134406 +1957370 +595052 +2289811 +2124657 +2076695 +2430395 +595072 +514793 +1415680 +264065 +1843234 +680942 +514806 +1291927 +900136 +1843240 +232022 +1319325 +1053338 +2522968 +1771392 +2349822 +1533216 +1269360 +2456479 +2523000 +2124813 +1491875 +779473 +1319414 +191119 +2430421 +191129 +2315626 +4442 +214773 +2076738 +1533222 +2367452 +1482900 +1491896 +2076725 +2523005 +2289908 +2124820 +2315616 +214778 +1319408 +2561383 +1533219 +1668193 +1854078 +1533189 +2456437 +1053371 +4464 +2634802 +2522990 +1083000 +442332 +1077225 +2561365 +1210073 +1491886 +2289850 +1972032 +779459 +1415686 +2456453 +1145262 +2456435 +1349151 +779405 +514821 +719787 +2430432 +779446 +1349148 +2430431 +1083010 +913266 +1668209 +2561393 +203032 +779440 +1824760 +475332 +1071745 +779452 +779404 +2430436 +1854085 +191116 +735050 +2357081 +1771383 +2561379 +756091 +1771377 +2076730 +953370 +2456469 +2289911 +1269356 +442333 +4465 +2076733 +913280 +214771 +953356 +2010858 +442325 +2289848 +475335 +2430444 +779419 +1491868 +214775 +2067887 +1514661 +595089 +2561351 +2523039 +442352 +514827 +41508 +134481 +1533202 +2357079 +1491910 +1269351 +1390894 +4460 +1771397 +2456455 +953354 +1415711 +1771386 +1482898 +1771387 +4463 +2014525 +779478 +2456478 +2315611 +514823 +2315620 +2751467 +851370 +1415690 +2248106 +77832 +2456459 +1854082 +1415708 +1083004 +1062641 +913296 +2357082 +514882 +332864 +953393 +2124904 +2561415 +2289928 +1854109 +953381 +2076775 +1062637 +1687397 +1854103 +1491920 +779491 +1319417 +1824761 +363166 +1789965 +900177 +2124874 +2124937 +1533249 +4469 +2739344 +2076787 +2456515 +1491918 +2032809 +779489 +332850 +2076750 +1415745 +363168 +779507 +2430448 +756104 +1533231 +1533259 +2124910 +2456517 +363176 +1668221 +1854096 +2076755 +2456495 +2289923 +2076780 +363174 +1789963 +2289933 +779500 +900173 +2523076 +1725192 +2076748 +514861 +2014526 +2456513 +900175 +2561399 +1415761 +953374 +1415749 +779499 +1533239 +4466 +2315650 +2124876 +1062636 +1415727 +1771413 +1771422 +1854099 +2697853 +737151 +1404055 +1646325 +2124850 +332837 +1771420 +649425 +2124829 +2076790 +2315636 +1789968 +1319436 +2456493 +2067892 +851372 +1062642 +2357085 +737153 +1415736 +2289922 +1789981 +737152 +779498 +779568 +2124972 +1789984 +2124994 +2697856 +851450 +1026280 +2289960 +1062657 +1824838 +2561503 +2125042 +779569 +2124992 +1062656 +4504 +2315667 +2125079 +433230 +77873 +1533275 +1854133 +1174554 +1415811 +2375121 +1415852 +1380325 +1613012 +1089972 +2315653 +297842 +994779 +913320 +595106 +1824792 +1491940 +232040 +4492 +2561530 +1460012 +1709160 +2851029 +1089971 +1415816 +1514665 +514905 +779572 +994788 +779574 +913306 +514889 +779520 +1415806 +214829 +134484 +2032835 +1415817 +1145268 +2076801 +913303 +1134352 +2456527 +1819339 +2523101 +953397 +2456554 +433226 +1086143 +41515 +1824825 +2707706 +2456565 +1821442 +2771744 +1996122 +1514667 +2125052 +1491964 +514907 +1460013 +1460017 +1026277 +1491958 +2420903 +203037 +2523105 +2561491 +2456570 +1089969 +1210092 +1415805 +1415843 +1687415 +1482909 +2124996 +214809 +1613009 +1854118 +1319447 +2634823 +913304 +1824829 +1269384 +953426 +2125047 +1210095 +191148 +426353 +1854158 +41511 +1415772 +1854159 +1089983 +2125070 +1644373 +332873 +134512 +851426 +779562 +1260983 +2058470 +77876 +2547884 +1459998 +1053408 +1415845 +2076803 +1655258 +2076798 +1491961 +77874 +2076817 +851402 +2561520 +1898802 +1026281 +1301060 +2124959 +1415801 +1533331 +1854134 +1957389 +2124988 +2456528 +307757 +426348 +1415848 +2067908 +2289959 +1319448 +1053385 +1053389 +2561474 +41535 +1613020 +1947557 +2357101 +1491950 +1415828 +2125098 +851405 +756128 +1482923 +1824820 +214825 +1053406 +2125045 +2561496 +595095 +4486 +1533321 +1415851 +1725201 +1460001 +2289957 +1404064 +1821449 +514909 +1533296 +394642 +2456540 +2274113 +2851034 +1533307 +191157 +2032841 +1750391 +953405 +1460037 +1854139 +1824817 +1482926 +779524 +1824822 +2248134 +913329 +913319 +913327 +2561502 +851395 +1415822 +2561483 +2032820 +4493 +307759 +900204 +4489 +77885 +433227 +2561479 +1460021 +1415775 +2124957 +433235 +1460008 +913328 +1089964 +214839 +248415 +4482 +2032811 +2032849 +707798 +363177 +4558 +2375167 +2125161 +2634844 +1709166 +1709168 +2561539 +4529 +953431 +1319466 +214852 +1687453 +2561561 +953453 +779615 +900205 +4536 +4549 +2125130 +2125168 +1819348 +1771453 +1053419 +779592 +2561554 +2523118 +2125182 +953440 +1687441 +1824851 +1415866 +953451 +2125166 +1053414 +4554 +2697864 +1854166 +2125180 +514921 +2125178 +1269388 +1687438 +2634830 +649429 +2125142 +1660281 +2125133 +2375164 +514914 +1491991 +1824865 +2375157 +2866681 +1090002 +2032863 +1709162 +2067917 +2456587 +1668239 +756141 +2125108 +1687426 +1854178 +1482937 +1210132 +2561569 +1824870 +2273318 +719796 +214844 +1179738 +1687447 +953449 +191175 +2125196 +1415868 +2523108 +1687425 +2067919 +779596 +2561568 +4555 +2561531 +1089999 +4512 +2125132 +2125200 +2076841 +41540 +2634841 +756146 +1824873 +1824889 +2561579 +2125185 +1415880 +1090006 +1824845 +756154 +214849 +1824871 +1725234 +1687455 +1687429 +1053421 +2375161 +2032867 +2523111 +1026283 +953437 +1404076 +913336 +4551 +2032865 +1709165 +2125162 +1824859 +2076842 +2125175 +514931 +1987584 +4526 +2125137 +1491977 +1646330 +1687431 +2032886 +4515 +214858 +514928 +1492062 +1404110 +953475 +2032899 +1533392 +1090016 +994816 +1533384 +2684245 +2741474 +2071836 +2032952 +2290015 +2125212 +756158 +2125293 +1101528 +1386662 +1404112 +2423014 +1771488 +2684243 +1492012 +1533403 +1771497 +2315700 +779659 +2430491 +2697866 +514964 +2456614 +913354 +191179 +2125353 +514957 +913347 +134531 +779676 +2280883 +2375208 +2248143 +1492024 +1404087 +681038 +1771467 +77912 +1062666 +1533378 +994813 +1415927 +913380 +1972048 +1179762 +1771466 +41550 +779633 +2707709 +2125240 +1415918 +2289982 +1319483 +779638 +2430518 +1415892 +1460059 +1349173 +514967 +2032938 +4566 +748597 +1984645 +953466 +2058475 +514997 +514963 +2561603 +2125308 +595122 +2125359 +2248152 +2004001 +994818 +1940521 +2125222 +2003998 +2561613 +1533377 +2523135 +1269397 +913377 +134523 +2280895 +1415919 +2456602 +1145273 +1492022 +2032920 +1053438 +2456616 +2280903 +936339 +1053436 +2289989 +4571 +2523134 +851467 +1053459 +2741470 +1514693 +779669 +2125211 +1319481 +1492043 +2290040 +1492065 +851481 +1310445 +953468 +2456618 +2523148 +994808 +953480 +2290036 +994809 +1349171 +2523127 +514970 +2315707 +2734707 +514944 +681036 +2032918 +2125204 +1210138 +913384 +2634852 +2771745 +2741450 +1533385 +214877 +2315706 +1533401 +2290003 +1404095 +203045 +1514690 +1062665 +756161 +1646338 +1380330 +4574 +1062675 +2125265 +1854220 +2067920 +1812068 +459511 +1613037 +994814 +913371 +2125280 +1053463 +2290025 +1492063 +2357119 +2561609 +1492025 +332877 +1687461 +2430505 +1824893 +1613026 +1404088 +1492080 +779674 +1415924 +1460058 +1972041 +730183 +1377474 +1972042 +913348 +779680 +1950410 +2125266 +851453 +1269396 +459512 +2516675 +1269392 +191188 +2730230 +1957417 +2456620 +2032946 +1957407 +1950409 +4569 +1533357 +1062674 +2742127 +2032915 +681025 +1053425 +1062661 +1349162 +1319474 +2523141 +595121 +779661 +1972064 +1415883 +2058483 +514987 +134530 +1613033 +681053 +779690 +1492037 +1533373 +913367 +913351 +2125287 +1109054 +2125228 +649436 +779694 +1319489 +1415887 +1514682 +1910888 +134543 +1660289 +851542 +515006 +1898808 +2561685 +405169 +232056 +232073 +2456665 +1613106 +486686 +1460071 +2375270 +936388 +1179769 +1843264 +936379 +851536 +134567 +994854 +1197966 +1660290 +1533425 +1415947 +851524 +1053470 +1514699 +2695109 +1533422 +2032968 +1377479 +1179770 +936378 +77931 +851513 +851543 +1174565 +681061 +1174562 +1071761 +1319500 +2357150 +1109058 +214889 +515021 +2058504 +1237070 +2125409 +595173 +913392 +595201 +2695110 +232077 +1533435 +2443620 +134562 +2375218 +41574 +426357 +515019 +459522 +2375267 +134561 +1514697 +664935 +1613076 +353812 +851523 +1237065 +2561653 +338214 +1210148 +1613092 +459518 +203053 +2076903 +214903 +289106 +936361 +307777 +515005 +134560 +232069 +2456640 +1460114 +766414 +2125372 +913394 +2523175 +766412 +595193 +595194 +1109055 +41584 +2509937 +4594 +2697871 +2058502 +1613093 +1533466 +2357133 +2688995 +779703 +1086147 +363191 +1533485 +1460128 +1783047 +1709180 +363193 +2523197 +2058489 +1533479 +232085 +2076886 +851540 +2697874 +459534 +1026291 +936401 +1319502 +1086146 +134585 +2290057 +1090027 +595197 +1613045 +1613132 +2705137 +1365285 +936348 +1062681 +2707717 +1166367 +1947561 +1613066 +2274120 +994852 +2076873 +2248170 +2308162 +1482946 +2866696 +2058496 +2456659 +486693 +1415954 +372942 +1652529 +1037433 +1053475 +2315716 +515022 +1166372 +2734716 +2697879 +2032966 +214886 +1854235 +1482944 +353813 +442388 +1533437 +41582 +2032975 +2375260 +1310446 +2032974 +994834 +2032972 +1237074 +2375276 +1613072 +2771755 +1380344 +1533419 +372929 +500995 +459533 +442385 +405162 +2076887 +730184 +681062 +2290072 +1771499 +2076888 +2456657 +595168 +1101537 +2523177 +1365287 +2058497 +2076871 +1613158 +2125417 +2523203 +1365286 +1613121 +433249 +2561645 +1613085 +2523198 +913391 +2290047 +2375232 +232066 +681064 +307765 +338215 +1101567 +134644 +936414 +1898831 +2125492 +433267 +433253 +1533492 +2248235 +1090044 +1415960 +1821467 +1174573 +1101589 +2509947 +1821459 +2125437 +1053488 +2125425 +1197978 +1237084 +1821458 +1613218 +2076906 +1613220 +595215 +442392 +1083026 +1533502 +1898827 +2248239 +1210152 +1101566 +1053495 +2248254 +1812092 +936418 +994876 +1843267 +486697 +1415959 +1051456 +1613205 +2456676 +41654 +707811 +681067 +264108 +1709196 +372956 +1087393 +2076909 +433288 +2125481 +1237105 +953502 +994902 +1237109 +1613189 +2248252 +851576 +134641 +2021206 +851629 +2248229 +405181 +595221 +1377482 +1533489 +851603 +442390 +191196 +1051468 +459606 +2456670 +2058514 +1087387 +994897 +766423 +459614 +232097 +338218 +363194 +1783067 +2248269 +2561691 +1843272 +2248231 +134634 +1404117 +1198003 +1090043 +1987592 +353820 +1821462 +779707 +1090052 +1197984 +1898825 +1408354 +1492097 +1492100 +2076910 +394656 +1460146 +2509958 +1613203 +851620 +1197999 +1237097 +1821485 +1812091 +232094 +2248209 +459599 +2509948 +1783055 +2248201 +2248224 +595214 +2125419 +2125423 +203062 +994912 +851609 +459590 +459583 +41650 +1087403 +433260 +1101573 +2367459 +1071771 +1090047 +1533496 +1460136 +2547890 +41645 +1197979 +1613231 +1051470 +2248248 +1237113 +459613 +1703024 +1460174 +1037453 +1533532 +2456759 +1179807 +2456704 +1237125 +134723 +1179804 +953514 +191215 +994929 +851663 +1533592 +1613278 +4630 +1051474 +2125654 +1703005 +2125630 +1854268 +913414 +851684 +851674 +1179794 +2125551 +1101598 +2125652 +1237116 +1090057 +41674 +1812100 +1996157 +1053503 +2308163 +4628 +1460194 +2125659 +2523260 +913415 +1058418 +2456719 +1750411 +41657 +851732 +2456742 +1492128 +2248353 +1824934 +1198033 +1533561 +2375309 +851693 +2248329 +1174584 +2866740 +2561698 +779713 +1812105 +1771519 +1771513 +1854271 +2561711 +1854279 +2315741 +1051487 +936432 +2623687 +2125593 +1037455 +2290089 +1898846 +779723 +1812101 +1996125 +994915 +1153489 +77938 +1237138 +2456717 +851661 +1492126 +2866721 +851690 +2076915 +1400701 +779741 +2248342 +338234 +2634891 +2125617 +203066 +1725259 +1071790 +4615 +1996127 +851730 +2357162 +1725258 +851660 +1062697 +2456734 +2248321 +2509975 +2420917 +913411 +459623 +2456706 +191202 +1783070 +1783082 +1613260 +1514751 +1613307 +1174581 +1613310 +2430533 +851700 +2248328 +134648 +4627 +1134367 +191203 +2679626 +1071789 +2125528 +1365292 +1083032 +1250918 +1349181 +2375284 +1613284 +2456698 +2420911 +214913 +134674 +936437 +1492102 +2248333 +1824933 +2456743 +2561695 +1854288 +1898845 +913408 +2523251 +232107 +1166387 +134654 +2456724 +232124 +1613249 +338242 +2623689 +1613247 +1703029 +851707 +1533530 +2315742 +1134373 +1996128 +994928 +1750413 +1179789 +595230 +2125537 +2315735 +1237126 +1533577 +1824941 +2290094 +936433 +1514752 +1071791 +433305 +1898844 +1533576 +1514750 +1854267 +2290084 +1613297 +779716 +2125586 +1771524 +2430534 +2125660 +1613309 +1933835 +2851050 +203074 +1533550 +936440 +1051476 +2071840 +2561730 +1514730 +2456696 +2547893 +1071792 +214909 +2125661 +203071 +2866719 +4623 +1687481 +851711 +2561707 +1071780 +851709 +372963 +1237160 +766431 +1153503 +405203 +1703032 +1812121 +1783094 +1898853 +394667 +953520 +338252 +2523275 +1071827 +2248386 +2125687 +1153524 +405220 +2866770 +1071839 +1166405 +994937 +2009700 +232135 +1071830 +2248390 +459663 +2771765 +1071851 +41713 +2771763 +264127 +1790015 +1514761 +1071848 +851738 +2248389 +1771533 +1198058 +2561746 +1051492 +134762 +1087422 +1812137 +2009708 +1071832 +2510006 +2751484 +2707723 +1377489 +2430536 +1854322 +2851053 +2771762 +851752 +1460203 +1166402 +232137 +2509996 +1071847 +1613315 +1153500 +1174594 +1237143 +2734723 +1812114 +1071849 +2509997 +1404120 +1400703 +1153508 +1812156 +1783091 +1533595 +2456813 +1071876 +1237162 +1198034 +1237148 +405219 +1153493 +1821515 +459642 +1460199 +1153515 +1174596 +1153522 +2561772 +2771831 +1771558 +2561771 +2838015 +2076970 +408801 +1051525 +2456849 +1166443 +2456836 +1703039 +408802 +1812200 +2058531 +2771803 +2838012 +442411 +2516689 +1261012 +1153596 +2771800 +346114 +1153601 +1237181 +1153607 +486719 +1898860 +2771835 +329282 +1533609 +2013340 +1790051 +2076953 +1854332 +1153585 +1153569 +2771824 +1198084 +203101 +459694 +2021209 +1613342 +2456855 +4636 +1854331 +2837971 +1824951 +1790050 +1087427 +338269 +1790022 +329285 +2430572 +1058434 +2125697 +413234 +1153570 +1058437 +2423026 +1166427 +394672 +2510014 +2456840 +2456820 +1179822 +1898858 +1533599 +2561777 +2248404 +2014530 +2771852 +2510022 +1051520 +2751485 +1153581 +459689 +1854349 +191226 +900226 +2456863 +1153591 +1771583 +2349845 +1166429 +2771841 +203106 +1771574 +779750 +1771540 +2076989 +401439 +1812211 +1153564 +1166407 +2837974 +338267 +332899 +1854333 +248422 +1153571 +203104 +2510033 +1166408 +1824948 +2125696 +1166441 +1237168 +1053510 +756187 +459684 +2771832 +2771833 +2838011 +1166413 +1898857 +2561761 +2456861 +1261013 +1198088 +2032996 +2076985 +2771856 +1771634 +994967 +779749 +1613334 +426374 +2456835 +338275 +2456859 +2076986 +1854324 +2248406 +4638 +1771623 +346108 +1058439 +2837948 +2837962 +1898865 +1174611 +346110 +1613356 +1812212 +2771772 +1153535 +41717 +1058433 +1153608 +1198078 +1854334 +907042 +2771793 +1771630 +264144 +338290 +2014529 +41721 +398613 +2837963 +2315750 +595241 +459669 +1812198 +2771810 +1790032 +1087428 +2248393 +442409 +1153576 +1898861 +2510013 +2315761 +1771587 +2771836 +2771771 +372973 +2315760 +394677 +2771914 +2771866 +1051510 +2125725 +2523312 +2125815 +1492158 +2561795 +2523320 +1145299 +2033025 +953542 +2697897 +1086158 +515053 +1533623 +418797 +719811 +913417 +2357179 +408809 +2523322 +4645 +426393 +2125808 +779771 +2125759 +2456866 +681087 +953535 +284621 +1158936 +1250931 +1819359 +2125768 +2125834 +1709210 +2315764 +1210191 +1687502 +1824964 +779788 +1687507 +649440 +779789 +779799 +2125791 +475367 +2315762 +1613360 +2125747 +2033031 +2125779 +1090062 +1854375 +953532 +1415999 +2125811 +2125775 +1703043 +913423 +994978 +1109074 +2125751 +913418 +2357182 +1771640 +2357190 +248429 +2125787 +1492154 +2125807 +408813 +475375 +297853 +1349185 +1687532 +2523321 +248428 +1790056 +442417 +2033044 +1687511 +442415 +1854372 +1819360 +475370 +2357193 +77982 +2077008 +1492156 +2125773 +1824962 +1053521 +2101709 +2561787 +756192 +2561809 +1987595 +900228 +779776 +475374 +2561814 +413258 +1687535 +1824963 +1533654 +779773 +2357186 +2248410 +77990 +4644 +77988 +2125835 +442426 +1058445 +78003 +433348 +1062735 +459703 +1166460 +203114 +2125916 +1668281 +2125876 +2851055 +2456890 +1761296 +2510078 +1646347 +2456908 +2866787 +900230 +1250941 +1492169 +191247 +41733 +2634934 +2456885 +1854417 +2866805 +1771645 +2125864 +1166478 +459727 +459714 +1460224 +442429 +264151 +1790074 +346131 +2866792 +1950413 +486733 +1460223 +1514782 +2125875 +1237185 +2510061 +232156 +486729 +2510086 +2866777 +2523351 +2751489 +1492162 +2456883 +953545 +1910919 +2523347 +2866841 +1198115 +2125901 +41746 +433340 +2866850 +913436 +2547897 +1854396 +2623696 +1237195 +41734 +1261021 +1725301 +459698 +1771678 +433339 +1812240 +332914 +681102 +2866775 +515064 +2456886 +426400 +459711 +329288 +2125860 +1053541 +2866849 +1854403 +2523329 +2248421 +1166479 +1237192 +413269 +595249 +2013346 +1401985 +1166474 +342643 +232148 +913433 +1761294 +353829 +77999 +2510071 +459716 +459702 +1687542 +346132 +332911 +1790078 +2004006 +248433 +2248419 +459722 +248435 +1761293 +1342770 +1198126 +1121955 +1153643 +2430599 +1771649 +1771683 +1166471 +1174618 +2866821 +442428 +134820 +421526 +1771661 +1854395 +2510067 +2561831 +1083035 +2456876 +779824 +756198 +1533740 +1179874 +1854445 +1709223 +2290140 +1492181 +2561888 +1533739 +1725313 +1761317 +4687 +2456967 +1109084 +433355 +2510116 +418805 +779832 +1998294 +214955 +2315796 +2523356 +1812272 +2125961 +2125957 +2026518 +1812265 +1761322 +394702 +2634948 +779835 +1613386 +1771698 +936476 +1077238 +1761326 +1533717 +1153675 +1153662 +1750435 +2125978 +2125955 +2741489 +413288 +2280912 +1053558 +2561854 +1812268 +1950414 +1153671 +1790091 +214947 +232166 +1492176 +2290126 +214944 +1166491 +2456983 +953558 +408822 +1158952 +913470 +1812256 +2561866 +913487 +2125927 +2510087 +1790084 +913477 +2456982 +913462 +1153653 +2125943 +1533710 +1145310 +497005 +2634962 +418804 +1319544 +394712 +2523365 +329289 +1416045 +913449 +2125917 +1237202 +2077021 +2367465 +2561886 +413279 +1058449 +1062739 +1416048 +2021214 +2430616 +779810 +459736 +2751493 +442438 +953557 +681108 +1790120 +1790093 +1460235 +459728 +1153661 +681112 +2125953 +1790117 +1077239 +2510091 +394709 +1179866 +779826 +2125925 +1668302 +264154 +1725308 +1393564 +1854460 +1210250 +2430624 +418806 +2745248 +4679 +2634952 +2523359 +2456946 +994992 +1771696 +2125986 +1210230 +1533709 +398634 +2510105 +214951 +1053555 +779814 +2634949 +779825 +1145308 +433350 +2866861 +353831 +1660306 +433367 +2033049 +2430610 +1824996 +1854449 +1790083 +2561870 +2634945 +851797 +1898877 +1613383 +1179872 +2561892 +1416035 +1198138 +1261029 +1533716 +1790109 +1910931 +681110 +394704 +1613379 +1668291 +1771715 +501005 +1933851 +1771731 +2125966 +1166485 +1725321 +1533725 +1087431 +1771691 +214950 +913454 +1237211 +475394 +191305 +459852 +408826 +421549 +214969 +346231 +2457022 +501035 +1261054 +459779 +388625 +418835 +1166539 +1051542 +351039 +418822 +248453 +41800 +2510133 +1771733 +1790145 +1237231 +442440 +1790147 +418816 +1179898 +1153702 +2510126 +2635027 +2457092 +1145325 +2457028 +2457078 +413370 +232206 +346214 +475439 +497016 +413319 +413323 +486768 +1533752 +357720 +1291953 +501030 +248459 +1790166 +346233 +1933856 +264187 +264164 +346234 +1646349 +1492191 +707823 +332924 +413295 +475413 +1210262 +1613404 +433383 +413334 +2457013 +442497 +1179905 +459859 +486751 +1790167 +1166543 +459834 +413312 +442489 +78030 +191293 +2510162 +2010885 +1261035 +2634976 +2457080 +232218 +459769 +2430634 +2457015 +413302 +134869 +41768 +442492 +363211 +134839 +486746 +486799 +486764 +2634989 +2561895 +1158961 +2423047 +1613408 +214967 +413337 +203131 +401472 +357728 +413353 +203138 +1790159 +1854476 +78024 +1179897 +681125 +497018 +41776 +737187 +1854486 +2457049 +2734729 +1179881 +442491 +745673 +2457118 +486835 +1854488 +4694 +1261049 +401465 +1179887 +1492186 +41779 +1725328 +1153693 +2457085 +851839 +1210254 +346238 +681126 +351026 +413351 +433380 +41797 +1237229 +2457041 +486837 +346154 +401462 +501022 +413376 +501007 +232224 +719825 +475433 +413349 +134832 +408832 +4702 +1812288 +442448 +1771749 +1771755 +1854466 +232214 +346212 +413384 +442458 +1910973 +413358 +2634978 +442474 +2510158 +2510171 +1101609 +748599 +1153714 +707826 +232212 +413401 +1158969 +2635010 +459816 +1910956 +442443 +1790172 +1166551 +1261046 +413364 +232193 +1158968 +342670 +475396 +1898884 +1790127 +383625 +351037 +501040 +1109087 +1166509 +4693 +1153705 +2457043 +497014 +1170892 +1933859 +475423 +1790137 +2457163 +501053 +2771955 +2430637 +913517 +1166572 +1761343 +2751515 +1771803 +913523 +2457159 +1790198 +2771943 +1210286 +1179906 +2745262 +442518 +497036 +2734730 +2457127 +1771832 +1825010 +2457149 +1761344 +1771777 +442500 +1854503 +394764 +394746 +1062786 +1053571 +401480 +1179913 +1771768 +1910981 +2457194 +1771788 +2457167 +2280913 +1771793 +2751507 +2457154 +2457190 +913508 +746135 +1210283 +1790225 +1771787 +2635047 +2126000 +1771792 +1790178 +2771964 +401496 +475449 +1812318 +401489 +394773 +2457182 +442499 +2745256 +2561912 +1771767 +1158996 +401506 +1771762 +1170900 +1668311 +2751517 +2457201 +442512 +2771977 +1910982 +1170899 +1771789 +1771799 +2457164 +913513 +1790208 +1761332 +1179907 +1109089 +426429 +1825012 +2375340 +1761334 +1790187 +2077023 +1145341 +2635110 +953585 +2851069 +2457308 +1159007 +41814 +1153756 +2423055 +2430697 +1771861 +779853 +342693 +1492233 +426449 +191333 +995011 +779869 +1145372 +2772000 +2430690 +1053590 +78043 +1910988 +1179974 +851854 +215012 +264210 +4715 +2510192 +1790272 +2457267 +501055 +232244 +78044 +2457372 +2510191 +408871 +1771853 +1179948 +214985 +1145361 +4749 +442524 +332937 +486853 +1533846 +2635115 +2367466 +1179947 +264217 +248473 +4713 +232251 +1790247 +1790295 +1210315 +78054 +1058453 +953602 +134887 +442551 +2375359 +953592 +2457217 +1825025 +1790250 +2375355 +1790300 +191346 +2457420 +401530 +1179946 +232262 +2523408 +401532 +4746 +475499 +1210345 +1957440 +1145360 +2772009 +2457243 +1319552 +1533793 +2430702 +1492220 +78090 +2635066 +1145365 +408890 +1492235 +346261 +2457360 +2457320 +475465 +1533797 +342691 +413437 +191337 +953607 +1109095 +779865 +346252 +408894 +1761383 +232242 +2457268 +134888 +332932 +2457359 +2561936 +2423056 +2561960 +1771875 +1646350 +2430698 +1145378 +1460241 +1145364 +426440 +1790283 +1179987 +1166577 +2510189 +1210308 +459888 +779851 +475494 +1179970 +1090112 +1771841 +2315809 +248479 +2561929 +2457389 +1062831 +2457382 +913552 +486845 +2457376 +1237243 +2635091 +1771843 +1854530 +2457237 +1210338 +214986 +1145398 +1492226 +1771835 +779860 +515088 +426456 +408886 +1026298 +426447 +203156 +2457280 +408882 +2772010 +2523398 +78062 +2126005 +78096 +1854515 +1210389 +913564 +248475 +1533807 +746141 +1210299 +1825039 +433400 +1771888 +1179952 +1492242 +2457408 +2077028 +1090106 +1761369 +1854572 +2457231 +1210333 +1062793 +1121963 +1210388 +408869 +2635120 +2772005 +2290187 +1790279 +1090103 +1613414 +2423057 +2457361 +1393573 +2423053 +1790258 +913527 +2635100 +2523371 +1210319 +2457410 +4722 +264212 +1533844 +2561955 +2290200 +1533833 +2635056 +2290193 +1660315 +401540 +442526 +2561926 +1053597 +475459 +1109094 +719830 +413419 +41816 +1533787 +1854531 +426435 +1854520 +851860 +2635059 +214992 +1210314 +1790255 +1210379 +1053598 +2561950 +78041 +2290164 +2561945 +2315817 +2635089 +1761398 +1391754 +1210321 +1153745 +442541 +78088 +851853 +1210387 +2561944 +2375352 +191344 +1210310 +1062817 +2457258 +2510200 +1533794 +2771984 +4719 +1911000 +1761390 +953604 +329304 +1646352 +383638 +1825058 +2561975 +2561978 +332952 +1771922 +2457506 +2635133 +426482 +2457455 +1180001 +342716 +2561994 +433414 +394873 +913578 +232275 +1790374 +1854621 +1761436 +707827 +1145430 +2707735 +2430724 +1771938 +1210421 +134903 +501056 +1210395 +394868 +1145436 +1180004 +426475 +2033054 +2562011 +1911038 +2010904 +1062841 +1180055 +2457493 +41836 +2457470 +2562017 +1761424 +1854627 +1393581 +1159035 +41817 +913593 +953619 +1053613 +398650 +134909 +1911039 +1145415 +1854605 +1153757 +191353 +2510207 +442570 +1854589 +215030 +413450 +2430739 +1145427 +332954 +2021222 +418867 +433411 +1159016 +1145423 +401551 +2457522 +1210452 +2430715 +2457472 +2430728 +2523417 +1180042 +2561969 +1170944 +1843318 +2077042 +2010897 +413456 +248487 +191355 +1790331 +913583 +2430743 +2457519 +4760 +4756 +1790349 +1174641 +1771966 +1790327 +1166584 +2561995 +394855 +1198207 +1170933 +191348 +1210451 +401546 +2457431 +1210455 +1210430 +1170920 +2457495 +1825080 +1210433 +442567 +1153774 +215034 +346278 +1613429 +1825061 +1854595 +1062853 +4757 +1911037 +486866 +1159031 +248490 +134905 +353841 +442587 +2562024 +1771927 +134901 +1090118 +1911029 +1790350 +248488 +1687556 +1198208 +1159017 +1145407 +1911031 +426489 +2562002 +1825084 +2457499 +1790348 +215015 +1825085 +1825081 +1771985 +1179998 +1790329 +2430731 +2457485 +1210397 +1170942 +2430712 +1790363 +433410 +2510208 +1179995 +1771981 +1668317 +2635151 +2635153 +1210405 +2457478 +1933880 +1514801 +1087447 +1087443 +41842 +41857 +433480 +2277843 +2285511 +2375383 +851908 +357776 +1174747 +1750447 +851871 +1237305 +1652551 +2248599 +1984662 +1613516 +1843354 +2375390 +232298 +995070 +1174717 +2077063 +433482 +2248504 +2248581 +357759 +2058550 +2248573 +1198225 +851913 +459952 +995062 +1174676 +501060 +2367483 +433579 +2248565 +2077073 +1237269 +2248583 +433533 +1237303 +852014 +851953 +2349870 +2101753 +1812367 +1198311 +1153802 +433471 +1261076 +2248541 +2248460 +1898921 +2248572 +2058604 +2367514 +459958 +433498 +232301 +2077099 +1514829 +1174687 +1750455 +1121996 +41868 +2058567 +2126049 +1825086 +41884 +2248520 +433443 +851892 +2349881 +2058633 +41885 +1087463 +1174716 +1460347 +913602 +2248670 +2623705 +2248634 +1051556 +2058609 +2077076 +2277826 +1652541 +1087434 +1514870 +1898925 +2058602 +1843398 +2838061 +2367516 +779885 +2033060 +1898915 +1514831 +2623718 +2349867 +2349856 +2126026 +1087464 +191360 +851997 +459913 +203169 +2058555 +851992 +433551 +1843323 +1772001 +1898941 +2248521 +852011 +2248552 +1153798 +2367506 +2058616 +433493 +1198241 +203180 +2058596 +4762 +851977 +2101726 +433463 +2772033 +1174702 +373001 +232287 +1037464 +2367505 +2077070 +1687560 +2349874 +995069 +2623728 +203187 +41878 +2375400 +1174729 +2349894 +1898946 +2290213 +2277841 +1460277 +324749 +433568 +2739355 +995066 +2077055 +2838063 +2248566 +1898903 +372989 +2357218 +2367499 +1703049 +357767 +1843366 +851881 +433486 +1460334 +2375382 +2623731 +1198266 +459972 +2033057 +1843344 +2623700 +2126020 +1121995 +2058576 +1237316 +851891 +2248645 +433457 +851897 +357785 +2562036 +1101622 +2274129 +1237261 +459959 +357787 +1898960 +459917 +2623708 +459912 +2126071 +2290220 +2248558 +433495 +1174667 +2077110 +357781 +41854 +459951 +1514828 +1087461 +2285504 +1198252 +2349865 +1898927 +1514869 +1198271 +2248638 +41839 +1843397 +2248576 +2315833 +907052 +1514808 +459921 +372988 +995075 +2416220 +2367498 +41844 +2375395 +2277824 +1514820 +459922 +2058553 +1933894 +1198290 +2248462 +1460311 +851896 +2838062 +1514816 +2375401 +134933 +1514823 +433434 +1843399 +2623730 +2838053 +2367486 +134924 +1460245 +232320 +1750473 +2349888 +1087499 +1613471 +1843330 +1037461 +203174 +433503 +1460279 +1613517 +2290212 +1198251 +2277820 +1237267 +1087472 +851965 +357777 +2077106 +134956 +433475 +1898944 +2248506 +1843343 +338303 +2290215 +433557 +995067 +2277833 +2248475 +1514863 +433507 +1198304 +459938 +2562035 +1174663 +707829 +2058605 +2248578 +1843351 +1087494 +1514839 +1750474 +2058548 +2510224 +357791 +2248526 +1087445 +1198297 +1051554 +2367482 +2248472 +851923 +1514804 +1984668 +1843345 +2248560 +1319586 +2126201 +1725347 +134981 +995090 +1404180 +2315845 +2126089 +1854671 +995124 +2635162 +1492278 +2126155 +78104 +135012 +1825088 +41913 +852054 +1772004 +2523438 +1090123 +1416106 +2457560 +1460357 +2126241 +779927 +2357231 +2126100 +2290221 +1416102 +595303 +2375412 +1812372 +78140 +779904 +1077256 +1416109 +2126085 +2126090 +1772017 +2077146 +1077261 +1349194 +2077121 +1854658 +413465 +1301078 +2315848 +852068 +2126198 +363229 +995085 +1772016 +995097 +1854654 +2430771 +426491 +1772019 +134989 +2126189 +1416101 +394899 +2126112 +1404173 +1380362 +332969 +1077253 +2315843 +2126086 +2126230 +394892 +2126177 +1533910 +78103 +2126131 +135017 +2457547 +595304 +2315844 +756220 +1646356 +1083068 +1533894 +1854667 +2635175 +134985 +2126224 +1772029 +595292 +852021 +748620 +1460385 +2279446 +595293 +595298 +2457584 +2315865 +1492270 +2126104 +2126199 +78106 +907054 +1404177 +2126083 +2290237 +1210467 +1210469 +2126226 +1772003 +2728909 +1613553 +1416111 +2126114 +203196 +2290238 +2126194 +1772026 +1319567 +215038 +756226 +2033069 +719843 +2523448 +2126080 +1077270 +1613529 +1687562 +1687578 +2562073 +1709242 +2248729 +953639 +1269436 +2523418 +2562064 +135001 +913622 +953648 +2457564 +595295 +1613531 +4777 +2315836 +649449 +1416077 +664946 +2457544 +1613556 +2315878 +1772008 +2562067 +1533874 +2457569 +2357229 +2126115 +1533912 +4767 +1957443 +1772010 +1460362 +413468 +766453 +2707743 +730200 +2635170 +2457574 +1342780 +1053626 +1772009 +852027 +913613 +1122003 +2851100 +2851119 +2772095 +2866877 +2033098 +995129 +2866904 +1533936 +2867021 +1380365 +2824818 +2772058 +779928 +2523461 +2033097 +2824780 +2824805 +2851224 +2851141 +2824837 +2033101 +2824803 +2772131 +2772137 +2866976 +2838073 +2851233 +426498 +2510242 +2523473 +2866938 +2772094 +1416115 +2126310 +2824823 +2635185 +2851212 +2824807 +2772076 +2851230 +2851276 +2851199 +2457595 +2562097 +2851090 +2866880 +2772050 +2375434 +2126302 +2866879 +1404181 +2867000 +2126269 +2315896 +2772133 +2523466 +2851196 +1492284 +1269443 +1957453 +408956 +2824814 +2824831 +2375441 +2851098 +2866962 +2357236 +2126263 +2851189 +2033093 +2851124 +2734744 +2866897 +78142 +2824781 +2851092 +2851159 +41916 +2772112 +2684258 +2866999 +2126262 +2851210 +2866969 +475542 +2851120 +2851180 +2851138 +1062855 +2772061 +1687586 +2866918 +2126261 +2824808 +2523462 +2033085 +2851112 +2772089 +2562096 +1709251 +1660328 +1761456 +1210472 +681199 +2290280 +1319596 +2280942 +2457625 +1062861 +2033119 +2315926 +2457620 +1772046 +2126381 +1492287 +1772047 +1957458 +2280949 +2126417 +2126423 +1062858 +2126335 +2315924 +2126436 +1077288 +413470 +2697907 +2248733 +515145 +1772049 +649453 +2851284 +2457606 +1166604 +2290281 +2077187 +1145447 +2126435 +2772178 +2315918 +4789 +2126388 +2430838 +2430815 +2430801 +2315906 +1660330 +2430821 +2315908 +2004023 +78158 +1854678 +1404195 +1533941 +779945 +332975 +1393583 +1533952 +2290274 +1404200 +2457616 +2033105 +2033118 +4790 +2290273 +2126389 +2077170 +2772183 +78161 +2126407 +1772037 +2430807 +953662 +1349208 +2290271 +2077186 +78168 +1404194 +2730250 +2772168 +2357244 +2562145 +2684271 +2067972 +2077236 +2697920 +2562132 +756251 +1062873 +2430858 +2357250 +1957463 +1319609 +1416146 +2077235 +2290310 +1533987 +2357245 +1404213 +1416134 +2562136 +756250 +2734752 +913646 +2730251 +2562165 +2280953 +1492320 +2290316 +4812 +2457649 +4808 +1533997 +2077241 +2077232 +2126554 +2635203 +2562140 +4798 +2457661 +2077215 +2697916 +2562164 +2751553 +2126528 +1854690 +2697921 +2126445 +1180067 +1210474 +2635242 +2684267 +2751549 +1972100 +2697911 +779971 +2375449 +1854687 +1972101 +913638 +78169 +1380366 +2375462 +2562170 +2457671 +363238 +4813 +756239 +2315950 +2562154 +2562139 +2126493 +2290338 +2026525 +2077230 +2523506 +2290317 +2523536 +1825097 +2290333 +2290331 +1998313 +1180065 +2751552 +2033128 +1533966 +2697925 +1987611 +363237 +2457630 +2248826 +852208 +2248939 +2562208 +2367523 +2248912 +852186 +41935 +232356 +1291990 +135049 +2562194 +1310460 +2058666 +2523538 +1122004 +232348 +779982 +779989 +2315957 +2058712 +1393587 +2741501 +2562172 +41941 +2248947 +2547905 +852159 +232350 +1947592 +2684273 +2248874 +595342 +2285515 +2688998 +1460516 +135073 +41969 +135048 +1416166 +2457702 +664956 +852236 +2367527 +852256 +1292001 +2248758 +1037468 +135058 +2126602 +2772210 +2067989 +1957473 +2058738 +1613637 +2033176 +2077247 +2248810 +1613590 +2375503 +2058756 +852235 +2523545 +1968776 +1404235 +2058774 +2058763 +1460453 +1460390 +1613594 +1291983 +1460420 +995153 +1534001 +1291973 +203200 +2516706 +852213 +595348 +1319614 +852175 +2375493 +2349928 +2077248 +852197 +2033166 +2248940 +2772221 +2077242 +2695113 +373005 +2697933 +2248847 +2248842 +2071863 +2058760 +2248813 +2126607 +2248807 +2562198 +595317 +2772231 +2058739 +2248832 +433587 +357805 +1319613 +2248857 +1750490 +852111 +2033154 +1750522 +2248921 +595354 +2707765 +852145 +2375498 +1349213 +1269489 +1947576 +1514895 +2523589 +995141 +1404241 +2033163 +2635268 +2510256 +2248926 +1613576 +2077272 +1180070 +595311 +2126665 +1460474 +852218 +852121 +41942 +2523600 +2705150 +852160 +2510251 +1460455 +1291979 +730210 +2516705 +135034 +1460470 +595350 +2126587 +2071861 +1957475 +2248873 +595333 +2033150 +852246 +2126638 +2523577 +2510253 +41947 +2772216 +1460463 +41957 +995161 +2523561 +2004026 +2315960 +852146 +2315953 +2248918 +852158 +2707762 +2248769 +1613589 +2126667 +2772211 +852107 +2248744 +1291987 +1460497 +2058748 +41950 +2058646 +2349922 +2058759 +2058692 +595363 +852253 +852211 +852125 +2308202 +2126621 +1310455 +852205 +2367530 +953667 +2248953 +1613628 +1613633 +41922 +135064 +2707766 +1725375 +1460487 +2126609 +995146 +852099 +2375501 +2367535 +2523586 +1460410 +2248786 +852123 +2741500 +2315983 +1460429 +232359 +1968790 +2101773 +2248861 +936521 +2248841 +2248907 +2248737 +2772197 +595361 +2547906 +2290341 +2126624 +1416171 +1310458 +135095 +2290349 +2033210 +1534031 +2772251 +2457730 +135088 +4842 +232370 +2058880 +1460561 +2290363 +203213 +215046 +1460543 +780001 +2375512 +1404242 +2249011 +1292032 +1053654 +2077309 +1460720 +2126766 +1058470 +1460609 +1416215 +2058790 +595448 +2562224 +995177 +41975 +2249049 +1460630 +2248982 +852284 +2697938 +2058834 +2772238 +2705167 +1460673 +852274 +1492335 +2851336 +2058854 +2772252 +2851314 +2510278 +2851326 +664962 +595414 +2126756 +2126703 +2851328 +1416223 +2126704 +2705168 +595490 +1613675 +1460571 +595409 +766465 +1460706 +2077299 +852320 +2290372 +995187 +1940551 +2290359 +1534027 +78176 +595396 +2249087 +852360 +1613671 +2357277 +2867039 +2067991 +2751560 +1514911 +1460648 +203219 +2058839 +332983 +135107 +2523619 +2126795 +1750535 +852371 +1460631 +2033228 +2058815 +1269493 +2457703 +1460683 +515179 +2077278 +41986 +4833 +1957487 +2280962 +2697942 +852265 +2308210 +852392 +1947610 +42002 +1342799 +995202 +2249019 +681209 +2457740 +2033220 +1460715 +2058778 +1460672 +2308206 +2457709 +1101628 +2033191 +2067996 +1460541 +2695115 +2033204 +1460629 +4832 +595463 +595458 +2457741 +1053656 +515204 +2523603 +1613716 +2697934 +1460710 +995193 +2058806 +1058466 +2058804 +42006 +664963 +2423089 +995213 +1416194 +232364 +2851337 +2249051 +232379 +2772239 +2058824 +1292020 +421594 +1460582 +1613679 +1772067 +595432 +2851319 +2101775 +1514914 +756260 +1460605 +2851302 +2033221 +2851341 +2357279 +2126701 +595429 +1460677 +995183 +2028273 +2077311 +1404249 +1416206 +1613682 +681212 +373007 +2033202 +1843415 +1062877 +135090 +1292025 +1416211 +2367543 +1365305 +2249061 +1319625 +2430878 +4838 +2705171 +2249102 +1404262 +41992 +1613654 +2684280 +852337 +515201 +2751557 +135110 +2562228 +2058789 +2058893 +2248973 +2077312 +1180071 +2851350 +2058844 +852370 +2058826 +2033235 +995184 +2851330 +2058809 +2249086 +1460717 +2077276 +2375516 +852379 +1404270 +2772244 +2126784 +2734760 +595478 +2308207 +1460547 +2523606 +852298 +936535 +2058795 +595447 +418875 +1416220 +1482967 +852319 +995224 +1319628 +2367540 +408961 +1460608 +2058784 +2851325 +2077294 +1613687 +852350 +1968813 +2851312 +1292021 +1725379 +1460627 +2772388 +2838120 +2707790 +1109107 +2423102 +2635290 +2772314 +2457796 +2838122 +2838086 +515212 +4861 +2824922 +2523646 +2730263 +2290396 +2430930 +2077317 +2315992 +2126930 +1957497 +2280989 +2562298 +2126886 +1709273 +2077378 +2126943 +913669 +681230 +2734768 +2290419 +1416235 +2824880 +2772288 +2523685 +2033247 +913671 +1772072 +2457765 +2824993 +780071 +2824852 +2010917 +780035 +2824854 +1062881 +2290436 +2772283 +2847273 +2430910 +2375532 +2562264 +1772078 +2375527 +2126937 +1972133 +1319665 +2290412 +1957506 +1416256 +1825112 +2838108 +2772356 +2824992 +2772392 +780020 +2772343 +2824865 +2707777 +1772086 +1416240 +2126881 +2290435 +1416269 +1062908 +2824861 +2824951 +2824980 +2077331 +1269511 +2423094 +780039 +2745283 +1404274 +2772394 +2772390 +2824964 +2126916 +2457758 +2077393 +2635284 +780030 +1772103 +2720780 +2751562 +2772279 +2126842 +2772324 +2847275 +2772385 +1687608 +2824962 +2290381 +2077325 +2077358 +2562244 +4860 +2772446 +1492386 +2290437 +2523690 +1825110 +2068008 +2280979 +1269505 +2838079 +2772315 +2457786 +1687593 +2772365 +2357298 +2077330 +2077385 +191389 +2523624 +2734775 +1416248 +2824882 +2562259 +2077340 +780054 +2280985 +1687594 +2126871 +2772298 +1972128 +2523672 +2707797 +1319648 +2734770 +2430885 +2126851 +2562249 +2772376 +2280984 +2077373 +2867050 +2751567 +2562308 +2423096 +1062885 +1687603 +2772306 +1772070 +2824888 +2126946 +515242 +1062891 +2824969 +2033243 +2077403 +191400 +4859 +2077369 +2730264 +2824869 +756287 +1972120 +2077412 +2562260 +2730270 +2126858 +1957499 +2077409 +2838114 +1687588 +2523631 +2126844 +1319658 +1772091 +1772085 +2562236 +2126839 +913672 +2423116 +2523696 +2691476 +2290445 +2562333 +2126995 +1090147 +1090148 +913673 +515258 +2707798 +2430952 +4888 +2127002 +2523741 +1210486 +4896 +1416286 +1319674 +1180076 +2423115 +1687610 +2126970 +2127028 +1950436 +2077418 +2281002 +2523734 +191405 +78187 +1790439 +2127006 +1053671 +383644 +2562354 +1911065 +1709277 +2274137 +1301102 +2430948 +1957508 +1790442 +2077433 +2523745 +401566 +1319682 +1145452 +1180075 +1534065 +2033278 +2354135 +1825116 +2523706 +1492399 +2562328 +1416292 +2523712 +2033297 +1492402 +780077 +2290441 +2127032 +2523700 +1319696 +2290457 +2315997 +2316006 +2033307 +78185 +2523713 +2077442 +1761457 +4895 +2523736 +2290449 +1972140 +2562313 +1319686 +2077444 +1349222 +1319703 +426503 +2430954 +2728914 +2430962 +1416281 +2315994 +2127018 +2127005 +1319702 +2430970 +4891 +515255 +1950441 +2697964 +1492423 +2127044 +2290467 +2127154 +2077484 +1940581 +2033330 +2697965 +1972148 +2033328 +1269546 +1269554 +2290515 +1319722 +515266 +1972159 +2562360 +2127116 +2423140 +1668355 +2423133 +1725386 +1416325 +2431011 +2316052 +2562359 +2423135 +2010926 +515276 +2562361 +2742135 +2127074 +756304 +2734799 +2127117 +2316042 +2290526 +2290505 +2457852 +2523779 +913683 +2734782 +2033341 +1319709 +1492433 +2431045 +2375567 +2751582 +2127101 +1062933 +2745319 +2290474 +2316061 +2739361 +191410 +2745316 +2707805 +2457832 +1416316 +1972145 +2707811 +2316043 +2033332 +2751587 +1492440 +2290494 +1319726 +2316062 +2033324 +2745297 +2127045 +1940579 +2745322 +1404284 +2751572 +2127110 +2745307 +2523781 +2457846 +2010931 +2290520 +342731 +1319735 +2457858 +2457829 +2010939 +2742137 +2745320 +2316050 +2730275 +2751574 +2290490 +2523757 +2290521 +2127096 +2431013 +2077478 +2457874 +2431053 +1269557 +2127047 +2523756 +2010932 +2734779 +1460746 +2316069 +2316099 +2562419 +2127296 +2077521 +1319770 +1416387 +515281 +2249149 +2707838 +2635330 +595497 +780111 +1342801 +2127242 +2416225 +2127276 +2127348 +1090159 +2375595 +2457892 +1210492 +2127190 +1416399 +2127294 +2684308 +756320 +1825134 +2127188 +2077562 +2562492 +1460732 +1416391 +1460726 +2127177 +2127354 +852399 +351053 +1365308 +953679 +2308215 +1380380 +2697991 +1947611 +2316075 +2127344 +2249122 +4915 +2127283 +2127247 +913689 +1613737 +515309 +2127301 +913692 +2375641 +1416388 +1026304 +2562456 +2127279 +2697992 +2249121 +2684305 +2316100 +1416400 +1972186 +2127310 +2523844 +2004046 +2523837 +351055 +1709291 +2562473 +2127171 +2720791 +2004044 +2290552 +852402 +2357332 +2127250 +1292046 +2357331 +2357329 +1269579 +1210495 +78205 +1380374 +351044 +1416381 +332986 +1534071 +2021235 +2707831 +2562464 +2033350 +2249117 +719858 +135139 +1416390 +4917 +1750540 +649457 +2127166 +2077516 +2249140 +1825136 +1772118 +2127220 +2375627 +2127221 +1984691 +681254 +1393598 +780102 +2375651 +2127224 +1998337 +2375648 +2127169 +1972165 +363243 +1301113 +852398 +1319760 +2734810 +2127267 +2033365 +2290551 +2127259 +2720793 +1957539 +1825130 +2772465 +2127320 +1825135 +2316084 +1460733 +1269605 +2033372 +4912 +1725395 +995230 +1180081 +78198 +2523836 +2316094 +2375632 +2375618 +2004047 +2734808 +2127245 +1947614 +1972174 +1725393 +2697978 +1940598 +2290540 +515313 +2562465 +1772117 +2357337 +2562420 +756323 +2077533 +2772463 +2127303 +2010946 +1269577 +515286 +1492461 +2127202 +1998335 +2697975 +2316079 +1349239 +2127185 +1210502 +2698017 +2745331 +1460763 +1514933 +2013373 +135163 +2547914 +1292068 +2013361 +2867053 +2523880 +2127381 +1269621 +2745341 +1534095 +2510293 +2375661 +2077590 +2004080 +232405 +1380389 +264268 +1393601 +2689013 +2316113 +1310493 +2523871 +1750541 +1534096 +2705178 +2734816 +664987 +2691483 +1269614 +2734832 +1940614 +2077620 +595507 +2707898 +42049 +719861 +2249177 +1292059 +1957566 +780121 +2004068 +1940609 +1613758 +1416405 +515333 +2562500 +2127373 +1940620 +1460760 +2698006 +2734828 +42041 +1319796 +2745337 +936545 +1269633 +2739369 +2523886 +2249156 +2523866 +2101789 +2010972 +2707865 +2316112 +2734838 +1319794 +2734834 +2077609 +852428 +2290574 +78211 +681262 +1947630 +2684336 +1668366 +1825158 +2127369 +852429 +852426 +1292069 +1460748 +2523885 +664988 +1957573 +1301120 +953681 +2431070 +2707907 +2004091 +1053680 +780122 +1342813 +2101790 +2033445 +2684329 +1380398 +2004069 +2290570 +1492473 +2707883 +2689009 +995246 +215054 +2308219 +664981 +2867051 +2127370 +1269616 +595520 +1269611 +2033416 +1947627 +1972196 +1950483 +995243 +2077622 +2308217 +2127404 +2523869 +1972194 +2010977 +2058929 +2523867 +2010980 +595537 +1950482 +2689012 +2730287 +442609 +2058936 +135155 +2751599 +2033433 +2431077 +1380392 +2431084 +681256 +2734855 +135148 +1957562 +1957556 +2127375 +2077598 +2127374 +2013372 +2010970 +42044 +2523856 +1269620 +2033426 +2127399 +232400 +1292074 +2349937 +1968846 +2004049 +2707848 +135145 +1404304 +2033434 +2249173 +1947620 +1349247 +1940653 +2458007 +2562623 +1492526 +2127550 +2316145 +2772556 +2127548 +1772157 +2838147 +2281068 +2734860 +2772480 +515356 +1972209 +936550 +780135 +1319834 +215056 +2420939 +2290589 +1534136 +2707939 +2867087 +2851375 +2127422 +900264 +1772127 +2562612 +1180093 +2281041 +1319832 +2562606 +2127741 +2772472 +1269677 +2562550 +2684347 +2562551 +2077671 +2562600 +342741 +1053695 +2684362 +2458035 +1210516 +2357364 +1972224 +2026555 +2077722 +1416422 +2431110 +852497 +2562624 +1460780 +2316187 +2457942 +1668388 +1301140 +135181 +2290650 +1269675 +2127418 +2127674 +2077785 +2010992 +78227 +2077743 +1492495 +2281045 +2838150 +1534175 +1772141 +2127651 +1668383 +1660363 +2316128 +2523912 +2684343 +2316124 +2249194 +2127725 +2457946 +1957593 +2523905 +2698034 +401591 +2026554 +2316139 +2316123 +2127742 +1145475 +2772533 +2698050 +1940634 +1269660 +780168 +2068051 +342745 +2127619 +2290614 +4941 +1972232 +1957602 +2772517 +2707923 +1492488 +2635353 +2562544 +2431111 +2127701 +2457921 +2772487 +2562613 +135199 +2290701 +135194 +2127648 +907062 +1380401 +2316149 +1534135 +2457920 +1725405 +2127715 +2290608 +1319827 +2127429 +2772548 +1940663 +2867059 +2281074 +2127569 +2010994 +2457959 +2772471 +1854766 +1957615 +1053696 +953696 +2127679 +2431141 +953705 +2127719 +4935 +1349266 +442622 +326543 +2281032 +852518 +42057 +2838154 +2458017 +2077695 +78223 +1534130 +1404317 +953688 +780188 +2127624 +2523947 +2772496 +1269663 +1301144 +913716 +2281091 +2127551 +1365316 +780166 +780199 +2707938 +2127726 +1725402 +2077771 +2033468 +515376 +2127426 +780163 +2772564 +953708 +1514936 +2375673 +2562539 +2562605 +2562611 +852484 +852531 +1534143 +2457972 +1854768 +2281052 +1998371 +1492482 +2562565 +1957596 +2127654 +475553 +1940678 +2290617 +2420929 +1940646 +2562622 +1145472 +780198 +852481 +2734861 +2684344 +2698043 +2772563 +2851363 +135201 +2077704 +2290664 +2290612 +248505 +2316114 +2867092 +2290678 +2127514 +1145471 +2772532 +2033461 +515379 +2851372 +2375683 +2523908 +2458014 +2068031 +2431100 +1660367 +1460772 +756338 +1668374 +2523936 +2562609 +135178 +232414 +2127588 +515358 +2316147 +2838141 +2127711 +1987635 +1416438 +2458054 +2077682 +852524 +2127528 +2068048 +2720812 +1972221 +2281060 +515350 +2033501 +4928 +2730312 +1269699 +2127589 +1957625 +2127509 +135186 +2523945 +2772559 +2562631 +2523921 +1534163 +852490 +1972236 +2867104 +2316155 +1492497 +2077737 +2431094 +780189 +401576 +515352 +2458040 +852483 +4939 +1319844 +1319828 +1053686 +2772499 +2290687 +2026562 +1998339 +780196 +2281095 +2431160 +1854759 +2290659 +1790450 +2745357 +78224 +1957595 +2014573 +2516716 +42054 +2127462 +2458032 +1482976 +735054 +4934 +2458008 +2028285 +1492496 +1492501 +2077804 +2562531 +2068032 +2127511 +2562577 +1492502 +2077758 +1492514 +2290651 +2281097 +1210514 +2127729 +2290667 +2457957 +1940655 +1292093 +2316172 +2457943 +1492480 +1534179 +1492536 +2562647 +2033522 +1534180 +475554 +2316204 +2635363 +2691489 +1492537 +2127753 +2523952 +953714 +2772581 +2562650 +2772583 +995257 +1053698 +1349271 +1404323 +363253 +2077819 +78253 +1090168 +1534184 +1319850 +2249202 +2375693 +1725410 +1122011 +1408362 +1725413 +1534185 +2720816 +2127813 +232419 +2635369 +1750547 +4962 +383647 +2127815 +2316213 +1514941 +2730320 +1460798 +1764404 +4950 +1416473 +1416469 +1613776 +1109116 +1613777 +1534189 +1613781 +2562661 +232417 +1940689 +203233 +852571 +2562651 +595562 +203231 +135218 +1101630 +2720817 +953720 +2720819 +2249221 +2077827 +1660369 +2562666 +1129943 +1141477 +2562681 +2290721 +1843420 +135222 +1750548 +2127770 +1319860 +1404327 +4979 +1460804 +852573 +2249209 +852557 +1349276 +1301154 +1972242 +1292096 +2249217 +78258 +953718 +2562687 +1994309 +1083081 +995289 +203243 +1972248 +936559 +1725414 +2249216 +1646372 +2077833 +2127818 +852546 +2127811 +2375706 +203237 +1083089 +1416467 +2562716 +1492543 +2127793 +1319852 +1460818 +1534191 +2431186 +1416507 +1972261 +2562732 +232440 +595593 +2510304 +135328 +2562741 +756343 +2127947 +2127844 +2316247 +953727 +595606 +2375724 +42093 +1492558 +1416492 +1058498 +1998406 +515439 +78273 +2742168 +2068077 +2707967 +1460852 +2420951 +1613791 +515430 +357818 +346293 +2033586 +515443 +1972254 +852639 +2014596 +1854802 +5015 +1153811 +852641 +135274 +2705193 +1492571 +42111 +995318 +2077905 +2033564 +135305 +2316244 +1492579 +995323 +852640 +2316230 +2547918 +42090 +852590 +936576 +1681302 +1994310 +2033569 +2562721 +2127952 +1460844 +135338 +2420960 +2033570 +2077840 +135321 +936578 +995304 +2742171 +203259 +1668415 +2458106 +2127930 +913732 +907065 +2127975 +2249274 +664992 +936583 +2033594 +1772191 +135319 +1514958 +2316222 +1668422 +2707965 +2033571 +203264 +2077900 +78289 +995314 +953725 +1141487 +2249235 +766495 +342752 +2127850 +2249245 +1613783 +1319867 +1319881 +2058992 +2249231 +2059006 +707852 +995334 +907070 +2431191 +953733 +78297 +5011 +2127861 +2033553 +2077890 +852586 +936584 +780219 +2101811 +1071896 +2077866 +1319883 +1940692 +953734 +2127865 +1460853 +1772202 +1972251 +1514956 +1534202 +1492553 +2458085 +42084 +1180100 +2349947 +2562763 +1668424 +995330 +135266 +1681297 +2127878 +1613806 +4994 +2059005 +442642 +907069 +995301 +1898992 +2127828 +2077867 +664994 +1998402 +2127989 +2127886 +1492564 +2431205 +913729 +2058988 +2698069 +852606 +2562738 +1460830 +1772196 +1460842 +1319864 +1772197 +2249259 +215070 +2249255 +515404 +1122013 +2431206 +2077835 +2059023 +1668414 +1416494 +2290749 +1416493 +1613802 +595588 +852608 +2127864 +2431196 +2077885 +401598 +42117 +264284 +4998 +2127903 +135277 +766489 +2635371 +135323 +5016 +953736 +2281114 +2127897 +595590 +1772173 +1668426 +2562739 +2077881 +2290738 +135306 +1613805 +852625 +664997 +1166614 +852613 +42095 +2127939 +2249244 +1772178 +936585 +900280 +2127853 +135348 +515437 +1460840 +900283 +135282 +2523975 +1166617 +2698073 +2127991 +78276 +852583 +4987 +2698082 +1772201 +1460872 +2772714 +264311 +2772767 +1658586 +2772689 +936604 +1141493 +1514982 +1071903 +346304 +2281121 +907079 +995342 +2772643 +329325 +995354 +1058507 +135360 +2772746 +1141490 +1166619 +2772615 +2772879 +2772612 +338319 +2059028 +2772872 +2772587 +2772734 +135368 +852673 +398665 +42131 +329320 +2772894 +2772910 +203276 +2772827 +2772613 +338321 +135376 +1460880 +2772628 +2772886 +2772686 +346301 +2772755 +2772784 +1141494 +264310 +2851407 +2772694 +852663 +852672 +2772859 +995340 +1681314 +2772817 +135367 +936607 +1153814 +2772662 +2772710 +2772815 +329324 +2772708 +2772626 +135380 +852662 +2772776 +2772610 +2772899 +1051568 +2772785 +1166621 +2772798 +2772908 +2772692 +2772842 +995359 +135358 +953739 +2128001 +264320 +2772891 +1058505 +2772822 +766510 +135444 +232493 +766516 +42163 +1460923 +1461005 +852783 +135526 +936610 +135431 +1668447 +995378 +42156 +135416 +135435 +203280 +42324 +995460 +766509 +42250 +135503 +2510337 +766556 +936620 +264349 +1613830 +1703059 +135552 +852805 +135600 +135624 +2249312 +852705 +1461000 +135500 +421611 +42161 +264368 +1460921 +2510321 +1460899 +995375 +135580 +232462 +1668445 +135448 +135567 +357819 +1898994 +995362 +766526 +2077913 +852704 +264329 +135396 +936614 +852786 +852686 +135423 +42332 +42175 +42275 +42288 +1898998 +2524005 +1460918 +995492 +357820 +2510327 +995464 +1460922 +42277 +995519 +852782 +852795 +264338 +232503 +766555 +135407 +135618 +135611 +135631 +135383 +2516726 +852712 +766515 +1037481 +852765 +264337 +264378 +42167 +135494 +852767 +995419 +766527 +995396 +2249304 +398672 +1461013 +2249310 +2510312 +1058509 +2516736 +936641 +2249311 +852747 +42219 +907086 +203299 +42312 +135429 +42155 +42319 +135598 +852793 +203304 +135583 +852807 +1460931 +852790 +203288 +1460943 +264346 +135634 +135465 +852768 +995484 +852745 +42218 +42309 +936660 +2635377 +1899000 +42144 +995448 +936657 +135637 +135515 +995505 +2101830 +264354 +1750555 +135638 +42294 +2375735 +135492 +852727 +2510324 +1460987 +1899005 +1460972 +135573 +1460934 +135490 +852789 +1071912 +1898997 +203277 +852722 +135410 +1487239 +1812398 +1487252 +995526 +1460991 +135608 +232480 +2773524 +2775430 +2773462 +2775110 +2775182 +2775436 +42369 +2249439 +2775271 +2773621 +2774346 +2773790 +2028297 +2773628 +2774536 +2349976 +2775100 +1166627 +2350040 +2775242 +2774704 +2775273 +2773075 +2774055 +2773921 +2851499 +2774399 +2773074 +2773573 +2774250 +2774007 +2775335 +2773686 +2775067 +2773221 +2774156 +2774463 +2774191 +2774610 +852826 +2775512 +2774747 +2350021 +2773571 +1166632 +2774439 +2772925 +1310504 +2775407 +2775176 +2773227 +1994311 +2774963 +2773484 +2774541 +2773610 +2774159 +2773206 +2349997 +852852 +2772930 +2774686 +2867125 +2249447 +2775069 +2773857 +2773468 +2774320 +2772940 +2774383 +2774690 +2774890 +2773191 +2773364 +2773114 +595622 +2249448 +2773789 +1613883 +2773340 +2773643 +2773334 +2851437 +2774408 +2774642 +2851456 +2774269 +2773295 +2774096 +1613894 +2774074 +2773967 +2773130 +2775224 +2774164 +2774145 +595629 +2773418 +2851511 +2775132 +2774728 +2350026 +2774580 +2775373 +2774901 +2774085 +2773203 +2774710 +2249454 +2249345 +2774652 +2774679 +2774665 +2773231 +2773031 +2774818 +2775279 +2773675 +852832 +2775274 +2775393 +2773426 +2775205 +2774165 +2774338 +2249338 +2773181 +2774151 +2851447 +2774823 +1703063 +2774174 +2775087 +2774484 +2774069 +2774190 +2773817 +2775329 +2249435 +351063 +2774373 +2249416 +2774354 +2774243 +2774188 +2028302 +2774371 +2774488 +2773088 +135675 +2350006 +1461026 +2775403 +2249459 +2773367 +2773856 +2349960 +2774263 +2774563 +2249432 +2851504 +2775173 +2774507 +2059038 +2773836 +42363 +2774934 +1461035 +2774274 +766560 +2773715 +2774276 +2773243 +1613888 +2773374 +2774685 +2774071 +2773264 +2774781 +2775142 +2867119 +2249456 +2774567 +2773614 +2773432 +2774552 +2249376 +2775059 +2774426 +2773666 +766572 +2774155 +2773822 +2350003 +2774157 +2773096 +1461041 +1933918 +2774676 +2249381 +2775277 +2510350 +2774898 +2773649 +1812419 +2775287 +2773602 +2774401 +2772936 +2774163 +2774468 +2773302 +2773423 +2775518 +2773709 +2774023 +2774712 +2775417 +2775270 +2773673 +2774605 +2774570 +2773665 +2774387 +2773058 +2249384 +2774060 +2851426 +2774298 +2350009 +2775213 +2774850 +1613903 +2773742 +2773769 +2773892 +2774857 +2773952 +2774545 +2775421 +2773356 +2773397 +2774501 +852818 +2773533 +2775376 +2773048 +2775439 +2774077 +2772973 +2851425 +2775457 +1166626 +2867134 +2775026 +2773908 +2772919 +2773500 +2773251 +2775307 +2773895 +2773122 +2774328 +2249342 +2774808 +2773585 +2774882 +995563 +135657 +2851448 +2774149 +2773637 +2773153 +2773089 +2775022 +2773674 +135660 +1461029 +2774734 +2773711 +1812415 +2773118 +2774036 +2775227 +2775365 +2774579 +2773049 +2774949 +2851457 +2775135 +2773771 +264386 +2773825 +595626 +2774774 +2773370 +2773986 +2773501 +2774277 +2774258 +1994312 +2350011 +2775027 +2773369 +2774241 +2774916 +2775144 +766580 +2775327 +1083115 +995549 +2773843 +2774799 +2773377 +2773212 +2775316 +2774981 +2774126 +2773576 +2772939 +2773619 +2775029 +2774661 +2349962 +852850 +2774177 +2774195 +2774332 +42564 +42434 +1750598 +2825245 +2825010 +2777544 +42608 +2776628 +595637 +2825299 +2838249 +2776537 +2279064 +42520 +2825400 +2825094 +2411968 +2279207 +2775770 +135782 +2776060 +2059105 +2279176 +2777374 +42450 +2776430 +2838312 +2825106 +2777079 +42416 +2775719 +2775560 +2776284 +2775888 +264397 +2776675 +2411925 +2838203 +2838208 +2776352 +2279146 +1047855 +2249528 +852976 +2776123 +2838267 +2777338 +2777538 +2776098 +135760 +2279118 +2776166 +2776740 +42428 +2777527 +2776565 +852934 +2776611 +2777379 +1047791 +2838265 +2776050 +42486 +2776010 +2776074 +1750638 +2776044 +2776670 +2623849 +135693 +2623824 +2775959 +2776169 +2279173 +2776942 +2776109 +2777463 +2776604 +1461102 +2776041 +42596 +42562 +2775788 +2623790 +2838240 +2777318 +2825112 +2825382 +2776928 +2562771 +2562804 +135710 +42513 +1037487 +2775708 +2776577 +2775885 +2776422 +2775542 +2776082 +42453 +1750618 +2776867 +2776655 +2775564 +1613924 +2777385 +135730 +264413 +2777430 +2623826 +2776590 +2279032 +2825206 +2775823 +2775734 +2825280 +2775871 +2838322 +2776857 +2838266 +766583 +2825321 +2775684 +2825236 +2775585 +42614 +1750673 +1750603 +42469 +1047820 +2776332 +2776886 +995571 +2825005 +2775611 +2776712 +2825295 +2775784 +2777568 +2777323 +1461096 +2279147 +2775965 +2776522 +2776542 +2279152 +1947664 +2776128 +2825369 +2623815 +2059120 +2838315 +1461107 +2777265 +1655263 +2776907 +2249472 +42526 +2777319 +2776269 +2825054 +2279180 +1750643 +2838254 +2776929 +2775552 +2777282 +2128012 +135764 +2777607 +2776108 +2776652 +2776973 +1408382 +2777411 +2825024 +766605 +1047819 +2838300 +1047861 +2777447 +2776221 +2059138 +2777554 +2775573 +2776609 +1750631 +1461125 +2775792 +2775531 +2775663 +2775709 +2776788 +2777575 +2028310 +1613923 +2825296 +2775691 +42550 +2838284 +2777136 +2825349 +852868 +2777163 +42432 +135686 +1655267 +2838237 +2777198 +2825372 +2249544 +2777361 +2777185 +2775622 +2825149 +852936 +2776596 +2775914 +2825084 +2411946 +2776637 +1047769 +2825046 +1047828 +42531 +2775582 +1047730 +1994317 +2776281 +2776110 +2825384 +1047656 +2775926 +2838341 +2777231 +2776333 +2623796 +1461133 +1613961 +2776092 +2623799 +1461170 +2825241 +2775992 +2825231 +2279131 +2279020 +2777232 +2838232 +42536 +2776722 +2775953 +2777391 +2776263 +2777092 +42462 +2777288 +2279104 +2776737 +2028315 +2776327 +2776941 +2776139 +2059069 +2776032 +135769 +2777157 +2776171 +2825401 +1750583 +2776533 +42458 +2777114 +852956 +264404 +2777001 +42518 +2776336 +2775808 +766592 +2028309 +42478 +2279102 +2838200 +2775774 +2776574 +2777446 +2777034 +135747 +2776116 +2825154 +2776947 +1613910 +2825359 +1750572 +1461201 +2776280 +2776992 +2776244 +1047684 +2825192 +42429 +2777285 +2777498 +2838202 +1750601 +2825278 +2776744 +2825167 +2776711 +2777304 +2825070 +2775839 +1461088 +2279190 +2776247 +42381 +2775697 +2777201 +2279151 +1947666 +2623897 +2825392 +2776768 +2776870 +2777535 +2775745 +1047661 +2825358 +2825225 +2279192 +2777415 +2838317 +2825114 +2776959 +1461195 +2825158 +2623887 +2776944 +2776473 +2777306 +2279042 +2838289 +1461085 +2776940 +2777251 +2775960 +2623894 +42414 +2847292 +2776703 +2777334 +2623878 +2776034 +2776415 +2776704 +2279183 +2775636 +2838272 +2279065 +1047749 +852887 +2775778 +2825011 +2776548 +2775935 +766619 +2775725 +2562807 +2825379 +2059100 +2775842 +2776094 +2775955 +2838290 +1613947 +42410 +2777553 +1461075 +2825153 +1947681 +1047827 +2777566 +2623873 +2775806 +42467 +2847291 +2249543 +2825063 +1613921 +2776833 +2825086 +1613915 +2825155 +852873 +2777014 +2775845 +42541 +2279223 +2825402 +42435 +2249500 +2776160 +1461198 +2279114 +2623860 +2775626 +1750612 +2777063 +2777156 +2825365 +2776922 +2775800 +2775595 +2775984 +2777545 +2775860 +1613925 +2776346 +135701 +2825076 +1047776 +42441 +2059098 +42506 +2825263 +2775610 +2776755 +2776397 +1047800 +2776366 +135771 +264409 +2825004 +2777046 +2825141 +2776371 +2777112 +42407 +2776259 +2825242 +2775867 +2776093 +2838323 +2825293 +2411922 +2775780 +42567 +2279160 +2279209 +2279164 +2825316 +1947661 +2775694 +42498 +2777125 +2775526 +2775991 +2776728 +2777335 +2059082 +2825331 +2623866 +2776058 +2777529 +2059090 +1047702 +2775913 +2059112 +1461072 +1461106 +2777039 +2776200 +1614002 +2775932 +2777172 +1047849 +135751 +2838283 +1047683 +2777025 +2825190 +2777223 +2776971 +2775673 +1854837 +2719154 +853153 +596096 +995628 +2720840 +1854814 +1310509 +1725447 +1461380 +2524024 +853140 +595853 +264435 +595773 +1037528 +596186 +1461283 +135805 +596077 +135913 +853015 +1994322 +1090179 +1854848 +1310528 +515516 +2851527 +2851526 +78303 +595856 +1416530 +852996 +2516738 +853205 +2059238 +1461286 +1717860 +42681 +1652620 +307875 +2128047 +2719131 +595693 +1652613 +1950522 +2249612 +595936 +1292171 +1461293 +2316253 +2059171 +2867165 +42642 +1750688 +2249586 +357833 +2777631 +1310551 +515472 +853080 +596090 +2249599 +2867146 +203334 +936676 +1037552 +307864 +2357397 +707877 +42656 +1461237 +2002977 +1310512 +135848 +515520 +595955 +2562878 +2777637 +1461339 +995667 +2562847 +995650 +42683 +2059188 +2059247 +853117 +2308225 +1037510 +2707996 +1292199 +388636 +515454 +1515022 +596029 +665098 +2249730 +307849 +2059233 +1037514 +1994323 +1968861 +2851609 +1487260 +596100 +1037564 +1365319 +2128050 +307850 +2249689 +2851635 +1614046 +853000 +2128081 +596060 +780250 +913746 +596139 +2375815 +1614070 +135935 +2635389 +1408400 +1717871 +595691 +2867243 +2705206 +1968867 +2249559 +353866 +596165 +595706 +203321 +1998409 +1515005 +665026 +1269755 +936712 +2059205 +853156 +135836 +853244 +2562908 +42676 +595766 +42639 +1461354 +2867164 +2707998 +515506 +596121 +1854835 +2059282 +373012 +1947691 +596047 +1269756 +135885 +595774 +2695125 +307872 +2851589 +853243 +1646375 +515485 +2350063 +2026567 +2249572 +853111 +2635382 +853103 +1365320 +2851624 +2562895 +297861 +853178 +2851559 +2059260 +2249630 +135846 +2316255 +42688 +1984710 +1461359 +1614075 +2249552 +1349294 +2277875 +2375791 +595659 +595747 +2357409 +745687 +2375800 +1319899 +1047880 +2524022 +2059165 +596143 +78306 +1950525 +2777634 +2867178 +2524007 +2128041 +1652580 +1237345 +853049 +1461315 +2720831 +2562839 +2249701 +1310558 +852987 +2375814 +707855 +1994326 +2316269 +595963 +2719150 +595874 +42635 +1534215 +1984721 +2851563 +135997 +2101858 +2128027 +1461222 +2249567 +1037551 +232522 +853017 +2562882 +135797 +2375771 +596027 +596082 +232529 +2059242 +135995 +665067 +2691499 +2059280 +1947704 +1968857 +2249728 +1292142 +2635391 +135906 +1269764 +515514 +707884 +264438 +665046 +730230 +1707658 +853246 +1310523 +2707997 +595688 +307839 +853154 +2350061 +2249554 +595885 +596162 +853129 +596035 +1349283 +995613 +596142 +2059204 +2851610 +2562854 +1614052 +2249557 +2033614 +595738 +2695129 +2684383 +995600 +595907 +665077 +1984724 +515493 +2316261 +1461228 +596016 +2249585 +596091 +1717865 +2720852 +649485 +2249641 +1037558 +2851602 +2777624 +2077932 +307874 +2751625 +1037525 +1292147 +2249715 +1954301 +1037509 +515458 +135961 +1957686 +2562932 +135829 +135916 +995602 +2719133 +232509 +595794 +853181 +595772 +1947688 +936699 +1652585 +707912 +2357399 +2059252 +853020 +2375781 +1461217 +1854819 +135986 +2128067 +995657 +1408403 +1461212 +1292190 +1515027 +1365321 +135800 +232507 +2128029 +135883 +1461385 +1947703 +1037531 +1375057 +1954296 +2719139 +2708012 +1461334 +2249633 +853192 +1037513 +595751 +1947721 +42665 +936700 +1652571 +596158 +853070 +2705199 +2851621 +1037536 +307840 +2719157 +595653 +1210540 +853167 +995631 +707875 +1461349 +1349289 +2777627 +2516739 +2249694 +2059235 +42659 +596126 +595953 +136021 +2101869 +1968859 +596113 +2777646 +1461310 +780247 +1310564 +1037584 +135929 +2249621 +665088 +307868 +2689036 +135802 +515466 +2128064 +2128061 +853069 +1614037 +2128056 +953745 +2249729 +595720 +1717886 +2751620 +665092 +1972270 +1614048 +1984711 +995647 +307858 +515482 +596185 +1037500 +2689026 +1292160 +2128083 +1122018 +852982 +2635429 +1954294 +596026 +1725456 +780245 +596081 +1515002 +135801 +1725452 +853091 +2249653 +515478 +135945 +2562927 +2562900 +595877 +2249697 +2357406 +1854825 +2708015 +1614026 +1461301 +853197 +1717874 +2851538 +42669 +2524028 +2128044 +2524026 +2249708 +1725466 +1037489 +595923 +1310533 +2059177 +596114 +596111 +2101878 +1461340 +2249588 +2708006 +136011 +1461273 +2375801 +2033642 +2128146 +2708048 +2128269 +2720863 +746169 +2563013 +2357426 +515559 +2350074 +2128266 +5044 +1854881 +2077944 +2281144 +2316277 +756353 +2524085 +2316283 +2316336 +2077969 +2290776 +2128098 +2458121 +780264 +2458152 +2524080 +515574 +1994335 +780314 +1790461 +2077954 +2077943 +2128273 +2316282 +2357429 +2316285 +681277 +953748 +2742175 +2128104 +2720859 +515579 +1349308 +1854886 +2563020 +1377522 +2128085 +2128193 +2128260 +1614141 +2128189 +780268 +475566 +353867 +1706822 +2350071 +1349319 +2128229 +2128262 +2316315 +1854867 +2563039 +2357440 +2281133 +1090184 +1772212 +2698125 +1972289 +1668461 +2562971 +1614118 +2357424 +1180104 +2281141 +2281135 +1790466 +936721 +1534261 +2562972 +2033635 +2290777 +2563045 +2458122 +2316290 +1772224 +1772220 +1534232 +215075 +2077941 +2128215 +2708053 +2021245 +2128089 +1668458 +1534243 +2563000 +735059 +2562957 +1319905 +2739383 +2562994 +2375864 +1825179 +2375870 +1854864 +1987643 +2458126 +1377517 +2563011 +2128088 +853273 +2357422 +2563002 +1534290 +2524074 +1658591 +746168 +1377526 +475564 +1790465 +2128237 +780257 +2128131 +1180111 +215078 +1957703 +1380424 +1790485 +1380425 +2524081 +2128197 +2128134 +2128167 +2077965 +1790487 +1772215 +2524092 +2635451 +1614120 +2730346 +2128107 +2128216 +1996177 +2249743 +1416554 +2290791 +681278 +681281 +2563034 +2033622 +2563048 +1377525 +2375854 +1269789 +780266 +1534271 +2563055 +1301179 +2128173 +2033623 +2308226 +1349316 +2077945 +780276 +780272 +2128252 +1996181 +2128248 +2524056 +2357428 +2014612 +756349 +78314 +2635447 +2014607 +2128202 +1534242 +2316314 +2128137 +1319910 +2128172 +1180107 +2077957 +1911080 +2290774 +2458151 +1053720 +2077939 +1706820 +2375883 +2128277 +1709341 +2128428 +515598 +5125 +2290818 +2563095 +1534309 +2431254 +1534332 +1709340 +2563066 +1825198 +2563068 +1210558 +1053732 +1416612 +2290826 +191453 +2524155 +5130 +515625 +913797 +2128310 +1764413 +2290812 +1180136 +515622 +2128319 +2128442 +1319946 +2563160 +5135 +1687645 +2128352 +953753 +2033663 +2458204 +5104 +2316364 +1053736 +215095 +1377536 +2128299 +953761 +2033678 +191460 +2524172 +2128413 +2281165 +2033684 +1416582 +2078019 +1492636 +2316374 +1998434 +2563128 +191469 +1534351 +2458212 +2290830 +756358 +1998441 +2524184 +853291 +1534330 +78336 +1972301 +1709338 +913786 +1668486 +2563104 +1180151 +681300 +1534331 +2420975 +2128285 +5085 +2458206 +2128385 +2458200 +2281162 +191475 +913776 +5116 +2375876 +2033668 +1687647 +1416566 +515614 +215090 +2524168 +2563155 +681305 +2290849 +1998437 +1998420 +2128365 +1668477 +1269807 +1380436 +2458218 +2431267 +1725481 +1416585 +1854895 +2563097 +1957719 +215106 +1210564 +1998423 +2458179 +1319936 +1492632 +1725479 +1180150 +1534342 +1998430 +215114 +2431250 +1053739 +5075 +2431236 +2128344 +2014613 +1319944 +2458215 +2077996 +1210584 +2563073 +2316375 +1269801 +1404348 +1825181 +2458192 +1764409 +1687636 +1957721 +1301186 +2128320 +515592 +2128286 +2563099 +2708060 +2290851 +2128398 +2684393 +215122 +2128372 +1210581 +1950532 +2033662 +2458214 +191461 +2316350 +2458188 +1416569 +2128394 +913793 +2128306 +1772227 +2458203 +1180187 +5144 +1854898 +1301184 +953754 +1668468 +913780 +2128401 +1911100 +5103 +78330 +1987645 +2563114 +1725480 +1668466 +756361 +2021256 +1668473 +2078034 +1534310 +5068 +353873 +1145482 +2014615 +1180170 +2563145 +2431243 +1998427 +1416590 +1416611 +2524128 +1534347 +2316367 +2078005 +2777654 +2563077 +515600 +780352 +2708058 +1269808 +1416618 +1180185 +5076 +1687646 +2033672 +1416568 +2128430 +5124 +2128441 +681309 +5115 +2524138 +515585 +2128327 +1319953 +5153 +2033699 +2316413 +1614154 +2281171 +1269821 +2563221 +515645 +2128581 +2524237 +2563180 +1416670 +2033729 +2068104 +2524262 +2316391 +1706830 +2128637 +2128547 +2033707 +2128464 +2033694 +2128550 +2316418 +1725489 +1109131 +1319963 +1709352 +2357457 +913807 +1534398 +2458234 +2375903 +2563183 +1416630 +2128586 +433595 +780392 +1825225 +780358 +1655270 +2033705 +756367 +136036 +497065 +2033712 +1668500 +2524254 +433594 +2547934 +2431273 +2684398 +2078043 +1416666 +2635483 +2563220 +1269832 +2524221 +2033717 +2698138 +2730354 +780363 +1461416 +2128630 +1269828 +2128527 +853303 +2128471 +460009 +203337 +1534390 +2033709 +1614149 +2128518 +913817 +2563204 +2431272 +2128606 +756370 +2563208 +2720870 +1416631 +681315 +2698137 +936730 +2128493 +2128636 +1319960 +1709354 +2524264 +232547 +2742188 +2128507 +442669 +2458253 +1725484 +2524207 +2524243 +1709358 +780367 +2734891 +2357453 +394935 +2357450 +2281172 +1109138 +2563224 +995679 +421619 +2524212 +1416647 +780361 +191483 +2078065 +2563239 +42694 +2563233 +756365 +1709353 +1416648 +2249754 +2563202 +913831 +1534401 +1998458 +2777688 +1301194 +1703078 +1170967 +1998456 +756372 +475588 +2623910 +2128727 +1269851 +1984726 +1319982 +1534429 +1320000 +1957745 +2524320 +2524282 +2524316 +2777679 +2838361 +215137 +2375947 +2279239 +2563303 +2563261 +953781 +2011010 +2128672 +136038 +136088 +1668518 +1319968 +78380 +2290906 +2350085 +326555 +232562 +780413 +2563288 +2563313 +2128726 +1134422 +1534425 +1911101 +136051 +913835 +1349349 +1492668 +2128676 +42714 +1319967 +1687664 +2431289 +2128698 +2563423 +2458278 +2745365 +1812431 +1269858 +1416711 +1687658 +2563336 +1180206 +2033755 +2249763 +1687653 +2458268 +1534416 +1764428 +2375966 +1668515 +442685 +2078115 +1534412 +191485 +953789 +1319971 +2128666 +1342844 +2367558 +1950543 +1320004 +2563380 +2563341 +1940720 +2524276 +2563334 +2635512 +2563408 +2563318 +1515050 +2563274 +596200 +2777699 +1972316 +2777689 +995712 +136077 +2354152 +2563319 +995705 +756379 +2375959 +853363 +1083125 +2524311 +2563422 +1320003 +2635505 +2458276 +78389 +329332 +2563368 +1320013 +853330 +2128642 +1301195 +2623908 +1416699 +1053753 +1764430 +2777661 +2375951 +780412 +2316460 +1461440 +1957734 +649507 +1825229 +1461432 +1534419 +2375956 +2563402 +1750718 +913840 +2524303 +1703081 +853312 +2128762 +5193 +2563384 +2078092 +2128690 +2635518 +1416685 +995699 +2059300 +1492664 +2078112 +2563357 +780408 +2431284 +2078086 +460010 +900313 +995717 +1416700 +1416721 +1416716 +1957751 +995707 +2777675 +1391766 +737217 +515664 +215138 +2458280 +995722 +719896 +1681326 +1668532 +2128707 +1174768 +2524271 +1954303 +1416701 +2078114 +1515049 +2777662 +5202 +2078120 +1083122 +1957746 +2563362 +2777680 +2059301 +2838363 +1957749 +2078107 +1269852 +2078095 +913841 +1725528 +936747 +1492674 +681317 +756373 +730239 +907113 +2524279 +2249782 +913824 +995702 +1790494 +2524315 +2101897 +2563265 +232557 +1998459 +1349350 +596204 +2838350 +2728933 +2738067 +1709367 +2431279 +953792 +2563393 +2708085 +2563338 +2708100 +1534471 +2316518 +2316527 +2458295 +515707 +232583 +2128831 +2431324 +2431299 +1825256 +1534477 +1957772 +1717899 +1987654 +2014623 +394947 +515704 +2739391 +2563558 +1957788 +2128803 +995739 +596248 +1957784 +1843432 +2623912 +2524363 +42736 +1053755 +215182 +515710 +1614221 +1269874 +756381 +1380449 +1534455 +2350090 +756384 +1972319 +2078139 +2734903 +2375986 +2128873 +953828 +853367 +2128951 +515695 +2316477 +2033795 +853383 +2290939 +2033777 +1492690 +373022 +1614212 +1819391 +2033785 +1461492 +853391 +681334 +2524379 +995747 +1709376 +2078140 +1772249 +2730362 +913879 +1750727 +2563548 +2524345 +1668554 +2316506 +2128905 +2563474 +2249793 +853374 +596227 +2777713 +2742202 +2128818 +766657 +1534495 +78410 +1996190 +215163 +5242 +136131 +1492703 +2563532 +1534465 +2524355 +2720883 +596239 +936767 +2128912 +1668542 +1483001 +1668543 +2375980 +2290925 +2563527 +2458312 +2128810 +853395 +215184 +2524344 +596254 +2563450 +1772265 +1269866 +900324 +2563492 +433599 +232609 +596230 +1534437 +596250 +2011012 +2316539 +1534489 +913846 +780428 +2033773 +1972322 +1461470 +2375996 +1812439 +5230 +2524352 +5226 +737224 +2563501 +2742215 +953846 +2431303 +2742205 +2290941 +953847 +1053765 +2730367 +2316466 +707932 +2708096 +596245 +2739394 +1461505 +373024 +1854930 +136124 +1954304 +913860 +766670 +1668540 +936779 +1051578 +995738 +1764439 +442695 +1077303 +2563494 +42732 +2635525 +2524341 +1461486 +719900 +2033774 +1269864 +232601 +2563472 +2524348 +1026317 +136123 +2563524 +42721 +665119 +1772262 +5227 +1825248 +42726 +995766 +5250 +2524329 +2128784 +2742209 +2742206 +1709380 +2128840 +2033786 +2708099 +1664741 +1153818 +596247 +1534499 +2128812 +853382 +995774 +2128857 +329341 +2375974 +766658 +2128792 +2431309 +326557 +2563537 +995737 +2128938 +1996193 +5232 +2316513 +2316491 +2563460 +442698 +460021 +1725544 +2524365 +596226 +1492701 +756389 +596217 +1764433 +913880 +329337 +442713 +1492693 +326563 +995783 +1101654 +1145500 +1416741 +995782 +460016 +191489 +442707 +2316535 +1461498 +5253 +2281186 +2033791 +596237 +1790502 +1134429 +363285 +1492704 +329343 +460034 +515721 +515703 +326562 +1145501 +136135 +1825249 +2563497 +2516747 +2563518 +215181 +1083130 +1812452 +2635523 +394945 +2524356 +2128802 +596214 +1492709 +515724 +2290952 +1237361 +2563449 +2033763 +953838 +1534436 +1380450 +1614211 +649510 +136125 +2249806 +1349393 +1825300 +2635529 +5279 +342779 +2734918 +2026578 +1071934 +1950552 +1377564 +515792 +2078202 +853448 +2524384 +2316578 +2524402 +1534557 +5302 +2129045 +515765 +2014638 +1957808 +2078205 +1492723 +2249818 +2563646 +853463 +2458333 +401627 +2698166 +342777 +1709391 +780489 +1320058 +2129050 +780476 +2290996 +1687685 +2281203 +1380453 +1998496 +329345 +2367560 +1709388 +2708102 +1416759 +2563659 +2635532 +1301213 +2129120 +1534522 +1819399 +1492744 +2698186 +2458343 +1180236 +2431348 +394961 +342791 +2524421 +1764441 +2376019 +900327 +1053768 +2698187 +2316542 +1320043 +2698165 +1854952 +2316543 +1342849 +1998507 +681344 +2458351 +1998488 +913890 +5267 +2563567 +78428 +2059330 +1957806 +1269880 +737236 +1957798 +1391767 +2751654 +1492722 +2078164 +1825280 +1972353 +1534539 +460038 +1461519 +2068112 +42760 +342814 +1772286 +1269900 +1492728 +596259 +1416790 +1210622 +681341 +342797 +780481 +2563587 +2563661 +1825295 +2458357 +2708118 +2524441 +2734917 +2563644 +2742223 +1819398 +2742230 +2563643 +1349394 +1825271 +2316574 +2730379 +780464 +515772 +2011019 +342806 +2128961 +2129072 +342786 +1301206 +2129117 +1660395 +953854 +78416 +596269 +913888 +1957826 +2516750 +2524440 +1687680 +2357477 +2129088 +2431340 +2281201 +2129085 +2129131 +1483007 +2068124 +1301203 +136144 +2281200 +1301217 +2078220 +2281208 +215189 +780502 +515776 +5270 +2128960 +42752 +2129105 +2458354 +1349407 +2068125 +2129046 +2129118 +1380456 +853442 +383658 +2281202 +78433 +853426 +2129014 +2129018 +780471 +1320032 +442732 +1854933 +2033804 +136158 +1614225 +2458324 +1320037 +2524411 +515795 +995790 +2129108 +1825287 +780494 +1764456 +2730381 +2078170 +353883 +2129009 +2068126 +2524419 +394954 +2708109 +953857 +383660 +248537 +2563693 +1972374 +913905 +78439 +1768525 +2291008 +913910 +1292225 +136175 +1534571 +936791 +1269913 +1750729 +1534587 +2350101 +936799 +2033830 +1386731 +2129163 +596304 +681368 +995803 +329349 +1492772 +5306 +953863 +2291007 +1210628 +596315 +1703088 +307894 +1461545 +215196 +232624 +1772296 +373028 +1292223 +1461557 +2635535 +2563723 +780506 +853512 +1854955 +2563677 +2691509 +1614241 +203358 +326567 +1764461 +1725555 +1320085 +2635542 +2078235 +232632 +2458372 +2635539 +1709400 +596290 +1461546 +373037 +1492767 +2730386 +853495 +2129171 +780505 +707938 +2563665 +2563691 +2376037 +853509 +853510 +1053774 +853514 +2563712 +363298 +2376021 +596321 +900330 +2563679 +1047896 +596311 +1854979 +2129167 +2129164 +2078222 +353888 +2563709 +1854981 +2563716 +2635541 +2563715 +2458370 +353892 +953865 +515806 +2033823 +363305 +2078223 +737243 +1843441 +2635549 +2059347 +203363 +2751656 +2431370 +2708134 +1461572 +596329 +1614255 +1492782 +515839 +737244 +1416810 +2129212 +203366 +1051580 +995816 +460042 +2563769 +2249829 +2357494 +1320105 +2281223 +2563761 +1349434 +2274167 +719925 +853529 +1375062 +1534596 +2014668 +596333 +2350106 +2101908 +596338 +936802 +2316610 +442740 +1825316 +737247 +1972383 +1101657 +1768526 +1461568 +1342853 +1461560 +1349446 +853539 +2014678 +42780 +596326 +2316607 +426514 +995811 +853537 +1101659 +1180241 +596330 +2524482 +707953 +1972386 +2101905 +2563748 +1461567 +1461570 +1320092 +2078248 +1416806 +42835 +136305 +136321 +2376068 +1772304 +2249878 +995888 +596372 +232663 +1812472 +853596 +1461641 +2350118 +5318 +136282 +596375 +936836 +2412004 +2516753 +136273 +2249890 +995871 +42839 +1750735 +2316612 +853601 +596368 +2376073 +1365336 +2025584 +936827 +853562 +2516752 +1461582 +995865 +203378 +1812470 +995850 +2059376 +1703090 +421629 +1933935 +1515085 +136288 +1461612 +766686 +1292232 +232655 +42875 +1461619 +853573 +1933938 +1416813 +289143 +995833 +2033851 +42814 +936825 +853642 +2516761 +42885 +1614315 +2249876 +2249867 +1717914 +2412006 +307905 +136212 +2563793 +995831 +1750759 +136231 +136262 +264507 +1461631 +136315 +1461577 +1090208 +232648 +2033845 +1614309 +2068140 +264478 +136298 +596366 +357840 +1461594 +853586 +2059391 +1051581 +2059431 +2249884 +136266 +136228 +136249 +264516 +136253 +203370 +2078257 +232669 +995848 +2249855 +1461671 +1614313 +853671 +1515089 +2059408 +596358 +936839 +2291024 +853563 +42818 +707959 +2078259 +264501 +42841 +2249847 +853593 +1515088 +1968871 +136319 +264474 +995822 +264510 +2516755 +351079 +307910 +2059367 +1292238 +596354 +232637 +853621 +2059437 +707958 +853557 +1812465 +995892 +136188 +1812476 +2249920 +1461657 +2059362 +2059436 +2129237 +2249842 +42799 +853603 +2412001 +264493 +2376059 +1812475 +1292235 +136314 +995827 +2071881 +42866 +1957844 +264475 +853626 +2002982 +1534605 +1461603 +136222 +2412007 +1461646 +1292237 +995849 +1461578 +2635554 +2059416 +2411999 +1933942 +42861 +1968870 +363311 +136313 +232642 +307900 +1071942 +433610 +2059405 +596385 +398698 +1053777 +2078276 +1377590 +1166644 +136329 +1681342 +665142 +681383 +2376093 +2129294 +853779 +1320121 +953884 +853708 +1237387 +398700 +853774 +136428 +401631 +2101936 +2129368 +995912 +2563808 +1320117 +596413 +433629 +2742237 +2623929 +2684406 +2129339 +1237391 +1614369 +681380 +2563832 +2059446 +2281233 +746203 +2129330 +913931 +78466 +2708153 +136368 +232685 +2458391 +78459 +2129370 +78474 +1933954 +2431376 +1812489 +2291053 +1058539 +1972394 +1101666 +1515106 +913937 +853755 +853798 +2563824 +1933953 +2635558 +2728938 +136416 +515884 +2412011 +1461712 +1166649 +1515104 +707975 +2563825 +1153820 +2316633 +1614340 +515890 +1899034 +707979 +2249938 +486898 +2078270 +1843454 +2129276 +853806 +398716 +1053776 +665136 +1051594 +398703 +1534611 +2563836 +853706 +2563811 +203416 +995911 +2443649 +1404368 +515868 +1843456 +1957852 +596402 +1614359 +2524502 +2350136 +707970 +1047901 +2376091 +1515121 +515880 +353894 +203410 +2316639 +707977 +1825324 +2078307 +2291041 +707971 +596409 +1854995 +853814 +2563819 +719932 +2249971 +1058537 +232698 +1614348 +1998522 +1515105 +1492806 +1614357 +649522 +1416831 +203396 +2751661 +1071957 +1957856 +665140 +1614349 +2563841 +1534626 +2728937 +2129321 +1483011 +2129261 +1534633 +2014679 +2078295 +2350134 +2376103 +1854992 +1957850 +2249962 +433633 +460065 +136418 +2033865 +936849 +853801 +136431 +2734926 +2033875 +2129320 +756405 +1614392 +1461707 +136406 +853769 +1614344 +2708154 +2129365 +746205 +780537 +853788 +398693 +780547 +394974 +5333 +232694 +2563803 +1709409 +5338 +1492789 +136446 +1854996 +136413 +433639 +2249958 +2033863 +1614337 +42898 +936850 +2563826 +2354162 +232681 +232721 +2129341 +2291046 +1668579 +136341 +2129499 +1972407 +326571 +1998539 +1843459 +681416 +2316686 +2350143 +2101960 +1709411 +995952 +2059474 +780568 +1461758 +995963 +264537 +78485 +2563900 +2458416 +1534671 +2078313 +191506 +433649 +853849 +2431399 +853885 +2008017 +2563905 +2563932 +1461759 +1660404 +995944 +1947737 +853827 +1768536 +1053786 +1071970 +401635 +1534657 +136518 +1972415 +1825338 +2563881 +1416840 +398743 +203441 +853919 +2129450 +2458413 +2708170 +2563851 +853876 +1954314 +2708168 +2250006 +2563950 +853843 +1320128 +853820 +1492840 +2563945 +2563867 +2078345 +136511 +853922 +1153827 +853874 +2357513 +2078334 +1515142 +995981 +2458406 +42934 +1320138 +596442 +2281256 +2129483 +708001 +136521 +2563890 +2563963 +853916 +1940733 +401645 +953907 +2078328 +1461773 +2719172 +1998542 +2742243 +203425 +2078324 +853895 +2129427 +2078353 +5364 +515920 +2708165 +853822 +936875 +2078347 +2129397 +995984 +2129381 +1614441 +681390 +746215 +2129426 +136474 +1416845 +780590 +2078373 +2059470 +780576 +42916 +737263 +136507 +486908 +2623936 +681398 +78494 +780574 +745702 +1492814 +2249996 +853888 +78489 +2068144 +936863 +1614426 +515902 +1416864 +2316674 +995973 +232728 +2431410 +1349458 +936865 +995945 +342846 +1416872 +2742238 +2068146 +1534664 +708003 +136472 +2734932 +2014683 +342830 +2250002 +853855 +1668581 +342831 +853833 +1461753 +2563911 +2708197 +2249992 +2563875 +681395 +1725577 +2431389 +2033895 +460073 +203435 +1492834 +442788 +1301237 +853841 +1534668 +515922 +2357510 +2033901 +2014681 +2708187 +1515147 +2129462 +136464 +1166664 +1515134 +707986 +2350149 +2249988 +326574 +2101958 +2078316 +1687700 +383663 +1045680 +1180256 +2129487 +2033884 +953893 +1342860 +1687699 +2431382 +401644 +2129488 +1534677 +1320142 +203434 +2350146 +1614442 +2431419 +1681353 +1320134 +515899 +1725579 +1614420 +398733 +1954315 +665144 +515907 +900341 +1972401 +2563960 +2129445 +2443650 +1180252 +995986 +995947 +2129373 +2734933 +1365339 +2281241 +1492846 +2730419 +203437 +2129383 +737254 +394986 +2249995 +2033887 +338335 +2129390 +2129498 +1972420 +1461728 +913946 +1940730 +1703095 +42926 +232723 +2129375 +1166657 +203447 +2291078 +707988 +2129374 +2635563 +853844 +853851 +42931 +2357516 +737257 +1166662 +1180261 +2129396 +78478 +2563856 +2431392 +995971 +1416842 +1957872 +2250012 +460083 +203439 +433650 +42919 +2129580 +2751670 +913947 +2129582 +2564041 +780606 +2376127 +2078379 +2129663 +2078389 +2011060 +2708214 +1855007 +78504 +78521 +2524573 +2431455 +1083138 +780641 +1492883 +2564008 +5382 +5389 +1416899 +2376151 +1950576 +780653 +2524570 +780614 +2708215 +2129584 +2564115 +1483031 +1416888 +2564071 +2635579 +2129618 +1668606 +1269962 +442792 +1725584 +78509 +1764480 +2458431 +2129555 +2129529 +2316743 +78511 +2698206 +2742260 +2376143 +2129647 +853936 +2431452 +2068148 +2458493 +5373 +780616 +2635573 +2564022 +2129589 +2564020 +2708205 +2698212 +2684414 +1077307 +1668601 +2458453 +2751674 +515947 +2291122 +78530 +2078433 +2281266 +2129659 +2751671 +2564111 +2316741 +2734936 +2250022 +2458486 +2129619 +2524550 +2720921 +2078396 +2129664 +2635580 +649537 +1957899 +2291124 +2078402 +2129646 +2431451 +1855010 +2564108 +1855016 +1957895 +2129623 +2316697 +2458459 +2563999 +78516 +780618 +2564016 +2316702 +780660 +1416875 +2316703 +1940743 +900348 +913951 +1534694 +1492891 +2564002 +2458475 +913962 +2564080 +2129564 +2730428 +2316739 +1416894 +2078426 +2129591 +1987669 +2129567 +2376142 +2078411 +1940751 +2524546 +2431439 +1668607 +78517 +5365 +2376135 +2291085 +913964 +2524569 +2458420 +2129700 +2564031 +1269951 +5402 +2708206 +5383 +2281270 +2458439 +2524568 +953914 +1957904 +1416901 +2458424 +1492867 +756412 +780654 +2376145 +2281262 +2458446 +2524591 +2316709 +2730436 +2698236 +1380521 +2777746 +2033908 +2357535 +2291166 +2564182 +2691514 +2068159 +2431491 +1386744 +2708258 +136591 +649556 +2011074 +1534713 +136576 +2734947 +1772337 +1386749 +2129767 +2129842 +2129871 +2129744 +1377607 +2014694 +596504 +1972444 +1687735 +515966 +2129738 +2524614 +913967 +1386746 +1646396 +1534710 +2101969 +2291194 +730252 +2033909 +1534708 +2431517 +1380498 +596488 +2524654 +1270020 +2129721 +2742299 +2078450 +1825377 +136543 +2734956 +2742283 +665174 +2742276 +2008019 +1310586 +1386759 +1292278 +1269998 +1320198 +1408430 +2129875 +2250027 +2281284 +1380516 +2777737 +2129881 +2129768 +2129843 +1492901 +1349469 +515968 +1386742 +2376161 +596471 +1825360 +2524651 +2777723 +2129844 +2129754 +515967 +1292273 +2524629 +136552 +2458507 +1377606 +2458533 +649547 +1292253 +136549 +2291185 +2291154 +232739 +1492944 +2011075 +2291159 +2742280 +1668615 +596481 +1083141 +1987670 +1380486 +2129775 +2078489 +596519 +1972474 +2564196 +78540 +2777763 +2698240 +2033916 +136582 +665181 +2698234 +2730449 +1270010 +2684422 +2458515 +1515158 +1292263 +1825371 +2129813 +2129712 +1292251 +2564159 +2376158 +853942 +2698233 +1534702 +681427 +2291187 +1492912 +1957939 +1972438 +1053792 +1145515 +719941 +2316771 +1972454 +2129808 +2458541 +2524633 +1320167 +1994352 +78538 +1825381 +1292277 +2014693 +2524664 +515982 +1270014 +1972443 +78537 +1534729 +649564 +1210663 +2068157 +1957944 +665168 +2129703 +2730458 +2129811 +1269990 +953925 +1772339 +1269985 +665178 +1954316 +596479 +78551 +1109161 +1237402 +2291174 +649549 +2458525 +2564192 +2524660 +2635583 +1386748 +1292256 +2524615 +1349472 +2376169 +2777756 +2524639 +1320229 +1320187 +665184 +2635586 +1377605 +1972432 +708014 +1825362 +2129825 +1957927 +2316770 +665180 +953924 +2564121 +1320176 +996019 +1461799 +853940 +719958 +2524648 +2742269 +2730465 +78536 +515970 +2316781 +78543 +2011068 +1972467 +2524625 +2458518 +2742282 +2014690 +1320204 +665177 +2698222 +1320200 +665149 +1825376 +1320212 +2431500 +2059475 +996014 +2078453 +596494 +2708226 +766717 +1772334 +596480 +665164 +1210662 +2458534 +42948 +136609 +2745384 +2068154 +2281332 +1349477 +2250064 +136638 +737277 +2376188 +1940764 +2376177 +203459 +1416932 +1957965 +854014 +232747 +136629 +2524746 +5417 +936887 +996027 +2623937 +780684 +2728948 +264543 +2698245 +1996199 +516040 +2458553 +708018 +1320255 +2524717 +596552 +1461818 +2129959 +1349480 +2547954 +2281338 +2281330 +853969 +2524687 +2431518 +2458564 +1855022 +2458566 +1461835 +2564266 +353899 +1077322 +780692 +596544 +516017 +1825392 +1320261 +2291217 +1534744 +853966 +2524758 +2129929 +1404395 +1994353 +1855028 +1957954 +2130008 +2564230 +1996202 +2130002 +2564265 +2524751 +766732 +2705233 +1053810 +1487283 +2078526 +2720936 +2059515 +42955 +913971 +2458568 +2129895 +2291234 +766730 +1668619 +2078515 +2376181 +2564242 +136631 +1301253 +1053806 +2524752 +2291199 +2129913 +2564277 +1658597 +2291211 +2524733 +780677 +1365341 +2021276 +1812509 +2250059 +1972484 +649574 +1998554 +2291212 +2078522 +1940769 +2129937 +1129951 +953929 +2431533 +1408439 +2129949 +1940770 +1812513 +719965 +2691515 +1614474 +2357547 +2078506 +2357536 +2033933 +2524673 +5421 +1310590 +2130001 +780681 +596562 +2129957 +1764505 +900366 +2250041 +215243 +2357548 +780667 +1053804 +1855029 +2376189 +1416925 +338340 +1790526 +1292281 +232756 +136630 +203452 +2130003 +232759 +2130020 +936895 +2564257 +2357538 +665194 +1534735 +2129932 +1534743 +460091 +853963 +2524696 +1090219 +2564253 +2129889 +2129995 +2281331 +1461829 +215244 +2068164 +232749 +1492969 +329378 +1461823 +2524756 +136661 +78560 +2078525 +191520 +516078 +2130038 +401675 +78577 +1071988 +2308249 +264572 +1668631 +2564304 +2524772 +681456 +1386802 +2078544 +1725594 +2458583 +2458602 +1380528 +2250069 +2458595 +681468 +708032 +442809 +1072000 +516123 +2742319 +516111 +2458592 +719973 +2431567 +442830 +1250975 +2635602 +5423 +1349486 +1957979 +2524773 +2011092 +1668633 +232775 +2524790 +1957974 +1380533 +2524774 +516061 +1386804 +2291259 +442831 +2431550 +1772357 +2564322 +1614499 +2316801 +596602 +248567 +2751694 +136675 +215258 +136705 +996039 +2564306 +203463 +1998566 +2635597 +1072008 +735086 +5431 +78587 +2524788 +1957982 +2564349 +5444 +2458644 +2281353 +708052 +2458635 +596610 +2751696 +1210672 +2130077 +1614506 +232776 +2728951 +2458626 +708050 +215255 +2742334 +1534773 +953937 +1972500 +2564300 +2458652 +136685 +2281354 +1668635 +2564346 +730254 +264571 +203486 +2357554 +1534781 +1071983 +996061 +2250080 +1062986 +1534772 +2458613 +1386798 +2431553 +203485 +2564285 +1614505 +649579 +2004122 +681461 +442837 +2751697 +2354168 +2458590 +1972499 +232800 +1725597 +2734965 +708027 +516088 +2291267 +2708270 +442811 +2376202 +264548 +203477 +2524783 +719976 +2564334 +516120 +1668634 +136686 +1998583 +1180268 +2564295 +708044 +2250074 +1461846 +1349488 +1950585 +936909 +136707 +136702 +2730484 +516077 +2730476 +248568 +2734963 +1389733 +1386797 +401657 +2564343 +681449 +1385386 +442829 +2458617 +401677 +2564323 +996047 +1320275 +264593 +215253 +1386792 +1534770 +1534778 +1994354 +475611 +1709426 +2130050 +1320278 +346349 +1614573 +996095 +854063 +433689 +854141 +460128 +1614680 +2059532 +1994356 +2564368 +78610 +329399 +232841 +708075 +1614576 +460100 +1812519 +326590 +1614556 +1681367 +854119 +136814 +136750 +264615 +936928 +1614623 +460102 +2059525 +914000 +373063 +1461913 +373060 +1416946 +936922 +232857 +2524819 +42980 +264616 +854150 +329386 +433664 +1614591 +1646399 +2130121 +854064 +2250231 +42998 +486929 +1994358 +1153830 +351087 +1210679 +936952 +329421 +1614645 +854115 +2291279 +1614684 +2564370 +2316812 +329427 +1950586 +1416949 +1614599 +1237425 +232823 +329391 +2059543 +1101696 +596615 +854118 +2376229 +1270055 +1534793 +854148 +1614619 +136844 +264639 +433681 +357849 +1301263 +936924 +1461900 +2078574 +486922 +1534808 +2130204 +1614557 +1461861 +1237409 +486916 +136769 +596642 +2623941 +1994359 +2059522 +2250237 +136810 +1855040 +136827 +2412021 +43001 +1614572 +203500 +2250172 +357856 +43021 +1614560 +460117 +346348 +203522 +1408448 +1416957 +596669 +1134457 +338341 +460127 +442846 +421646 +2250130 +2458664 +1083162 +2130193 +996073 +136846 +2250170 +373050 +136766 +329409 +433670 +2316806 +1772365 +433687 +2059565 +780708 +936942 +346336 +2350170 +1261104 +708073 +2025591 +232843 +2130117 +1614662 +2367571 +596667 +854179 +1461895 +1534803 +203520 +363330 +681473 +78607 +264640 +264609 +248569 +2101987 +460093 +1534811 +1166669 +2059573 +1072015 +2350169 +1461908 +1614605 +936934 +2250192 +136773 +1461893 +854135 +136771 +78614 +136818 +398757 +1812544 +936948 +596638 +2516771 +996083 +2059577 +2250171 +2250173 +2033985 +264626 +1614525 +1614574 +373056 +1614621 +136842 +2350179 +398758 +203532 +43011 +708063 +136797 +1261097 +136770 +2102001 +2059549 +1614666 +681478 +753084 +433678 +1047903 +936927 +1933960 +2250152 +649594 +1461937 +2376218 +2130089 +136787 +649596 +2130189 +1492985 +353908 +264608 +136880 +936933 +2564373 +351090 +596644 +232851 +1812539 +373059 +2250224 +1614644 +2130145 +433665 +5452 +1534812 +1812543 +2350172 +996126 +43007 +1614532 +2316803 +1416947 +1141563 +1261099 +2130191 +136862 +232858 +1101686 +232849 +2250097 +1072041 +1614670 +1461960 +596635 +2078567 +2130111 +398778 +1153833 +136831 +1461947 +1614595 +936945 +1301262 +2033975 +2250165 +460116 +486921 +780711 +1933957 +2250223 +516148 +1614658 +136795 +1461912 +854112 +2059536 +2014719 +136897 +1855068 +1270061 +1534854 +1534847 +5466 +5468 +215287 +191524 +5472 +1614717 +1534876 +2130251 +1416975 +2004124 +516201 +1320303 +1534877 +2034025 +746234 +1725622 +78650 +596683 +1855052 +2708273 +78646 +596685 +854203 +1320290 +735091 +136902 +516176 +1843470 +1855078 +2635614 +2130278 +1210689 +735092 +2316831 +2130220 +1725615 +1947756 +719999 +2130303 +1855063 +2635621 +1534853 +2014721 +719998 +1320295 +215274 +1416978 +1166708 +2130240 +2739410 +596682 +136903 +2130273 +1668650 +1320301 +1972508 +2635625 +78640 +1210694 +516190 +2034028 +1534846 +854219 +1668654 +1725601 +1210685 +516181 +1614712 +1416986 +1534822 +596684 +191525 +1270057 +1349514 +2564379 +78632 +780724 +1261105 +1534827 +1534874 +1349503 +1687767 +1416984 +953954 +2316827 +78648 +78618 +1461996 +2078584 +2376238 +2635623 +1646400 +2316842 +1911125 +1534832 +1855050 +373065 +1416982 +1349517 +681495 +2745392 +1250990 +1416979 +1957988 +708100 +486939 +2316846 +1416974 +1461997 +2130239 +2564399 +1855074 +780734 +1492995 +516194 +2376248 +2635612 +1320306 +1404401 +2250325 +1994363 +596698 +232890 +936971 +2130331 +2250323 +1614770 +2376254 +854278 +136950 +1668664 +5488 +43033 +2130314 +2250378 +2250313 +203565 +2130338 +2510420 +136990 +2250296 +203557 +2458694 +596694 +2623943 +1614789 +401680 +136933 +346366 +2078592 +1614764 +1166711 +2250345 +1462016 +1812557 +486955 +2376261 +854233 +346376 +2350210 +2250377 +1237456 +1408453 +1717933 +2623942 +5498 +854246 +460160 +766748 +1166718 +1237463 +388647 +1658599 +232891 +516205 +907143 +1703157 +2250327 +43048 +1153838 +43036 +2279243 +996160 +43068 +2250375 +936965 +854274 +232871 +2376256 +136948 +1462036 +2034037 +2635630 +136999 +766745 +1933971 +43042 +264658 +232876 +996175 +346378 +2250356 +78660 +681505 +2564424 +854263 +1072043 +475640 +2130337 +854234 +1166726 +460168 +232885 +1141567 +1703128 +1122066 +2034030 +43078 +136927 +136932 +1462030 +43045 +1687772 +1614781 +1614794 +1180277 +2350202 +203546 +2250295 +136977 +460140 +1047905 +1703151 +1462006 +460148 +649608 +136968 +854235 +203553 +203564 +2308270 +2250298 +1462005 +1933969 +1180279 +486952 +232870 +996181 +460138 +346363 +1614751 +264662 +1614739 +460141 +1072051 +1717937 +1198389 +596775 +708171 +1462085 +137119 +708165 +596913 +203586 +2524853 +596838 +137068 +516256 +730275 +137038 +2547967 +2034050 +2250437 +596945 +1320312 +2524850 +351107 +1515229 +43117 +1072056 +1717959 +516259 +460220 +936990 +203582 +1493007 +708155 +1037656 +596797 +736234 +460203 +1198379 +137115 +137031 +232926 +1825415 +708219 +1493002 +1417008 +1950591 +442867 +596847 +596801 +2350211 +665270 +2250468 +854329 +373082 +137092 +1515243 +351102 +2357573 +137036 +137102 +708201 +137032 +1954328 +996253 +708199 +1614804 +996254 +516272 +2059618 +2059600 +137062 +2250506 +854326 +665231 +2376268 +596778 +1899091 +996204 +730264 +460217 +1101707 +854388 +232911 +1462100 +2547969 +1717953 +137123 +2130377 +1614874 +708152 +596871 +2130410 +137057 +1026321 +596851 +2130376 +264672 +665278 +665275 +854332 +996228 +596752 +2524860 +351093 +665239 +953974 +1270071 +596791 +1614835 +460212 +736232 +2130398 +596805 +708202 +1109170 +996217 +708217 +665254 +137047 +596726 +2130388 +596709 +203593 +1072065 +2250407 +516263 +854323 +2250466 +2014723 +351113 +232938 +996259 +2250496 +373091 +1462137 +1614861 +1237478 +1652641 +137133 +2250475 +1972517 +232928 +708200 +596712 +596925 +596933 +1037649 +1122084 +1462081 +1717958 +1709434 +137051 +1855096 +351116 +596899 +232914 +2102025 +1122087 +2059621 +596758 +2851668 +2250430 +1652649 +137117 +2102021 +2412041 +1652645 +1717941 +1972522 +2059628 +665233 +1122081 +232910 +730271 +854354 +596822 +1614806 +2250501 +5522 +1614860 +1292300 +854343 +596891 +2412046 +854320 +1072061 +78676 +43097 +854399 +460186 +2034041 +996238 +681523 +137150 +1180287 +1310597 +421654 +1072063 +2350222 +137109 +516270 +442868 +1825416 +596897 +1462051 +516280 +1703165 +596892 +730270 +43114 +1940778 +1301271 +2059619 +137099 +1109169 +1237473 +996229 +708132 +1614814 +681524 +137059 +1957993 +5521 +665230 +460200 +43120 +996240 +780764 +1369592 +1614805 +516285 +596877 +596883 +2250435 +1462066 +1462112 +1462153 +953982 +373094 +137187 +232979 +1493014 +996308 +1462152 +708248 +2250558 +2130516 +232970 +937022 +137181 +2130461 +1534911 +1141584 +937008 +953977 +1198400 +1417021 +2316871 +1899095 +2357590 +2316893 +854498 +1725631 +996288 +1812570 +264701 +914023 +1292306 +1134461 +1493018 +2316874 +708240 +708232 +398784 +1134469 +2316886 +2564451 +2524889 +1703168 +854463 +2059638 +2130419 +1855128 +1380541 +914031 +2458712 +2250520 +2130448 +1129953 +2130422 +232950 +1534927 +1270076 +1911128 +248579 +937007 +708245 +1180303 +2564438 +43153 +137197 +1534916 +1534908 +1210712 +2130462 +708244 +1614886 +780773 +516302 +1534912 +203595 +2564441 +363362 +2564447 +137174 +2458715 +1417028 +137219 +1417037 +2034065 +937013 +2250537 +1764523 +2130488 +854418 +1053827 +248577 +1812569 +2564430 +1772400 +2376288 +1825425 +2291335 +1462172 +137176 +1180301 +1349523 +2376299 +1417035 +2034059 +1462175 +937018 +854448 +43182 +1855116 +203619 +1614888 +78682 +2250545 +137226 +137195 +1462162 +2130545 +596970 +708236 +2130511 +1899100 +232969 +854506 +1899094 +1493024 +43150 +1141583 +1377626 +1768554 +996297 +2316878 +996298 +780774 +1083166 +1855122 +854432 +1174790 +1772396 +2130532 +1462189 +1843481 +1855107 +914020 +2130529 +215303 +1515266 +2564458 +708238 +1320322 +1764520 +854421 +1855113 +1462166 +1825428 +780784 +137202 +1462199 +2250543 +1462165 +346384 +203628 +1077329 +1772392 +1534925 +137179 +1772382 +43162 +708249 +1668669 +2458728 +1614879 +1072073 +137220 +342869 +596952 +1772387 +203623 +43148 +43161 +43143 +2291351 +2524871 +953981 +854509 +232942 +1614904 +2028336 +1515265 +2130453 +2547973 +1462271 +1493033 +1950595 +1614941 +1462272 +1320332 +2250618 +78697 +2635653 +43229 +1968876 +1072093 +1462325 +854663 +937032 +1462321 +516320 +2739412 +2059726 +2130685 +1462320 +708276 +1462365 +708255 +1417049 +708257 +137331 +329444 +1668681 +1462242 +2250666 +1493038 +373097 +346403 +43231 +137254 +516338 +516336 +854665 +2130566 +1310604 +1615053 +937064 +2316917 +2281386 +1764528 +2059649 +137296 +1072090 +2316896 +735098 +1614982 +854682 +137278 +1134473 +854698 +2034077 +953988 +854573 +2250639 +597012 +1812582 +1417041 +597011 +854662 +2250681 +708266 +1725636 +2524897 +2564477 +854585 +1933980 +232995 +854514 +766787 +1855144 +2316898 +2564498 +780791 +1957996 +2130610 +1614935 +854632 +1083175 +1534937 +233037 +2130558 +665291 +203654 +1320330 +2350252 +708287 +264707 +1462255 +854578 +2564513 +1109176 +2034067 +996331 +43238 +1515286 +137239 +854664 +1947763 +2250682 +1342887 +2350249 +937039 +2250705 +854531 +937048 +996373 +433709 +854607 +854666 +937046 +137272 +1417068 +2130631 +854725 +597104 +2695142 +1310603 +137247 +2130621 +1772410 +649630 +2102028 +1122097 +1153842 +264712 +1237499 +854535 +373102 +1614927 +2250582 +756439 +1534936 +1462259 +854547 +2059666 +854538 +2350241 +1166747 +597008 +2059717 +854683 +1515280 +516354 +2281381 +996360 +43207 +597040 +1615042 +2130568 +2130550 +1534962 +2250617 +1122094 +854677 +780793 +516330 +2130623 +2376301 +996357 +1614946 +137248 +2059727 +2250612 +203637 +2250574 +2250566 +2458742 +1462370 +233001 +596994 +854513 +2130603 +597064 +2250629 +1462275 +996343 +996328 +516319 +1825443 +2708279 +203666 +597052 +597021 +2708282 +1534961 +2250719 +1153841 +516316 +2281383 +43205 +1687794 +1462223 +2316895 +137324 +1462300 +1131924 +232987 +2350258 +2130611 +233027 +1072088 +2635657 +43241 +2130617 +854678 +766769 +2130576 +1462296 +1994374 +516359 +2130687 +1462258 +1365351 +2059695 +597032 +2130572 +2059681 +346393 +1462372 +854708 +2059678 +2250720 +232996 +854534 +43206 +1487291 +516342 +1166746 +1703180 +137287 +1972526 +1614997 +597006 +43195 +1703186 +854691 +442886 +342881 +1210720 +516361 +342880 +2564471 +1462265 +766784 +137284 +398789 +2034083 +1812595 +2431593 +708259 +914032 +1292320 +5569 +43220 +137308 +854653 +2102031 +2250697 +1166744 +1417063 +2250713 +43208 +398787 +854637 +1462363 +2250614 +1462238 +996338 +1493039 +766799 +2059716 +708285 +854723 +2130559 +1984760 +1615006 +1417047 +1122100 +1972527 +1237508 +597004 +516344 +1072120 +2130777 +2250752 +137410 +996466 +1899115 +137396 +1462425 +996456 +708303 +996410 +137402 +2130718 +233061 +137413 +996434 +2025599 +137380 +1855163 +43272 +2130775 +43279 +137356 +996401 +137364 +516374 +43310 +2777787 +43260 +1615061 +2250742 +43314 +1812618 +1045686 +43259 +2250741 +1615136 +1681398 +597125 +1911137 +708301 +516376 +137435 +2250758 +2130737 +2130761 +2250755 +516366 +1462381 +2130754 +1462400 +1615119 +137375 +2078634 +43300 +2316931 +1812613 +137423 +5578 +137434 +1855158 +1534988 +2350287 +233069 +43288 +996485 +854785 +1615131 +996386 +215311 +996487 +854740 +1994378 +2350269 +2250770 +854745 +854751 +1493043 +1615082 +1210735 +5587 +2102044 +2316933 +1615126 +996405 +2130726 +1417079 +137463 +1166763 +233058 +1462429 +1166762 +854814 +2034125 +2777795 +854767 +854793 +2102045 +1417078 +43253 +597123 +2564528 +137394 +78709 +954001 +996381 +137437 +1668690 +2564537 +5604 +597115 +43264 +1122101 +996474 +1615142 +2777794 +2250754 +708294 +43289 +2250787 +43275 +2316935 +2130712 +2250730 +2564542 +1855155 +2130778 +854795 +1145528 +708295 +2635665 +2130704 +2130779 +854741 +2564540 +2250764 +2357600 +2250797 +1462404 +996418 +43274 +2316942 +2250795 +2130776 +137462 +996455 +597144 +2777782 +1515307 +43317 +1515310 +137404 +373117 +1122104 +996411 +1615146 +1855152 +137432 +1210738 +137414 +1072107 +137472 +1462398 +137477 +1750826 +2564535 +1072117 +2350268 +953995 +2316928 +137371 +996447 +2059747 +1725646 +137431 +1681396 +516377 +137425 +1615103 +338360 +1615145 +2250811 +1320344 +264723 +1237543 +1703206 +907167 +460291 +137529 +2354174 +1237521 +137591 +1462443 +766821 +516393 +398796 +1812635 +996523 +1790558 +43340 +1534996 +745731 +2059762 +766855 +264725 +1812644 +1615180 +233135 +937087 +203703 +1045687 +43391 +2130784 +2679678 +1668698 +137550 +1174800 +1261128 +346409 +373125 +215324 +137493 +2250920 +137502 +2250887 +954013 +137508 +1134481 +353917 +1934008 +1462470 +1515324 +1166801 +2838379 +329469 +43376 +233122 +2376315 +1899128 +1725652 +2250918 +137513 +1972534 +264742 +597154 +2130798 +2250899 +5623 +1301276 +1462516 +2130932 +1320338 +2350302 +2034131 +1462508 +137483 +329452 +996562 +346431 +766819 +2777814 +937082 +442898 +1166788 +2250855 +137494 +1825452 +2130834 +996509 +780834 +1131925 +756457 +1462489 +233113 +2130820 +78736 +1668700 +2130916 +1515312 +1709445 +1681417 +215321 +1462453 +137598 +2130922 +43339 +2510469 +1408471 +346433 +1072126 +326598 +2838380 +1462462 +2130792 +766826 +1122112 +2510448 +1261127 +264717 +954010 +1166785 +264767 +2130876 +264733 +1166769 +756454 +398798 +708308 +2250816 +233132 +1725668 +2250921 +137575 +460287 +2250809 +1725655 +780828 +937092 +1812650 +1166791 +307950 +43384 +1342892 +516389 +2130879 +373126 +854929 +137499 +1462542 +1198414 +1122114 +2458763 +363376 +1072122 +1515319 +1462471 +357897 +1166781 +2250825 +2412053 +2130854 +780841 +2059760 +1534995 +1493047 +1750859 +854921 +854863 +1615215 +996550 +353918 +2250923 +2250884 +1615166 +1812638 +137522 +1493055 +766836 +2564552 +854882 +854894 +1855166 +1768564 +2059761 +2250877 +78728 +854924 +486977 +1535011 +1934000 +2250893 +996592 +2130823 +2431596 +2250824 +233081 +1812627 +1717973 +43385 +996588 +78737 +137540 +78729 +1725665 +137613 +2130908 +486975 +357895 +398799 +854877 +137507 +1681413 +357889 +1812624 +329459 +137614 +2279249 +854837 +2291360 +1812660 +2250822 +137520 +137528 +2130858 +1750857 +264721 +854883 +203704 +346412 +2034140 +2564549 +43381 +1462472 +2739414 +5632 +433721 +1462537 +2250819 +1515321 +1072136 +2250908 +1515313 +665298 +1101732 +2623965 +907186 +937134 +1083196 +1812685 +2308291 +2308305 +2251070 +1101728 +233190 +2251041 +1615276 +1462585 +1141610 +2547980 +597222 +460309 +203767 +1072154 +433756 +2412070 +433763 +597225 +2308312 +2102065 +2623973 +2623970 +2308295 +43411 +1968881 +1058582 +1153850 +2623971 +855031 +2251038 +43402 +137654 +137651 +1101736 +2308335 +398840 +137645 +1072151 +996655 +2547989 +433736 +2251035 +2251015 +854995 +2251065 +2285593 +1237566 +137726 +597179 +2250979 +203733 +203769 +1083194 +1615337 +1134501 +597195 +2251084 +203757 +2285634 +329471 +2251008 +2308314 +1615267 +1812696 +2285630 +708335 +1768575 +1462560 +1134510 +1681425 +2285597 +2308340 +937125 +855058 +398824 +665311 +1843515 +2250980 +996594 +233194 +1515357 +597174 +1984763 +43406 +2738077 +937104 +1515336 +398818 +2025603 +1058579 +137676 +1462628 +1615273 +203774 +1934014 +2250945 +329484 +43431 +203743 +1237571 +1198425 +137641 +1812688 +2510489 +2250941 +1134496 +137682 +2510477 +1047916 +2250970 +233182 +137625 +2412075 +1681430 +1141612 +1615270 +2250996 +1515360 +1462597 +1615330 +2547979 +996652 +766879 +233172 +708326 +203776 +1899133 +346442 +2250948 +233170 +854941 +2367606 +1198430 +1072155 +137699 +2102082 +855023 +1462549 +2412055 +2350315 +2285631 +907180 +233164 +1681429 +1174814 +233153 +1101733 +2251069 +855030 +137733 +1515346 +43422 +2068201 +1462635 +2285641 +1615359 +855027 +2250986 +329473 +2251055 +373153 +597182 +2059784 +855000 +854994 +937101 +1515351 +1615363 +1058592 +1292329 +43417 +937135 +373155 +2285626 +137694 +398809 +1615353 +2251018 +996625 +1462600 +1462586 +996624 +2250977 +338375 +855011 +1681424 +996605 +1462621 +1984767 +996626 +1615306 +1141611 +1237583 +2308337 +1934022 +1462590 +855012 +1812665 +233169 +2510484 +43395 +2412072 +2251061 +203777 +855029 +233197 +137713 +137701 +937143 +1462715 +2357613 +1994388 +460355 +1270111 +996670 +2357625 +1911141 +1934027 +2412101 +2357628 +996690 +855113 +2130977 +442921 +2059802 +2524924 +43461 +1375073 +1725679 +1658601 +2130968 +137783 +2376389 +1270108 +516472 +2679687 +307960 +1950601 +137743 +2376473 +780846 +780864 +2458785 +1725686 +1349539 +2078680 +2376419 +1615411 +1462714 +954033 +855138 +2357644 +2102092 +855090 +597288 +2635712 +1320346 +2034148 +460352 +1535014 +1087525 +2078685 +780844 +2635685 +1615382 +2291379 +736242 +1320380 +2131032 +2524951 +1037685 +2564599 +2102093 +597279 +1535026 +516432 +996671 +996720 +2458780 +730290 +735104 +460365 +1210754 +1237593 +1725675 +2564623 +2412103 +5652 +1462699 +1725682 +442919 +681576 +1180321 +597283 +735100 +516425 +2777816 +1706846 +1417123 +2564610 +1417119 +996702 +708368 +2635707 +996677 +1301280 +2564597 +460351 +996706 +780868 +1718007 +1972550 +137779 +516448 +2376469 +855109 +2357636 +597267 +137780 +2131022 +681574 +357904 +597234 +1237585 +996697 +2564622 +1725672 +2376397 +855165 +2078669 +766893 +5671 +2316962 +264779 +78760 +780865 +1615414 +2068203 +1417125 +1320349 +766886 +516475 +442920 +1320371 +996673 +203792 +2357659 +2564605 +5656 +1706845 +855106 +1493061 +753098 +1768584 +1535046 +855078 +1045690 +1045688 +2524916 +1911153 +1615408 +2130947 +264785 +486999 +2376392 +2291378 +297874 +516447 +2034161 +855150 +1535043 +5659 +2059807 +720040 +2376407 +1825458 +2130956 +1320369 +1493068 +1180315 +996669 +2376356 +2078670 +1251021 +720041 +1493063 +1515386 +1342900 +2376438 +1349533 +2376475 +855151 +1750881 +2274187 +1681434 +2274197 +442918 +78748 +383680 +137746 +516406 +1365355 +1725690 +855188 +1911157 +2635722 +1462690 +442934 +460359 +1251027 +2524923 +460336 +2376332 +681601 +516421 +1535064 +1958008 +681568 +2131012 +2412093 +2059811 +43444 +2350321 +307968 +516451 +914049 +937142 +2130994 +780852 +1122125 +2698260 +516417 +1251022 +1462672 +78749 +1026327 +597266 +2059803 +2367618 +1750871 +708353 +2131005 +2564619 +137759 +2564639 +1709459 +2078668 +78752 +2034153 +1462726 +681563 +486997 +780880 +2130982 +1349535 +597259 +720033 +855095 +681592 +137795 +681585 +996708 +1615423 +2021292 +1349554 +1462758 +2376492 +1855222 +2131066 +2034175 +1462747 +2131057 +2777822 +1615426 +373165 +2131052 +1320407 +2078698 +937160 +2524962 +1535090 +516484 +1166824 +1899141 +5689 +2316980 +2635751 +914070 +516504 +2376505 +2367620 +2131042 +5684 +5692 +516478 +2131105 +1261144 +2316971 +1462761 +2350325 +1349548 +2412106 +1615438 +1687809 +1037687 +2034186 +2131081 +1180326 +2376516 +1320405 +2458786 +735115 +2412107 +2564660 +914059 +1349559 +1954349 +137823 +1349560 +720050 +1320391 +1134533 +233221 +780900 +2316982 +2131082 +2708304 +1349557 +1053831 +5678 +137835 +1417177 +215341 +233218 +1320396 +137822 +5675 +1170994 +1750893 +516483 +2376530 +1349561 +681614 +2034182 +2524957 +516481 +1950606 +1855202 +1320400 +1855207 +1825479 +1462734 +1825480 +2014734 +137818 +1855223 +2291399 +2684432 +2825409 +137841 +2524991 +516516 +1940789 +1349571 +2431606 +1301287 +442971 +2034202 +2742345 +2034221 +2316997 +1958021 +516522 +1210773 +1772438 +1535120 +2281402 +516535 +1764535 +1972572 +2131117 +780911 +2564683 +2838390 +2730497 +1998608 +2316999 +2034191 +2698276 +1958033 +2131108 +1270133 +1998612 +2524993 +2078734 +2742343 +1660423 +1972574 +1940785 +1940783 +2691524 +1958018 +1668714 +353933 +1270139 +1251033 +2431608 +2745396 +2376541 +2274202 +2825410 +2281409 +1270126 +5696 +401686 +2867255 +1301292 +5698 +78791 +2742340 +442965 +2357664 +2524997 +1408478 +2078727 +2291396 +1270137 +2068210 +516529 +2867253 +2564696 +2851674 +2078717 +401688 +1987700 +2564704 +2078711 +5700 +649648 +2825407 +2078731 +996724 +2078744 +2317006 +1535157 +2131204 +1950609 +2376568 +1725709 +1655294 +2564863 +2564883 +2376640 +353944 +1270158 +1320465 +2635766 +2131169 +383687 +1655295 +2635770 +2564890 +1725722 +442977 +2525079 +1301303 +2376550 +1270170 +2564776 +475683 +1026352 +516541 +2635779 +2635756 +2708317 +2376617 +2635808 +2525039 +2376635 +2034247 +5716 +2021295 +1349579 +2525088 +2564835 +2357683 +2376607 +516577 +2564746 +2376595 +2635822 +2376542 +516586 +1493105 +2131176 +2564853 +1706854 +1655299 +2416291 +2564867 +2274214 +1026397 +2376589 +1270164 +1045697 +2376600 +1646445 +2376582 +2564730 +2635786 +1320476 +780919 +1911180 +1090248 +516587 +2564711 +1026347 +1940794 +2564786 +1725711 +1825510 +363402 +1958056 +353948 +516545 +363426 +2376584 +1301304 +363384 +1090253 +1026341 +2564893 +2376602 +2708327 +1045696 +2034263 +1180331 +1026393 +1270196 +1270200 +1709475 +2564784 +5733 +780932 +1270168 +2376572 +1825496 +2564885 +2376599 +1911162 +383692 +383693 +1655307 +2564734 +516547 +1987703 +2564782 +2131164 +2635813 +516557 +2274230 +2720961 +1725721 +1026370 +780926 +2564860 +1911169 +1026350 +954048 +1825514 +1646434 +516592 +2416292 +1535135 +1026382 +5720 +363407 +442980 +2034258 +1404418 +1493106 +516593 +756470 +516570 +2131145 +1045707 +2635762 +780913 +1972580 +2376611 +1709482 +1940793 +2708322 +780944 +2564987 +2131253 +2376699 +516625 +1251042 +2274281 +1725763 +516674 +2131232 +1725743 +2635856 +1090255 +2564953 +516663 +2357709 +2525106 +1090257 +2564989 +2376696 +2564965 +1855255 +2131259 +1493118 +2635871 +2376657 +1251071 +78799 +1535165 +1270215 +780947 +2078769 +2564958 +2564937 +1251079 +2635857 +516607 +2751719 +1251049 +1725734 +1270207 +2131244 +516671 +2564996 +2376655 +2525108 +2131236 +2635853 +2525118 +516617 +516637 +2131256 +2564925 +1855246 +2357694 +2034274 +2131268 +1725737 +2635861 +516631 +2131277 +2274290 +2376662 +1251060 +1251055 +516661 +1270218 +2274266 +297879 +1417208 +1646460 +1251066 +2357689 +1725780 +2376667 +2274269 +2564961 +516608 +1023394 +2131271 +2376664 +2376682 +2525113 +2281417 +1251057 +2376676 +2376654 +756483 +1757241 +2357710 +2564931 +1180342 +516633 +2078775 +2564904 +2564926 +1026403 +2357711 +2635867 +681634 +1251075 +1320505 +2376727 +2565037 +1725792 +2376726 +2078796 +1535202 +2635882 +2131282 +1687815 +2565046 +2730509 +1180393 +1320499 +1535198 +2708342 +2708371 +1180396 +2291425 +2291442 +2525153 +1270236 +2078822 +2131297 +2525145 +2291419 +1958071 +2291408 +2525152 +1320503 +516708 +2291421 +2565081 +1668724 +2376723 +2034278 +2565024 +2698297 +1996212 +2078801 +1320519 +2698299 +649673 +1180357 +2131298 +516688 +2131338 +2376733 +2565057 +2357733 +2131313 +756489 +1417246 +2708345 +1320525 +2131316 +1855263 +1493122 +1958077 +2525174 +2131300 +1180391 +1958068 +1646495 +1320493 +2431610 +2698293 +516704 +954065 +720061 +2014749 +2131306 +2525149 +1950625 +2525140 +1180371 +2525142 +2565025 +5747 +2131343 +1668720 +1958069 +1270233 +2525131 +1320488 +954066 +2376746 +2131308 +2708351 +2131331 +2708367 +1180369 +2565029 +1535203 +2317011 +2565028 +1320487 +1417220 +720065 +2291436 +2635884 +1940816 +1950624 +2078827 +1129966 +1940828 +2376832 +1023467 +2565104 +1026410 +297927 +2376771 +1045754 +297907 +2376763 +2376781 +1825529 +1417285 +353953 +5764 +1026413 +2274386 +2416304 +2274425 +1045749 +1855310 +2274324 +2034325 +2635903 +2777835 +1725824 +2274335 +1825531 +2565163 +1023451 +2565203 +297916 +1940838 +1404426 +2274340 +2274437 +2376762 +297919 +1270251 +2354181 +2274330 +1709509 +1725818 +2635910 +2525227 +307975 +2376824 +2565084 +2565195 +1090261 +2357750 +2274427 +2565102 +2034322 +2357773 +1709499 +2565194 +2357759 +2274411 +1725803 +2357762 +1417254 +2034333 +2525246 +1045728 +2565148 +2274377 +297909 +1709497 +297924 +2274380 +1655340 +2565226 +2565149 +1023416 +1855279 +2565165 +2274382 +2565156 +1655337 +1404452 +780955 +2565151 +1725799 +2516807 +2354177 +297940 +289179 +2274371 +1417281 +2274333 +1855286 +2565109 +1655354 +2274379 +2565158 +1655347 +1045777 +2525234 +1655332 +2635925 +2565107 +1045760 +2635920 +297895 +1417250 +2274322 +1023420 +1417289 +1855285 +1023405 +1417277 +2635945 +2516791 +1855290 +2565171 +2565212 +1855289 +2274339 +2635921 +1023425 +1023444 +1725807 +1045784 +2525204 +1404453 +78818 +1940826 +297898 +2635898 +1109205 +2742362 +443019 +649687 +2078854 +2851703 +2851763 +2525277 +2851742 +1958106 +1855346 +1270306 +2131427 +1950632 +2357799 +1210802 +2698311 +1940844 +2708404 +2131410 +2730545 +1972640 +2565273 +2357790 +1535215 +2131439 +1210807 +2565347 +681643 +2008040 +1535254 +1998649 +516741 +2458825 +2735003 +1855325 +2751754 +2034351 +2730549 +1270276 +1998652 +2745403 +1270279 +2034371 +2851755 +443011 +2131479 +443022 +2565261 +2851772 +2721003 +2684450 +681675 +1320551 +746243 +2525275 +2034363 +2565365 +2851771 +2565293 +1301329 +2008042 +2565388 +2851743 +2281446 +1320576 +2708421 +2525270 +2525253 +2131448 +516834 +2708400 +1053837 +516812 +443017 +681681 +1417300 +1320568 +2131453 +443025 +2720999 +2730579 +516748 +1725828 +1320589 +1950635 +720066 +1301357 +2458856 +1855333 +2851726 +2851780 +2525278 +681657 +2131435 +1998675 +516788 +2376886 +2131345 +1855313 +2014762 +1958110 +1270253 +2458830 +2291466 +1958102 +1380559 +1998679 +1320538 +78824 +2034349 +1380551 +1090265 +1380563 +2565242 +2851694 +363450 +2635976 +2008043 +1687825 +1493150 +1958089 +1998642 +1301325 +2851740 +2014771 +2751733 +2131392 +2851690 +1709515 +2131374 +2458845 +1320603 +516817 +1709519 +2131451 +2720985 +2708416 +2078836 +2635968 +1301362 +2635983 +2068220 +1987713 +1709520 +1987717 +2078837 +475685 +475693 +1180406 +1687841 +1210814 +1270295 +516810 +1210806 +2131411 +2565376 +1270322 +516751 +363447 +2078855 +2291451 +1493144 +2291455 +1646496 +2751751 +2525284 +2525261 +1270278 +2565325 +1709518 +1090269 +516841 +1535250 +2131454 +2708401 +2745399 +1320539 +649705 +1301334 +2525268 +1493141 +1825551 +780962 +2458828 +516777 +2131378 +2014797 +2357782 +2011112 +1417306 +1320567 +2708388 +1320540 +363445 +597317 +2525321 +2698310 +2851751 +1972641 +1320597 +2720991 +2525337 +2751731 +1301342 +2698315 +2291470 +780966 +1687840 +2525334 +2565233 +2014765 +2721010 +1972655 +2131436 +2565264 +1270312 +1210803 +1958105 +2131478 +2742383 +2034356 +1958083 +2851708 +2131486 +1180424 +2698322 +2777941 +597428 +2376918 +2376955 +1725836 +1972671 +516891 +2777904 +2291477 +1377637 +2777844 +1320621 +2735033 +1493156 +681728 +597404 +1954362 +2708470 +2742418 +2131515 +597375 +1493157 +2525476 +1958124 +649714 +1301371 +2730616 +2730598 +1310615 +665321 +233230 +1954355 +708419 +1958121 +1772464 +443041 +1377644 +2317036 +2357818 +597401 +2525466 +597356 +1349658 +1072172 +2431633 +2078857 +2565437 +597354 +2008047 +1911213 +1301374 +2014808 +1320637 +1687843 +2131546 +2565416 +597391 +665327 +1349652 +1349656 +2525447 +1968883 +996727 +597328 +855261 +597365 +353959 +2008050 +2777899 +1855368 +2565407 +2525414 +2565477 +1958159 +516896 +1987739 +2078862 +1349686 +1958152 +1462778 +1994395 +2777894 +2565476 +1320635 +2458862 +2565415 +597358 +1349638 +2777902 +2131524 +233228 +516876 +2735048 +2131520 +1386823 +2376924 +2011119 +2565458 +1301380 +649715 +2014801 +746246 +2777850 +516911 +597379 +1301382 +1349660 +1349636 +1972668 +1972684 +937174 +1958129 +1998682 +1349670 +1947770 +720106 +2708477 +2777869 +2565460 +2525402 +2014807 +1349667 +137866 +597340 +2565445 +2525383 +2291474 +2357819 +1772462 +2131538 +2565481 +2376914 +2376950 +597384 +597429 +2011121 +2565400 +1958162 +2730611 +2376927 +1950661 +215360 +516888 +2565480 +516882 +1129978 +2565456 +665359 +1855369 +2317037 +2742392 +2708455 +5772 +597362 +1462780 +2376930 +720086 +681694 +2291482 +1972691 +2719178 +137850 +2011117 +2565462 +2525417 +681712 +681707 +681708 +597355 +2730606 +1998686 +2525420 +2014812 +681695 +1349698 +2565411 +1535270 +2777878 +649711 +2078863 +2525458 +2034375 +516923 +720100 +597417 +137882 +2251174 +2059843 +516951 +996766 +2059848 +1899156 +1855396 +1515409 +855359 +2078895 +2565501 +2376982 +597455 +2623989 +781016 +1972697 +1972698 +2131609 +5778 +2317055 +2078890 +2376986 +2308349 +516948 +1153860 +996741 +1535298 +5775 +2251213 +5789 +2131618 +855361 +516925 +1843534 +855340 +855337 +43488 +781008 +1210829 +1709537 +1417353 +855300 +2131621 +1462825 +1462828 +2034399 +5774 +2705252 +1462838 +2636008 +2251187 +1790566 +43494 +421678 +681745 +1198439 +781019 +233242 +2131607 +708445 +708440 +1417332 +2548004 +516957 +2510498 +1899152 +2131655 +1972700 +1058598 +1855413 +2131623 +1668732 +1668733 +597457 +708428 +855270 +1237616 +248616 +1377649 +2131635 +1615476 +681741 +2377001 +2131552 +996742 +1462853 +1237602 +855367 +1270351 +2251176 +2357834 +1984777 +1417324 +2565488 +1270345 +137876 +2291490 +855314 +2376985 +766903 +2565493 +2131640 +1709535 +996740 +1972696 +43508 +681743 +516939 +1687863 +1615481 +2376988 +2376979 +1270346 +780991 +681732 +2525487 +737316 +855284 +2376983 +1210819 +2102108 +1349715 +766909 +1310626 +781014 +1709530 +1417339 +1652674 +781021 +1462849 +756508 +1812726 +756503 +421677 +1615492 +855381 +2251200 +1462813 +681729 +2131614 +1855411 +1493168 +1615611 +2565606 +665419 +1462899 +351133 +855414 +43551 +1515462 +138022 +855585 +137925 +2412118 +1615502 +307983 +1825576 +1615625 +2251375 +1958181 +766925 +2728963 +855401 +597478 +665394 +2251301 +954086 +373177 +2565516 +855596 +1954368 +1911220 +1994406 +665389 +2291506 +1083224 +2623992 +138036 +2412119 +2131726 +2548010 +1342912 +1462970 +855405 +996804 +855614 +996833 +2377018 +855398 +1462854 +2251244 +1615607 +2251371 +1772471 +2059912 +2102126 +1615670 +233285 +2251482 +597690 +1703235 +597710 +2251340 +1958185 +1718033 +665401 +855621 +781042 +2078902 +708484 +1899169 +1487302 +2565594 +1462903 +2059887 +138028 +855615 +2131794 +937232 +708470 +516973 +1417372 +233269 +2131725 +1310635 +2078912 +1342915 +203823 +937194 +781036 +1772470 +2525507 +2291507 +2317074 +597479 +1703249 +2525499 +5806 +2102134 +1462928 +1764541 +597537 +1958179 +597512 +2251425 +1515428 +855568 +2059925 +1899172 +2565611 +855604 +1615620 +1131926 +2251246 +203825 +2251410 +1101762 +597520 +1843542 +2565546 +855480 +2102119 +996864 +597615 +2059867 +1994407 +2078915 +1615630 +2251368 +2251457 +138000 +2059870 +2565555 +855442 +2078916 +516994 +766913 +1462887 +597689 +2350386 +1984782 +1615528 +2251349 +2285651 +2251260 +855601 +2078899 +1198449 +2102137 +233262 +2412124 +1462857 +1462898 +137927 +855467 +1615606 +2059897 +1462974 +1462900 +1950673 +2008064 +1462989 +2102141 +1180443 +1535313 +855511 +597598 +233279 +2059916 +2565616 +766930 +2251379 +937214 +597503 +1812744 +1083212 +855605 +1462996 +2251418 +2251413 +1709541 +937186 +766929 +1855423 +597600 +766927 +1515430 +2251268 +1958177 +2285648 +855397 +1615648 +597496 +137994 +2251416 +2565599 +2251326 +2251407 +137996 +1462883 +233264 +2251267 +708489 +1072179 +597476 +1984784 +2068230 +2059926 +855446 +460396 +2251337 +2131753 +597572 +1198462 +1134539 +996859 +2317088 +1703230 +855618 +2131670 +2131730 +460380 +460382 +597723 +1408482 +996785 +1615561 +855537 +1462940 +1198459 +137969 +597626 +665414 +1462984 +137988 +2131677 +2059885 +2565519 +2131696 +855510 +2357851 +855583 +137911 +1408481 +781045 +1615661 +597703 +2565561 +597538 +1462880 +1487313 +597487 +2377028 +2102131 +649741 +1292370 +1718017 +2565584 +1615671 +2251315 +1198450 +2251502 +597656 +665415 +996855 +1615588 +1958187 +597494 +665377 +996856 +43515 +1615644 +138018 +233273 +329498 +2003007 +2525511 +2131788 +914115 +2059860 +1320647 +1535304 +996779 +2251458 +43518 +2059890 +1462856 +233260 +2565550 +1515439 +1718019 +1141636 +2350362 +2565543 +2510509 +2059908 +937245 +855620 +138045 +1462955 +597638 +138016 +855594 +395004 +855558 +137935 +708481 +137920 +517004 +1958184 +233277 +996812 +1408489 +1615637 +597686 +2350359 +1703253 +855461 +1947785 +665375 +937229 +2350379 +2131811 +2251339 +1083205 +996823 +855587 +137990 +1083214 +597506 +1051626 +1292375 +497088 +460394 +2251239 +937192 +1958174 +2420997 +2131739 +937231 +264818 +996805 +1681452 +1615590 +1855417 +937216 +597498 +2377012 +2251463 +1462975 +5801 +996783 +2251382 +1417367 +708491 +1843550 +1391515 +2251624 +1389746 +1934075 +2367627 +1058605 +597753 +2412172 +1783108 +1237647 +1385411 +1899224 +1899217 +2510531 +1101773 +1463074 +1681458 +1718068 +1899238 +2367626 +1237648 +2251644 +1899187 +2251743 +855673 +1899179 +2679711 +373186 +597836 +597778 +1174831 +1463004 +2251546 +1463030 +1463031 +1400731 +597788 +373181 +597806 +1899244 +2251526 +1463006 +138072 +2350425 +665443 +1768596 +1389751 +1365378 +1385421 +2251566 +1237658 +2251647 +1400726 +996883 +996881 +597801 +1615725 +1515498 +665429 +2251519 +1463083 +2412136 +2251732 +1375098 +2510537 +2510520 +1463071 +2679716 +2510525 +665450 +1615680 +1615720 +2251552 +2251729 +2102157 +1843557 +1615692 +2251542 +2251628 +996886 +1400727 +1385420 +2251692 +1615690 +1101786 +1750938 +1463057 +2102161 +2679708 +1365386 +1237649 +2679710 +1843569 +2251752 +2443691 +1403200 +1261147 +2251638 +1718073 +1310646 +2367633 +1968894 +665470 +665445 +855683 +203828 +388664 +1122144 +1615694 +730321 +487018 +1615764 +2624015 +1058607 +1389753 +665449 +1342930 +2251593 +1087530 +1934069 +1403216 +2251731 +2251513 +1968901 +1615681 +665428 +1718052 +1365372 +665472 +338393 +1174829 +1615685 +1615715 +1463034 +1487316 +2367649 +433771 +1843567 +1174828 +2251675 +2367635 +1389756 +2251553 +1403189 +2251632 +2350416 +855685 +597846 +138078 +597803 +2548025 +1400729 +1934063 +597743 +1174841 +730317 +1750930 +2251648 +1237636 +433779 +2251611 +855689 +1718080 +2412188 +1292426 +138094 +996893 +2458879 +1703271 +855726 +138117 +597929 +1725856 +2317095 +1615842 +2131859 +2624024 +1668740 +297944 +203836 +2412190 +2777954 +766943 +2078926 +597959 +1369616 +681760 +1109219 +855721 +2738085 +233324 +1515507 +1320678 +1958198 +138162 +2412180 +2357854 +2510548 +1934095 +597882 +2131836 +2838392 +1535355 +855703 +2719179 +2565648 +2131877 +855780 +2565645 +2131861 +1615821 +1417377 +248619 +855716 +2377071 +1615779 +1463128 +2131834 +517022 +1958196 +1984796 +1403218 +1292418 +2291526 +2698332 +2059973 +2059979 +373202 +1463135 +2525531 +1463107 +1463129 +2624027 +1210835 +2251795 +681776 +681763 +1615839 +1261163 +1535331 +855709 +1812792 +2412183 +1843585 +264843 +730329 +138097 +597918 +1403219 +2131875 +2851836 +233314 +2377034 +2377060 +138095 +855734 +597907 +1615874 +1615818 +2131851 +1911226 +2251810 +597913 +2308382 +1463143 +2025622 +914117 +1166848 +2510554 +2377052 +2377037 +649743 +2565652 +1750949 +2412184 +1463104 +2131878 +1535361 +1320657 +1615816 +2565644 +138130 +855804 +2458883 +855749 +1310665 +1463136 +1812790 +1535327 +2458889 +1037725 +2367658 +233315 +2679730 +996905 +914119 +2059971 +996915 +1615872 +2350450 +2251808 +1166846 +2102181 +138131 +1463137 +855768 +996896 +1380576 +1342953 +487029 +855733 +2131824 +1292431 +665491 +1615841 +1463113 +2431649 +597935 +855742 +1292413 +1463092 +2679731 +2367667 +1972718 +2458881 +138121 +1615820 +308000 +233312 +1750940 +1615829 +203833 +2636018 +1709545 +2367660 +2636032 +597916 +855773 +487033 +2851840 +855717 +1349733 +2565623 +597966 +1972714 +855718 +1237690 +730331 +2317099 +1463147 +2458890 +1292429 +1855429 +2510555 +1237664 +781048 +1615882 +1349760 +2777972 +1972729 +2251832 +78871 +900429 +681836 +597990 +1077333 +383701 +517115 +681822 +517082 +1380615 +781058 +1109221 +649755 +517080 +1615909 +2021321 +1772476 +2034442 +517112 +517033 +1855459 +1998719 +681781 +1984800 +1998725 +2777968 +78872 +2458908 +2735055 +1998721 +2131925 +1615880 +1825594 +517086 +517158 +781073 +475699 +517144 +781059 +751568 +1380580 +332991 +2131911 +2636046 +1493197 +2377093 +78864 +517150 +597992 +2251840 +363479 +1400746 +517105 +2679734 +1159058 +1037733 +1369618 +1198477 +2565667 +1349759 +597984 +383703 +1855444 +78867 +2510564 +2011133 +2458894 +1037739 +855819 +517043 +1911236 +1417401 +2777978 +1109226 +2777984 +1772479 +1725862 +2525540 +1825585 +517165 +2778027 +2636053 +1646505 +597998 +1725863 +1998705 +2068234 +517093 +2377092 +2317109 +2291536 +1090284 +937295 +1320694 +517036 +2778010 +2525549 +2131902 +1180463 +1668747 +1198476 +443061 +1660437 +363480 +363492 +1320682 +1615912 +1349765 +1972730 +363501 +1237701 +2565687 +383702 +996927 +781057 +781066 +1090294 +1646506 +1998723 +332990 +1320693 +1380581 +78852 +1535370 +1090291 +2565671 +2636060 +1535400 +937286 +517156 +1535393 +1320686 +2131951 +2423153 +2565686 +203840 +1972720 +2377089 +2565694 +1145536 +1109225 +517154 +1463164 +1320696 +2624035 +1615911 +2778017 +1390899 +363485 +1972734 +1090280 +487048 +2777988 +1825584 +1463186 +996990 +1463171 +2251961 +2251895 +138195 +1393608 +1703278 +2251909 +2252044 +708568 +1463219 +1515557 +2251910 +2350470 +138199 +517169 +855869 +855855 +1954392 +78884 +855846 +517180 +2412219 +2252065 +855898 +2377119 +1615971 +2060000 +2132048 +2102188 +1377663 +2251944 +2252060 +1463243 +598037 +2059993 +1463195 +1515566 +357930 +2060006 +2458914 +1270392 +1131930 +2251868 +708565 +1615969 +1535417 +1417409 +2377116 +598122 +2354999 +2251935 +2565724 +937303 +1515561 +598071 +855899 +1261176 +2377118 +264859 +2565744 +1463293 +1615933 +649759 +1101808 +2060011 +855923 +1270387 +2131973 +1408507 +2251891 +1615945 +954107 +855911 +1417416 +855863 +2510570 +598046 +2132045 +1615974 +2565732 +2132065 +1380618 +2131997 +2252050 +1934115 +954110 +2525553 +1463308 +2251907 +1616004 +2252039 +138190 +2733623 +2251892 +2251963 +1463238 +855908 +2131978 +1535408 +1180467 +2132067 +2458915 +708574 +1180468 +487059 +855967 +1037745 +1940856 +2251871 +487060 +138210 +1463264 +2060051 +1261194 +2251866 +2102197 +2636065 +1615962 +2252096 +2132053 +1812796 +1463201 +1855465 +1515568 +1615924 +1463262 +598108 +2252048 +138191 +855825 +855852 +855991 +649757 +1408505 +2034479 +1463176 +2565731 +1087543 +43606 +138225 +2102199 +1101828 +2034485 +2060028 +1515550 +1772481 +1615918 +2034462 +426531 +203847 +1101832 +138227 +1855467 +1703295 +2251926 +1703296 +2412209 +2059999 +1718082 +598088 +2060010 +373209 +357927 +1320701 +517195 +2059997 +2565736 +2565729 +1515558 +2251947 +1855468 +2252087 +1463180 +598063 +1463316 +1616011 +855842 +2281467 +1417421 +2350460 +1515551 +855936 +2636084 +1616005 +2679737 +1615970 +1083230 +2308389 +1463250 +43582 +598129 +2412203 +2252030 +855918 +2412206 +264860 +2251958 +855956 +308017 +1417418 +2034484 +598059 +2131970 +996996 +1417410 +2458916 +1911246 +43603 +1750967 +2565730 +598109 +2021325 +1703275 +598136 +517210 +1408510 +138265 +138289 +487122 +2252146 +756521 +598171 +138316 +497100 +1652688 +497137 +997036 +598162 +421688 +497141 +1703300 +1301404 +1616091 +138239 +487079 +487081 +138330 +138280 +720146 +665525 +353990 +856015 +1616051 +354000 +308029 +433798 +997013 +649762 +665529 +308040 +2252131 +497115 +138306 +2281468 +1122182 +753109 +233349 +497099 +1750981 +2034490 +1047942 +2132084 +138242 +2132080 +203848 +665509 +856009 +1535431 +517224 +138243 +487068 +708576 +598155 +326604 +421731 +421703 +756520 +138387 +598172 +856014 +997032 +2377148 +497121 +2317122 +1463325 +353976 +766969 +665528 +2132121 +2565751 +1954395 +308033 +2132129 +649763 +1681462 +2132085 +487117 +497123 +233383 +997029 +2350472 +598160 +487124 +43618 +487082 +138384 +2132097 +1417442 +1270396 +997027 +1843596 +1109234 +487103 +517213 +1646511 +665511 +308036 +2132110 +78897 +433806 +138393 +233385 +1463332 +233360 +2132086 +2317118 +598138 +1616095 +1660441 +598161 +233388 +421735 +997004 +708585 +2565771 +487137 +2708511 +78931 +781135 +2060057 +1535473 +1408516 +2060056 +487157 +1535452 +2132166 +2132263 +2132224 +487183 +426538 +78929 +2132216 +856045 +856037 +2132155 +78935 +433809 +2132179 +487162 +2132206 +1812828 +1655379 +1535470 +856062 +856090 +1825603 +1709571 +1646512 +937318 +1535456 +487196 +517248 +517234 +215385 +2317140 +937327 +2548044 +2132175 +1703306 +138416 +475704 +856069 +1483067 +1687898 +138424 +681859 +2565758 +1843597 +2548045 +1725884 +2132270 +1417469 +1616116 +1812827 +1270409 +766982 +78920 +856084 +215391 +2252177 +766972 +2132193 +1825602 +138446 +487138 +2060058 +856078 +1616135 +2078965 +215384 +1616126 +856077 +233422 +914141 +2252180 +138461 +1703305 +138410 +2367672 +907200 +1812803 +708591 +308046 +5853 +1687894 +2132163 +1998728 +517236 +138421 +1270412 +2132236 +2132246 +2350484 +1934133 +1616114 +5845 +2624047 +233407 +138435 +2132243 +856086 +900436 +1750988 +2317154 +2078971 +1463364 +2132234 +233421 +2565757 +1535474 +1616127 +856052 +2317136 +78917 +598190 +1709581 +2252220 +1174867 +708601 +997085 +1687903 +2034537 +78942 +1709576 +1899287 +1934154 +43677 +1292452 +2252266 +1493221 +1083241 +1843609 +138473 +781160 +2377210 +2132374 +2308397 +1535499 +2377174 +997066 +1237753 +598201 +2377193 +357948 +1681470 +1812835 +1812833 +1463377 +1616148 +2068249 +1899295 +233445 +233458 +766999 +997074 +2377203 +856217 +1237746 +233451 +1058617 +856193 +5863 +1934145 +203909 +1616174 +856247 +2412229 +1237741 +2291558 +1237735 +329522 +460420 +681861 +138480 +856243 +43658 +856153 +1463401 +1616203 +997073 +138487 +1270415 +598192 +138532 +203892 +2510576 +766998 +1463431 +2132322 +1101852 +1237744 +2377162 +1899309 +1417479 +1515591 +598197 +2132301 +1899300 +1616152 +2132351 +2252265 +1101855 +138493 +460425 +781151 +264898 +1377665 +2252252 +2068251 +5864 +1843611 +1129983 +1237759 +1463368 +43641 +1751006 +2252259 +517264 +2132273 +1131932 +681866 +856214 +2132296 +767003 +681869 +2252230 +2565806 +856167 +2636091 +1616144 +1487325 +856092 +1855494 +398860 +1972746 +1237756 +856126 +1083246 +2071901 +2252232 +2636102 +1616216 +1463393 +1709583 +856105 +43639 +1899294 +1129980 +1463389 +363504 +2132367 +1417477 +43657 +856154 +1911251 +1687906 +1171000 +1072220 +1616159 +1101856 +2068254 +2565781 +138516 +2252273 +1616167 +2034517 +443068 +1083238 +203897 +2252246 +2132293 +1984809 +1463407 +1463387 +1718101 +1535504 +856171 +1166866 +598200 +907204 +2132287 +1174866 +1899302 +1616230 +1899317 +43694 +997086 +2102214 +2412235 +2060110 +598251 +1385437 +598223 +1365414 +1616238 +856264 +937347 +2252290 +421738 +2252304 +1463448 +1365413 +2443700 +708628 +1365420 +233459 +856260 +2102213 +2102216 +2060103 +665543 +1237765 +708629 +598231 +598237 +856254 +1385444 +1616232 +1899314 +2132382 +1180477 +2281470 +1166870 +5884 +329524 +138550 +460431 +1134548 +1855507 +138549 +2034538 +1145540 +1493232 +2458925 +1180483 +233461 +1101862 +1772488 +43695 +5883 +443073 +2458927 +5889 +43704 +2377222 +2068256 +2132386 +681875 +767007 +2367680 +517270 +1072224 +2377226 +2636135 +781176 +2458937 +954139 +2636128 +1535512 +2132387 +914151 +756540 +1122208 +1911256 +78952 +2636119 +2636130 +1911297 +1122205 +997100 +1911285 +730348 +2636145 +681872 +1171005 +1687908 +2458928 +1122209 +1535510 +517272 +1535516 +1237779 +1515621 +1210892 +78951 +1911291 +2548052 +598258 +1911289 +737324 +2078987 +856269 +2458945 +1911299 +1911265 +426541 +754565 +517276 +44091 +44593 +44006 +44324 +44339 +44292 +44130 +43994 +44692 +44400 +767017 +44448 +44327 +44251 +44524 +43908 +43724 +43824 +44277 +44316 +44386 +44008 +44612 +44666 +44416 +1408543 +44496 +44388 +44617 +44024 +44444 +43727 +44087 +43733 +44015 +43884 +44171 +1408528 +43894 +44481 +44525 +44686 +43852 +767028 +44514 +44383 +44272 +43977 +44682 +44243 +43920 +43874 +767050 +43808 +44626 +44608 +43917 +43707 +43812 +43911 +43734 +44471 +44151 +44380 +44592 +44488 +44086 +44699 +44184 +43714 +44043 +44399 +44516 +43818 +44458 +2026622 +44669 +1408556 +44490 +44450 +767015 +44445 +44301 +44023 +43960 +44440 +44189 +43823 +44492 +44092 +1408521 +44711 +756549 +5916 +44730 +5949 +5948 +44733 +5901 +5903 +5932 +1515658 +44925 +1310689 +598563 +139131 +265662 +856509 +2252360 +598478 +138775 +264914 +265184 +264941 +1463733 +856441 +388682 +265110 +233485 +2510587 +1616262 +1616424 +308062 +138695 +351389 +2510588 +1463456 +2252394 +1994444 +233489 +1198573 +1463485 +138973 +138656 +2689046 +264994 +265588 +856359 +708688 +138938 +2060129 +598456 +265822 +598277 +1515643 +856438 +856309 +138879 +351291 +708682 +2060206 +1487332 +264968 +139074 +2252398 +708659 +598662 +265356 +1463520 +598389 +351475 +708672 +351451 +1616309 +1899403 +2252404 +351318 +265783 +44966 +2548098 +1122220 +265536 +598462 +265296 +856405 +1463603 +388718 +388735 +139149 +351485 +138955 +265910 +1616367 +138780 +2252372 +265489 +351502 +1198505 +265894 +767083 +139095 +351311 +265968 +138771 +44851 +2252342 +2624136 +2548132 +138751 +265847 +138945 +2252453 +2252400 +265598 +856531 +1899426 +1616376 +265711 +1463539 +265805 +598497 +265155 +1899386 +2548124 +139087 +265817 +265176 +265456 +1783135 +856288 +856487 +233488 +265101 +2308405 +1616290 +265449 +730352 +139185 +265455 +44824 +265180 +138883 +351469 +265415 +2624129 +856507 +2624085 +265071 +1198520 +2060207 +2510632 +265755 +730355 +138923 +203932 +598360 +351159 +265653 +138916 +351261 +138868 +265570 +265041 +138792 +1198561 +265610 +351247 +44962 +598581 +233468 +1515623 +2624072 +2060204 +1198616 +138690 +856335 +1616313 +265929 +856310 +708685 +856456 +1899334 +1616351 +265754 +2350490 +265461 +2252334 +2548130 +265314 +138646 +665546 +1616276 +598454 +2019805 +265438 +265908 +44894 +138669 +308066 +351325 +351515 +44747 +598420 +598530 +138925 +1616272 +351165 +265523 +2252344 +708673 +856283 +1463500 +265324 +2060179 +1463629 +767107 +138841 +2350514 +1515627 +598579 +265723 +351240 +2252370 +357956 +598423 +1616374 +2510646 +351290 +139093 +1058619 +1463715 +1408563 +139153 +264942 +357960 +139189 +1463472 +265161 +1616420 +203929 +265660 +388715 +1616413 +203946 +2060148 +2060125 +1463584 +351421 +2060222 +351254 +138819 +203939 +856402 +351363 +388707 +388717 +2510595 +665559 +1718113 +265276 +2548080 +233519 +264960 +44884 +139039 +1463736 +138815 +2624086 +598473 +856342 +265747 +265332 +1198576 +1899387 +265654 +265257 +265512 +265591 +265975 +351248 +203953 +233559 +2060243 +265430 +388723 +856290 +351387 +351345 +264963 +351454 +2548061 +2510676 +351299 +265069 +265743 +265571 +1463547 +2548088 +265138 +2548105 +665567 +264916 +1072236 +265406 +1463744 +2624148 +138637 +351518 +2548106 +388730 +2252419 +338401 +265153 +937355 +138659 +233469 +139006 +329532 +2060221 +44762 +265070 +308064 +139045 +598618 +351281 +351274 +138821 +1463667 +139082 +351284 +138605 +351156 +203961 +138982 +730365 +1198551 +598626 +1515644 +598269 +2548073 +44947 +45042 +351415 +598565 +44793 +2252487 +138746 +138946 +2851845 +388734 +138944 +265981 +265008 +138760 +388726 +1616288 +1122214 +265658 +598366 +1122219 +265956 +139014 +138559 +265875 +265213 +1463509 +2252464 +598289 +2078991 +598514 +138885 +351331 +138748 +351232 +598653 +44905 +203955 +265655 +708642 +1616322 +139081 +139062 +264927 +265583 +2102237 +44983 +265753 +265330 +265637 +856599 +598603 +2510637 +937356 +265271 +44839 +2624083 +598608 +139175 +856485 +265012 +351413 +856307 +138562 +138876 +708675 +598459 +598443 +203959 +233508 +265930 +265186 +1198580 +2510652 +265349 +351336 +2060216 +730375 +2548115 +265448 +264983 +1616311 +265197 +1122225 +265267 +265149 +265025 +1198599 +265715 +1463669 +1463721 +265651 +289209 +1463634 +1899412 +665578 +856368 +1463555 +265030 +351427 +139176 +1463565 +1198564 +1994443 +1616444 +2727825 +1198545 +44890 +265587 +2695149 +1899422 +2510611 +351349 +1198577 +338400 +265341 +265499 +138908 +139009 +138823 +856468 +265838 +138828 +265162 +265794 +138909 +264964 +1751020 +44899 +1463626 +1463593 +351288 +265673 +1198506 +265814 +1899338 +2510648 +1198518 +1072253 +138655 +265321 +265674 +598369 +598340 +351462 +138652 +856377 +289211 +2252488 +598669 +1899352 +2510598 +2350494 +351374 +2060219 +265262 +265940 +2624101 +856373 +138889 +44942 +2510594 +265801 +329526 +351359 +265548 +2548113 +598663 +265293 +139098 +1463743 +138673 +598555 +1463469 +2624107 +1463656 +351534 +139085 +138580 +1899344 +357958 +2695161 +2060117 +265757 +233538 +2778050 +1616467 +598576 +383720 +2060164 +708664 +45010 +2060211 +265578 +856354 +265338 +1616404 +265208 +203979 +265224 +265820 +2510603 +856594 +856521 +338404 +265614 +856423 +203991 +2252470 +265793 +265559 +1122216 +351164 +598452 +2510612 +264977 +264932 +233495 +856488 +1463581 +139195 +1238101 +487286 +665854 +139271 +139511 +2727882 +1616482 +139322 +266176 +599438 +1083266 +309175 +1934328 +1760281 +1310745 +856621 +2412528 +1122606 +308591 +1122238 +2624200 +517336 +665734 +460438 +997189 +266018 +308791 +2679857 +309371 +856608 +139482 +2636212 +2252665 +2679766 +2679984 +517461 +388753 +1037848 +139749 +1655429 +1122244 +2727883 +1751128 +139632 +2412405 +1198625 +598796 +1122424 +289320 +1238052 +2252536 +2412424 +1934200 +517417 +730405 +2132404 +598982 +289305 +139355 +1751048 +2679877 +997167 +289282 +599061 +1911302 +665729 +599542 +297993 +2412521 +460479 +665779 +599472 +1994530 +1725941 +2679919 +1463750 +139582 +997175 +1037948 +598983 +2679873 +139212 +2377332 +45130 +665689 +139406 +1122488 +289381 +308929 +139347 +1122374 +289384 +1934441 +1122655 +1994514 +2252538 +1037862 +139403 +139466 +289329 +1037940 +2252581 +309039 +598689 +2727914 +139209 +1122493 +2377242 +1760363 +665660 +1122520 +266101 +1122385 +139454 +266011 +139246 +2412510 +308537 +1037942 +1122476 +1994494 +2377270 +997203 +665815 +308876 +1237786 +309002 +266124 +1237954 +599483 +78986 +1122343 +2679811 +139203 +1122681 +1934487 +1760462 +309065 +1535532 +308315 +289364 +1899584 +2679988 +460478 +1122379 +665716 +1899450 +1237961 +997192 +665705 +1037805 +599403 +517298 +1757270 +388804 +139339 +2679921 +2679768 +308861 +2377319 +1237789 +599529 +1751138 +289322 +1237964 +373231 +1655445 +1037780 +665814 +665665 +665592 +308179 +599009 +309285 +1751063 +1535526 +1310732 +139309 +2636180 +598729 +517469 +1310700 +997193 +1616477 +1237854 +266200 +2636232 +139463 +1616547 +266077 +1760325 +598944 +308412 +598949 +308353 +598714 +1760377 +266070 +308449 +665805 +308743 +1238035 +2412378 +1390905 +1122670 +139568 +1122457 +309316 +517288 +2679885 +2679996 +2252745 +289293 +309168 +1616510 +2727913 +309187 +309067 +599021 +599489 +289238 +599343 +308106 +139250 +997235 +309081 +1122448 +1122587 +1310701 +2624276 +1237933 +1122471 +45107 +517327 +308190 +681889 +309302 +266025 +1934482 +2412451 +487322 +598702 +1994566 +139504 +78968 +767108 +517451 +599120 +139205 +1899610 +2377241 +1934456 +139621 +308398 +2252657 +308451 +2277901 +2252633 +1238018 +2412331 +1934481 +1122255 +139261 +2565831 +1122634 +308679 +1122403 +2252503 +2377237 +2679760 +517319 +2412329 +45082 +1390908 +139452 +1122419 +308988 +1037869 +309385 +2060258 +2636204 +1122275 +308077 +308860 +1899624 +599307 +139358 +1652701 +599508 +1994550 +1760383 +308101 +1934277 +1238017 +1994546 +1934343 +1751147 +599302 +1122653 +1037836 +308668 +1934291 +1934311 +45062 +599105 +1760414 +308969 +1899599 +460453 +139474 +2252599 +1760411 +487315 +309166 +1237921 +308305 +517380 +139628 +599534 +599226 +1616483 +2624293 +2624285 +308912 +309414 +1122286 +1899560 +665822 +2636233 +289411 +1310753 +1122625 +297979 +598700 +1994501 +1760263 +1934455 +308093 +1899453 +308271 +1122258 +308159 +1310737 +2412450 +1994483 +1122326 +2060267 +599450 +1237793 +1934474 +2252747 +308300 +1934469 +599454 +139231 +599109 +665862 +1934406 +1934409 +599099 +2624224 +2679966 +139542 +1751112 +2252550 +308267 +2252623 +309132 +308280 +2412247 +139245 +266053 +1899509 +1122602 +388806 +266080 +1122708 +308108 +1760319 +997144 +309279 +599157 +309336 +599515 +517392 +1760343 +1934169 +309112 +2624241 +1122661 +856652 +1122555 +1934196 +1122614 +289366 +1760326 +599407 +139728 +308228 +856642 +1994545 +517307 +997202 +2252541 +309326 +2679910 +308256 +1122435 +1994532 +1899490 +1668777 +308102 +308954 +2252712 +665880 +308593 +2412427 +309074 +45124 +1751098 +598823 +308103 +308113 +308750 +1899559 +517408 +1122530 +1725938 +1751033 +309310 +308774 +309210 +460462 +139608 +1237938 +856633 +309171 +599007 +1751041 +309359 +289421 +266186 +309148 +517460 +1616521 +309324 +1122243 +1292469 +308078 +309378 +2624184 +2252643 +598817 +308147 +289284 +2252530 +1122298 +1237959 +1037830 +1310741 +599094 +2252659 +308720 +1934388 +599319 +139426 +309201 +308643 +2007473 +2679882 +308662 +308862 +309033 +266155 +2252743 +308436 +1934233 +460448 +266012 +308440 +2252552 +1987752 +1899582 +139444 +487354 +2624183 +599244 +139626 +45114 +266037 +598753 +1122382 +308933 +388788 +1122651 +1122443 +45100 +266071 +308308 +1899605 +139618 +2034542 +599340 +598677 +1310693 +1101871 +139736 +2624271 +308514 +308234 +1616518 +2412380 +139370 +2412390 +1238091 +599528 +2624315 +308604 +2252730 +308268 +2412439 +1310758 +1037953 +1899651 +1934366 +1310704 +1122292 +1237950 +2252519 +598893 +1950681 +1122690 +308204 +1899472 +599283 +1934271 +1760280 +139557 +1037846 +599188 +1037881 +1934191 +598819 +265999 +599464 +1950686 +2252721 +599360 +1994570 +2252706 +599427 +2636183 +139442 +517440 +460446 +1122691 +2727884 +598719 +1122633 +598855 +1037837 +2412309 +665617 +1994562 +665866 +139325 +308127 +308287 +1760275 +289333 +2412386 +665584 +1301415 +2416318 +1237836 +2679833 +388769 +997251 +289272 +665793 +1122667 +599364 +1238076 +599027 +1655383 +598778 +1760284 +309315 +1934445 +1122502 +1122335 +2252672 +2412402 +599390 +856629 +308216 +2624203 +2679777 +1757298 +139299 +297965 +665784 +308755 +598921 +1760450 +2412253 +2679924 +2727908 +289225 +599313 +599204 +665674 +1655431 +599103 +997204 +2252696 +1122353 +308612 +289369 +2252692 +1934211 +599159 +2695177 +1655389 +1237843 +665675 +388787 +266166 +487259 +139501 +856627 +599456 +289234 +373237 +598727 +856639 +1122461 +1934413 +308362 +1238037 +599062 +1899521 +373245 +1238012 +1122388 +599452 +1616496 +487258 +2636190 +598720 +139735 +598965 +1934293 +1899440 +1198628 +2252566 +598798 +517443 +308498 +1934397 +139667 +665599 +1237955 +1122593 +308598 +1994543 +599117 +1934357 +599417 +309383 +2252687 +1994485 +289216 +1238098 +308191 +517322 +1616512 +2252731 +5952 +599151 +2412476 +1237898 +2636202 +139698 +297968 +1934302 +139435 +1238040 +2679965 +2679947 +2695179 +308409 +2565833 +1037877 +598858 +1751121 +665614 +599286 +665641 +139658 +599354 +289335 +1310744 +1037935 +289296 +487291 +2412470 +266047 +665762 +1122478 +1122632 +45093 +720159 +2377302 +308219 +266118 +665813 +599258 +1122485 +2727842 +2252621 +1616563 +139460 +599190 +139755 +1899457 +1934288 +2679992 +308075 +1037924 +1899497 +308716 +266032 +45123 +139458 +598703 +308715 +266044 +730394 +2252694 +289425 +2412468 +309367 +1037908 +308098 +266204 +1122375 +308350 +2252527 +1616503 +599316 +517325 +266156 +309160 +78984 +599347 +309361 +599433 +1037796 +1122684 +665661 +2412494 +1760341 +139614 +2252634 +139670 +308470 +997234 +1934376 +309256 +1843627 +1463766 +1463752 +517330 +517398 +487327 +308286 +1122694 +2377232 +308583 +2291565 +308777 +139535 +2727896 +2377303 +2277900 +1760259 +1238108 +1122261 +1238110 +649796 +1760388 +289315 +139307 +598775 +1760380 +1899442 +1122331 +599106 +1122418 +1122350 +1237923 +139223 +2679837 +1122444 +1934290 +308489 +308779 +2624186 +308928 +309096 +2636200 +309056 +308655 +78981 +1616519 +1934421 +1899563 +1122377 +649779 +2679954 +139411 +517311 +598981 +139197 +475715 +1703325 +487281 +1238058 +308524 +1899482 +708699 +2377282 +309214 +598894 +139336 +599271 +517425 +1037977 +1237874 +598889 +598730 +2636159 +517403 +1655433 +265994 +139472 +308431 +2132421 +1760406 +2412445 +487375 +1122311 +266185 +309248 +309223 +308859 +297970 +599177 +266113 +1270425 +2412376 +308205 +139750 +289319 +1037934 +309416 +1757267 +266115 +2252759 +1122304 +1616610 +2102312 +856689 +1037980 +329661 +856760 +1463921 +1660446 +856847 +1463982 +2253056 +329636 +937372 +357965 +2253198 +1681493 +2510719 +1408654 +1703346 +856751 +1408648 +856924 +45162 +1515733 +204134 +2060305 +139778 +708711 +139808 +937404 +1072262 +1463773 +191563 +1616692 +856787 +204111 +2548344 +2252811 +2252894 +856753 +1681515 +357981 +329654 +1122714 +1408761 +2548299 +2253053 +1616601 +1664779 +2102299 +2253016 +1718178 +2252958 +1616667 +1843660 +1058623 +1153889 +329640 +1463906 +139815 +1058712 +1058633 +357964 +204139 +2548340 +266232 +204117 +907207 +1408704 +1408611 +2548287 +413477 +2252924 +2252868 +329601 +1790605 +1463949 +2510690 +204063 +1417500 +266216 +1664792 +329558 +856868 +2252908 +204116 +1058629 +937416 +204010 +1616698 +1072269 +856707 +2279457 +45185 +997317 +1515792 +1616628 +1515722 +2548328 +1515757 +2510727 +329594 +1101889 +2060421 +1616652 +1515687 +204167 +937389 +329610 +1058698 +45159 +1238123 +1616743 +2102308 +937382 +1664788 +1703330 +2548325 +856800 +460482 +1051644 +1812850 +266220 +1408707 +329614 +2252917 +1408642 +856900 +204004 +1843719 +856818 +5961 +2548249 +487383 +1408679 +1058652 +2252889 +1463799 +1408725 +1616745 +1703344 +1463810 +2252957 +1058630 +1616674 +1616662 +2253139 +45157 +233598 +1463907 +2253006 +1616696 +1464021 +1058703 +1664789 +1616690 +329598 +1681534 +937408 +204123 +2252822 +2548188 +1153891 +2253019 +266245 +1408729 +1174884 +2060304 +2253027 +599551 +1751159 +2060300 +2060331 +1408574 +2060313 +1703339 +2253003 +2510758 +266253 +2060392 +1616596 +2252988 +1843709 +2510771 +1664803 +1664780 +1408651 +856750 +266244 +856685 +1843724 +1718123 +2060289 +937395 +2548265 +1392713 +2548245 +1681537 +1463837 +2510734 +1408706 +1058679 +204041 +2253143 +2548171 +1515727 +1408666 +204183 +1843675 +2060281 +1515707 +1463978 +2548297 +2060316 +1515699 +1463922 +1616581 +2548286 +1342970 +139805 +1616575 +1783174 +2102252 +266227 +1408758 +2253201 +2510737 +2548221 +413480 +1408682 +139819 +2060290 +1408653 +2060373 +2548339 +45201 +329619 +1408678 +2252952 +204110 +204082 +45151 +204153 +2510698 +2060357 +2060334 +2252919 +1463932 +204162 +266221 +907208 +357986 +2102317 +1408583 +1718162 +2102351 +1393611 +856746 +2548290 +1058709 +204018 +1843718 +2253030 +2252983 +1616689 +1664774 +204115 +1515685 +2060387 +2102319 +2253049 +2510718 +1101878 +856759 +767116 +1058643 +2548166 +1408662 +139760 +433851 +2516821 +1408602 +997270 +1463832 +2102301 +1464031 +1063018 +2548229 +1515753 +1463840 +204152 +233588 +2308416 +1134569 +1843672 +1408571 +1408732 +1616684 +45166 +45140 +1718126 +139822 +1843681 +997340 +398891 +1515804 +1718150 +1408655 +1616579 +357967 +2102258 +1681495 +2252920 +2350549 +856801 +1812851 +266238 +1718125 +2102259 +1515774 +2548333 +45232 +2252883 +2252840 +357972 +2252871 +1664795 +1463783 +204137 +2548222 +2253117 +1515736 +1783168 +1463981 +1408588 +1616646 +1051649 +329648 +681891 +1463910 +937366 +1761464 +1463971 +413482 +45152 +2253104 +1681541 +45187 +937387 +2548162 +329533 +329626 +2102272 +2510688 +1058683 +1843638 +856920 +856840 +856905 +329592 +1463983 +1132755 +1463869 +1681549 +1238127 +1843690 +1718170 +1463878 +1408635 +2253110 +1843715 +767122 +856692 +1463842 +2548144 +2252807 +2102310 +937386 +856756 +2350548 +1408570 +2253061 +856792 +1616594 +1408572 +1463797 +1515710 +329630 +329571 +45149 +1072277 +2548320 +45229 +2253004 +2253189 +856690 +204118 +2252916 +1515674 +1463986 +856838 +204073 +1616695 +2548337 +1408621 +2252923 +1058692 +1463977 +1463937 +1718130 +204025 +1463865 +2851904 +2751774 +2459019 +1090329 +433861 +2778140 +756558 +1380622 +2867365 +2851851 +2510793 +1270441 +475733 +2867370 +2867429 +2458964 +856933 +2867384 +1899687 +1320731 +2851889 +1855584 +2778099 +2742423 +2014862 +730418 +2636255 +2867416 +1320749 +954149 +2636245 +215405 +1210904 +2565868 +413488 +2459010 +2867312 +2778086 +1855559 +2458980 +1380620 +2867447 +2851848 +2867323 +2636254 +2778150 +517494 +2636270 +1090324 +1053855 +2019837 +2867420 +2317171 +2778156 +781195 +413497 +2867321 +487391 +2778096 +2851868 +2778158 +2728965 +1320739 +1535542 +2021329 +2636267 +2867274 +2778180 +2867349 +460489 +2636247 +2867299 +1911311 +1772500 +2867301 +1320745 +2778159 +781210 +2867350 +1380628 +2867329 +2867413 +1535537 +2014867 +1899697 +2510791 +1535548 +2778146 +2867318 +2778064 +2431667 +2867273 +2867483 +1812855 +2636257 +1772502 +2851883 +1270450 +2377339 +2317175 +2281473 +2867367 +2459032 +2636275 +2680016 +460493 +1855583 +1210903 +856932 +2867435 +1843735 +753130 +1934509 +2459001 +1899695 +781199 +2458989 +2851890 +460487 +2636284 +2636239 +2377343 +1855550 +215403 +1660447 +460488 +2565849 +2458990 +1072279 +408964 +2867479 +1122721 +475736 +1646520 +139833 +1825631 +2253228 +856947 +517505 +2636313 +2317195 +2317200 +1464047 +1911336 +5967 +1464060 +1958216 +1616774 +1535560 +363521 +2377348 +2291576 +2459050 +997360 +1417509 +1535565 +1725972 +2377353 +79009 +1660448 +730422 +1535563 +139835 +1616779 +2778193 +1687916 +856939 +954164 +2459053 +139839 +1911328 +2291575 +1772514 +1535555 +2516828 +1210916 +2253227 +1238150 +139837 +2377355 +1790630 +997362 +45258 +1122728 +1790624 +1109275 +443093 +1464044 +2735066 +730423 +1483068 +937438 +1238146 +997361 +1320758 +2636294 +2253213 +2636296 +2102355 +2565873 +997365 +2708520 +1238145 +781214 +1725969 +1718189 +266270 +2132604 +2132583 +2636393 +2636374 +2751802 +1855655 +2132633 +1790668 +383766 +373262 +1790652 +2636424 +997384 +2565913 +1342980 +781231 +1790669 +2636366 +433869 +767132 +45341 +599608 +1320775 +1122736 +1349817 +2068261 +1899714 +2317245 +1616811 +5974 +351575 +266273 +1320781 +1616810 +2377363 +1616819 +681931 +1790712 +708722 +351585 +475744 +2014871 +2510801 +2459128 +781220 +2060441 +388830 +1825635 +1790662 +1790639 +139842 +2565958 +45270 +475757 +1101910 +45336 +2459104 +1855649 +517541 +937443 +388813 +1122747 +45269 +2742426 +2459153 +1464129 +2624339 +2636324 +2317271 +1301446 +708736 +5985 +2565920 +1790705 +2132577 +45310 +900451 +1320779 +2377385 +2565890 +2253331 +2132616 +2412547 +1535606 +1535603 +79030 +2253291 +2132519 +2317262 +1180514 +2751801 +2291588 +2014868 +309423 +2525609 +599613 +2317235 +2459140 +1464116 +954190 +2565956 +45328 +1464084 +1037995 +383772 +2132539 +517544 +139911 +2132546 +2317253 +2060454 +309421 +2636378 +2253283 +2739438 +1198658 +708735 +2350568 +681924 +1790699 +781232 +1790650 +2060445 +2565915 +997415 +45266 +1349816 +1349806 +2291583 +2132599 +383751 +1616866 +900454 +215416 +1790638 +1174896 +781226 +767139 +767144 +2317258 +599589 +2565953 +2291591 +2636337 +401708 +2132630 +1616862 +45296 +954172 +443108 +1122766 +1725986 +1417537 +1417524 +1616785 +730436 +2636415 +401710 +351583 +2317233 +215411 +2317269 +191571 +45331 +708742 +266291 +2253274 +2132544 +1515834 +1535605 +914172 +599591 +1911404 +2253288 +681950 +1535617 +1349805 +2525579 +599631 +1037992 +1122758 +2350574 +1464127 +599618 +2565950 +351564 +681944 +1109288 +2021337 +405245 +1911345 +383768 +1063031 +2636353 +2034559 +681940 +2459101 +1994578 +1616791 +1535581 +443111 +2132574 +2253287 +2525585 +599611 +2636399 +681949 +1899715 +2565905 +1681551 +45325 +45279 +2253313 +1464104 +2412552 +2317225 +383806 +720176 +1349811 +2253342 +2102360 +681913 +2132586 +2253338 +2525594 +2132522 +1855609 +79031 +599592 +2253299 +599578 +1855593 +45283 +475755 +1934517 +1825640 +857012 +351592 +2317250 +1464088 +408969 +1790676 +2459160 +1464138 +351576 +2291595 +2565894 +2636419 +79032 +1790700 +2636373 +1535610 +517560 +1535578 +309418 +1464086 +2317279 +857023 +1417546 +2132569 +954173 +139893 +2459107 +1703354 +1026460 +1238153 +1616832 +1616837 +1464106 +1515847 +2253249 +2079012 +781225 +599622 +204203 +1342979 +1180500 +2636405 +45339 +383744 +1934522 +2624338 +191572 +1320759 +2060446 +2279464 +599601 +2636413 +748639 +2132634 +2253297 +2735068 +191575 +2459099 +2459150 +1911413 +1464134 +2132511 +2377386 +1790679 +681976 +1320785 +2459179 +2253373 +708739 +1644382 +2459115 +2132615 +599615 +1180506 +2735071 +1072295 +383762 +681984 +139935 +1310769 +2459186 +649806 +2281481 +1515860 +2060456 +708751 +2510808 +1616881 +2459189 +2079016 +857044 +2102374 +1821537 +2459197 +1385453 +857041 +2525615 +2431685 +2423155 +1718192 +1947802 +599656 +1616880 +1072308 +443133 +2367704 +1072313 +2102377 +2516833 +2565967 +857036 +1646523 +2253380 +857038 +1122776 +2459199 +1843741 +2132652 +1365430 +1393619 +2510809 +1954417 +2636429 +2060459 +1726005 +708755 +1855661 +1772529 +2636427 +2274471 +1899727 +2357874 +857032 +2565966 +1783180 +233642 +309428 +2566007 +1751202 +681991 +1238173 +1718208 +1855682 +2007476 +1726012 +2566012 +1515890 +1109293 +1122784 +460522 +2459225 +1515902 +1464175 +2566014 +2566000 +1408783 +1393623 +1703357 +1843744 +1464162 +1072317 +233644 +2253447 +1994581 +2253445 +2253407 +2412556 +2079027 +1349826 +2009721 +79040 +443144 +1122779 +1825659 +79038 +2443703 +1972764 +1664809 +2459226 +665904 +599668 +1375128 +460521 +1153909 +2636439 +1210952 +1380638 +649810 +1718199 +1198660 +2291613 +1493261 +708758 +475763 +857068 +2308444 +937506 +2253435 +1515886 +139953 +2253437 +1210958 +2565998 +204225 +1790731 +1616915 +2079031 +2684457 +1751198 +2525618 +2636432 +1393621 +1270465 +487411 +2566005 +2459214 +2132677 +599670 +443148 +857065 +517588 +1464177 +1751195 +1365436 +329668 +1493263 +1320800 +1403229 +2317281 +443157 +1320805 +487403 +1855678 +1616904 +401721 +1950689 +1402000 +997430 +997457 +1377676 +6011 +1180527 +1668816 +1320806 +1210951 +1464172 +954196 +708759 +1751197 +233641 +517587 +1210953 +2132674 +433880 +2459208 +1464158 +1911456 +1159090 +2636493 +2459283 +751591 +517608 +1535679 +1109305 +443165 +2778205 +2636468 +1109299 +1726019 +517592 +1210998 +2459270 +1180540 +2825429 +1911488 +748654 +2317287 +363535 +2867491 +1390910 +1493268 +1180530 +1210972 +1210966 +1180535 +1911485 +2636507 +1855709 +1145574 +751595 +79059 +954209 +2636526 +1668824 +954200 +1145578 +1855711 +2459250 +1390909 +1911465 +517604 +139967 +1911455 +363548 +2636487 +2291616 +1825668 +443180 +2751806 +1655454 +857075 +2566029 +1211000 +1825669 +2636475 +2132692 +1198662 +2825428 +2778207 +2867496 +914196 +79057 +1911457 +363536 +1790748 +1320818 +2253455 +1320817 +2636452 +1790761 +1660457 +2566032 +333005 +2636481 +1825665 +1320808 +1417562 +2636476 +139966 +1077345 +2636496 +1210994 +517610 +1063057 +2778208 +781249 +2459254 +1535669 +1958221 +443170 +517589 +45372 +2510853 +1984822 +1751226 +708822 +338425 +2719184 +1464217 +1899839 +599950 +45371 +857091 +708779 +997470 +1899797 +1385457 +2253509 +1198695 +373310 +937544 +1718228 +666009 +1984826 +997480 +1751212 +599795 +2377435 +2412566 +666002 +2443706 +2253508 +1464184 +1375135 +730493 +2695189 +45374 +2367773 +1718224 +666044 +2102425 +708790 +599881 +599947 +140003 +599845 +708837 +1843751 +1198698 +2253539 +599893 +2738098 +1058734 +2367783 +599943 +2007491 +730500 +2427536 +2510837 +233701 +139968 +1198690 +1198704 +2253504 +2060486 +373284 +730508 +329673 +2102422 +665958 +1403242 +1365443 +2102421 +2102443 +937543 +373302 +730523 +599907 +937518 +937516 +139991 +1365453 +857110 +1616961 +730503 +1616956 +736302 +600018 +140068 +2253617 +1899741 +857101 +997488 +1365482 +1843750 +388861 +1198669 +1616971 +1899737 +140121 +600003 +1393627 +1515932 +139976 +139987 +2253612 +373294 +1515924 +2680021 +2253464 +599739 +233703 +140084 +1141671 +1899754 +600105 +2367763 +708819 +140093 +1343027 +2060480 +1343011 +266302 +204230 +2253530 +600041 +140020 +373286 +2253534 +736288 +1198689 +600004 +600104 +2102434 +1174910 +140026 +1238181 +730547 +1652706 +2367753 +1783196 +1718231 +1375141 +2510847 +2733646 +730455 +140048 +1365450 +857123 +857108 +599732 +2624351 +665996 +2510829 +730491 +266326 +2525632 +937535 +599780 +2253576 +1310776 +388852 +600090 +140108 +1238218 +1365445 +736286 +600065 +1515940 +599836 +599726 +1751215 +708851 +1400765 +665959 +708856 +1174911 +682002 +1101915 +1616950 +1718223 +2007486 +736273 +599794 +599879 +1899755 +2733644 +1464208 +708884 +1899760 +1899807 +2102432 +1403239 +665950 +599827 +1238190 +266324 +140080 +997477 +708801 +599818 +1365481 +708800 +1751223 +730477 +2510842 +2253486 +600012 +730484 +373291 +2253604 +599788 +309451 +140036 +1343038 +730531 +1616980 +1198667 +1681570 +2253506 +1385459 +1238184 +730475 +1396601 +1899798 +140095 +900473 +1899778 +2733629 +600033 +2412562 +2689054 +289450 +266318 +2308449 +857109 +599793 +309433 +600037 +1365455 +2253588 +1768610 +2367788 +937524 +2733638 +1515962 +140067 +599715 +2253619 +1393626 +233695 +937534 +708811 +599859 +1751248 +600019 +1343036 +666023 +2738094 +2367775 +1198672 +373298 +857119 +1365480 +1396585 +666006 +388865 +2510827 +140077 +1038025 +1768609 +1238207 +139997 +1365441 +140087 +140038 +1038022 +1343022 +666037 +45379 +2102414 +1515926 +708768 +599744 +730514 +599956 +2102440 +599746 +1292488 +140014 +1751241 +2011141 +2060484 +1400777 +1198677 +1899810 +1703369 +2412567 +665932 +1515925 +2745422 +2102413 +599899 +373292 +233700 +2102408 +1515929 +937513 +1238205 +708888 +1365459 +708879 +329672 +2367739 +599882 +937529 +2253721 +730569 +1812895 +1261221 +1166893 +736322 +443196 +1972769 +1101943 +1072337 +140472 +266346 +857232 +1516001 +309495 +1464257 +2253766 +1251134 +1385477 +413512 +997527 +2060529 +1790772 +2566053 +140374 +2308468 +373329 +1843765 +682010 +600212 +140477 +1122821 +388888 +266355 +338432 +2253791 +1972770 +1464268 +1122795 +1984845 +2423158 +857175 +140417 +709016 +1617011 +730555 +666106 +1515990 +709004 +140345 +600285 +2719213 +1616987 +1403250 +2308458 +1377681 +517624 +1617070 +204261 +1464284 +140166 +1393638 +937582 +1617007 +1994592 +709002 +709046 +140306 +682020 +1899867 +1617073 +1996235 +1855746 +767153 +600279 +2525635 +1464262 +857215 +1238241 +1954433 +1261219 +682014 +600129 +460573 +857144 +140276 +2285674 +233780 +1934543 +1464302 +736337 +2377436 +2350589 +2367821 +2510880 +1375155 +2253771 +2253724 +2060534 +1343049 +373327 +2253755 +2253679 +233729 +2510881 +600331 +1087556 +45407 +2253630 +140295 +358012 +2412580 +487460 +1464316 +1159096 +708983 +1380643 +140237 +600299 +708985 +997491 +666091 +937555 +2003031 +140400 +1238229 +1375162 +736328 +2253637 +140155 +1855740 +358021 +309506 +709045 +600356 +2253640 +140425 +487463 +2367825 +709048 +2459316 +140277 +487434 +1899848 +1464305 +487421 +937566 +1617036 +708969 +682013 +2253788 +1389774 +140341 +600208 +2285671 +709042 +388890 +1617023 +2021348 +730597 +2253690 +233775 +600178 +373319 +2253718 +730579 +309469 +2291623 +682027 +1617050 +666052 +1994593 +1790775 +708926 +2624355 +649822 +460524 +2566055 +233748 +1051658 +708950 +1051656 +1515981 +373322 +736324 +600369 +937589 +857172 +1122808 +2132722 +363551 +2548399 +2719212 +708927 +79075 +329677 +600130 +751610 +600185 +682031 +2350615 +329694 +1464264 +1090351 +649821 +1493271 +2253806 +2102474 +1122819 +2021353 +1464320 +857220 +2253735 +140329 +1998744 +2021359 +233709 +1365505 +997510 +1911504 +309500 +517625 +1122796 +1516004 +329707 +1389772 +140168 +2412591 +2132731 +708987 +140361 +233794 +751603 +1365495 +1166894 +140140 +2003032 +2014878 +1617045 +1122798 +460553 +140253 +2253629 +233738 +140378 +388911 +358013 +1464252 +346488 +907223 +2367800 +1101944 +1516018 +1122801 +358026 +2253639 +140376 +600140 +666072 +1166896 +45402 +79069 +600238 +954216 +730592 +2277904 +443204 +140198 +1343058 +460545 +709028 +45403 +2745424 +600240 +600318 +857201 +857237 +748658 +309507 +1934540 +666087 +2566047 +600149 +388896 +1751276 +346493 +233721 +460566 +45423 +460527 +2253757 +1464321 +1122809 +140146 +266382 +266391 +2253729 +1617043 +266385 +140439 +857217 +2253680 +1617069 +1166895 +1911498 +720189 +140205 +140444 +2636539 +140304 +937571 +666075 +730574 +2253780 +1375160 +1516008 +1072339 +2636537 +1038041 +2060547 +709003 +204247 +1515973 +1365493 +2727943 +1899854 +140424 +140363 +1617035 +1790774 +857186 +600365 +857140 +2007505 +2028350 +329696 +2007503 +1751283 +2727941 +204252 +600395 +600166 +443216 +2739442 +1972774 +600160 +600272 +140426 +1751267 +2412594 +1934550 +1238303 +1211037 +1843769 +140504 +2253828 +2025644 +1238302 +1812924 +443217 +191585 +388929 +388921 +1464359 +1390911 +1238286 +682047 +954219 +1211035 +709055 +1855779 +363556 +2566066 +140516 +1899885 +140520 +1343060 +2253829 +6031 +1238250 +1855764 +460593 +1141679 +373373 +2443710 +1812938 +857268 +1812930 +1934548 +517655 +233801 +140506 +1703378 +140518 +1238298 +709063 +2132792 +1855751 +2680051 +2132809 +2132805 +2132765 +1238282 +6032 +1464343 +2459340 +2253855 +600416 +1400808 +2014886 +997563 +682060 +2132752 +1516038 +204284 +997557 +2132799 +1153937 +329721 +1238317 +937600 +329732 +1911515 +140513 +1166898 +1855752 +1180559 +2034582 +1145586 +1238278 +2708540 +900480 +289455 +140489 +1238265 +329746 +373357 +2253832 +1812937 +329744 +1617108 +1180560 +1320841 +2132769 +373364 +1899874 +2443711 +6024 +1843768 +2708541 +1812920 +204286 +857261 +2132749 +140487 +857270 +2510887 +1911529 +1136039 +373333 +204283 +338441 +857263 +1783213 +1238330 +1238251 +1238261 +1417575 +2516845 +2253826 +433896 +1238277 +2566113 +1911527 +426569 +373343 +1238285 +363563 +1535704 +1385486 +1516040 +2132750 +1038050 +1934564 +1899876 +1153931 +1911518 +1516045 +2253834 +517651 +1238323 +1617124 +1238306 +2566073 +1535713 +1772552 +1855781 +2132788 +1516048 +426568 +600418 +363559 +517643 +900477 +1198729 +443221 +600406 +1772553 +1535703 +1790782 +1174923 +333011 +2021369 +233811 +1400807 +1198738 +215426 +1211010 +1251135 +997564 +2317302 +2566105 +997550 +1617112 +600415 +666112 +1261237 +2377471 +1072349 +1174949 +2132839 +1198752 +426582 +140548 +2291638 +1709624 +266414 +857297 +1493283 +2525664 +954236 +1038061 +1038052 +79117 +2698349 +1855785 +1417584 +2132885 +954242 +1159109 +2132902 +2566133 +2367841 +900492 +2132873 +857273 +1038059 +1261253 +1369633 +2132822 +2079068 +1464412 +45460 +433923 +2281493 +1726041 +1166915 +857309 +2274475 +1159103 +1464408 +388932 +487493 +1145605 +857274 +2459375 +460617 +363575 +487503 +857315 +649826 +1751295 +1535723 +997598 +2636598 +600441 +2253908 +781269 +1812951 +1899914 +600463 +1790800 +2510912 +79102 +358049 +1238366 +2510906 +426584 +1198750 +1516058 +460599 +2566165 +1855799 +682079 +2253875 +1122845 +266406 +475778 +388934 +1899921 +1790804 +1053863 +1911531 +2079062 +2132843 +2377463 +1251139 +1812952 +1617142 +857293 +1668849 +1911542 +2636589 +709066 +1855784 +2132852 +1790811 +2698358 +433916 +1464410 +1899898 +1174940 +1349848 +1464391 +600470 +2132882 +2132952 +2079077 +2071909 +2355007 +2060565 +1825706 +2079074 +487514 +1768615 +2011146 +1812947 +1270487 +1238352 +997576 +2566129 +997586 +2132929 +2317321 +1783217 +937627 +1391522 +767163 +649828 +682102 +1535728 +1072347 +997609 +517701 +1198749 +1855822 +1535735 +433929 +600437 +2291639 +79101 +781272 +517682 +857321 +2680056 +2566119 +1063074 +2132908 +329750 +682103 +517683 +1825688 +857333 +1703382 +937615 +1843773 +2721065 +79099 +2510904 +2281494 +2253905 +426583 +1709626 +2510899 +857331 +1166917 +2253873 +1403265 +1516077 +1790801 +1668840 +2377481 +2459355 +2695195 +857284 +2459370 +1166912 +517696 +1516055 +1464397 +2132823 +751621 +2079064 +600440 +2132926 +1261242 +2132866 +1464368 +997615 +1238385 +1768614 +2377461 +937614 +487497 +857318 +2459348 +140553 +2367843 +2132919 +1899907 +1812961 +2698348 +1464385 +907228 +373381 +1211042 +2636595 +1083290 +1726067 +2510901 +1751299 +1934576 +2132951 +351604 +2566118 +2132894 +1109336 +2851946 +1464417 +2350628 +487509 +857323 +1911541 +1911538 +1051664 +2566120 +600459 +426578 +1180591 +1417587 +857280 +1238396 +517693 +1211058 +600432 +1825700 +1516061 +1174932 +1843774 +2636582 +748667 +682073 +2566154 +517667 +997594 +2698353 +433934 +2525667 +1843780 +1751330 +682113 +1821565 +2510922 +1855832 +1617172 +517714 +2133016 +2253967 +45479 +45470 +2034601 +1238407 +2566191 +204303 +140583 +140580 +1617170 +1109339 +2133014 +1038062 +373392 +1825708 +6047 +1417613 +2636617 +2516849 +2133039 +2680062 +2510920 +1855830 +857342 +1493302 +2133018 +997660 +1703396 +2427543 +501110 +709076 +2317329 +2377490 +1516088 +2133044 +1535765 +600481 +997662 +2253924 +600509 +363578 +373388 +2510914 +1063083 +1899928 +1166940 +600501 +1464454 +2253941 +1083301 +1180595 +501102 +2636620 +1251144 +2377486 +857359 +140590 +2133057 +388948 +600492 +517720 +517704 +460629 +1159116 +997656 +2133050 +1899923 +501101 +2253935 +1934588 +1843796 +2253974 +2253958 +709073 +781282 +1535775 +600496 +426586 +233831 +1899941 +140588 +997665 +1122860 +1516087 +997647 +338454 +140585 +309536 +2133007 +1038065 +2525678 +997620 +1707676 +1365520 +1122857 +1899936 +1141688 +2034606 +1408793 +1958230 +2680065 +1238416 +2133027 +1464434 +346515 +215435 +1617214 +1122869 +1726072 +2008075 +649832 +2133032 +1645237 +2357905 +2133011 +997632 +1783219 +997644 +2317335 +954262 +388950 +2102509 +857341 +1617176 +1122861 +1855843 +2838419 +1646537 +857419 +2007515 +600662 +666142 +1751395 +600520 +730625 +1934601 +1843814 +857395 +1516126 +600673 +487519 +2680069 +501128 +2412630 +600546 +1391527 +2636626 +2133079 +600669 +1464515 +2636632 +1403271 +2254044 +2566225 +1464543 +1516114 +1751392 +2254012 +1751399 +6057 +2727955 +2254026 +1617251 +2254019 +501123 +2133083 +1911559 +666123 +730622 +600678 +1238423 +1464555 +2838437 +1843809 +2254106 +517752 +2254017 +1821572 +600672 +2838435 +2133065 +600637 +1403276 +600610 +997688 +2281496 +421763 +1343076 +1038075 +600607 +1751374 +2735079 +937660 +1464533 +748669 +1516110 +2708552 +2727953 +600569 +997671 +857423 +1617240 +2412623 +1855838 +140618 +1464519 +1464532 +1047952 +501126 +1668868 +2525684 +649839 +997685 +2838425 +857434 +2412640 +2254002 +140609 +140602 +2367855 +2254082 +517754 +600555 +600579 +2060579 +600667 +2060587 +517767 +1751344 +600558 +600608 +140604 +1984864 +2838399 +2566211 +2254048 +1718307 +1403277 +1911560 +1934599 +1843811 +857404 +2778223 +2838442 +2412610 +1375175 +649838 +1751370 +2566222 +937642 +517741 +857401 +1198780 +140636 +2727950 +2254087 +1417632 +1751349 +1251146 +2566237 +2377498 +2254067 +2680076 +600582 +2566223 +1516132 +1375177 +730631 +309541 +2253998 +997670 +2778219 +1391528 +857413 +1934600 +997669 +2412615 +1652710 +2377497 +266426 +857397 +373403 +2566240 +1751391 +1751369 +997667 +2825452 +1464487 +2133077 +600654 +1843820 +2254053 +309545 +730632 +2778227 +2838432 +600604 +487523 +2412620 +2443718 +666138 +79129 +857426 +1516136 +2624388 +709083 +2566248 +736400 +736369 +600797 +600723 +600707 +233863 +857435 +2254130 +351608 +140668 +600687 +501148 +1617320 +736359 +421765 +140740 +140712 +351611 +266429 +600769 +2254112 +2624400 +1083310 +857442 +233884 +1375191 +666179 +460656 +140738 +140726 +709102 +433962 +736384 +666177 +233862 +460683 +140727 +600696 +487541 +501159 +997706 +388970 +140703 +736382 +266446 +2254156 +736402 +730647 +666165 +600802 +487550 +388995 +600742 +1617326 +460652 +735166 +373411 +600798 +501146 +1751407 +45500 +751626 +666184 +140720 +2254126 +736390 +2308484 +233868 +501131 +709121 +388958 +1751412 +140717 +1141691 +600698 +954273 +736386 +2060604 +600724 +233883 +501150 +709117 +413521 +140739 +666158 +460687 +1617311 +2291649 +346522 +373413 +140648 +233875 +140643 +736387 +2254140 +2566258 +1464619 +2254180 +1535787 +600826 +2377511 +2778244 +954274 +1198788 +857468 +997721 +2254206 +2510941 +1083313 +1812983 +140749 +857457 +2034620 +2778254 +2133123 +1464582 +1751427 +2254177 +600822 +2778255 +1083314 +1516147 +2778241 +1617352 +2034624 +1101982 +2778252 +682134 +1751428 +2636644 +600808 +2102526 +2778245 +1726087 +2254179 +2060610 +2254195 +1718339 +1617334 +857455 +1718342 +2009759 +2133118 +1047955 +2778239 +857456 +857473 +2254202 +2133120 +1617341 +756585 +1790816 +709126 +1166948 +2350668 +767176 +2308490 +233885 +1464583 +1821580 +600804 +1899957 +2133109 +2034621 +1408801 +460696 +1198794 +857477 +383837 +1972796 +666187 +1083318 +997736 +1709631 +363583 +1385494 +1038115 +2566305 +2367874 +309584 +1934609 +1198806 +2566283 +289460 +857511 +1343086 +1681609 +1911566 +1783223 +709148 +2060636 +517802 +730674 +443260 +140793 +1617378 +1072366 +2102540 +1617381 +1911569 +954286 +739668 +1718367 +388997 +2751821 +373438 +1464668 +1617371 +937715 +2254316 +2412659 +2254298 +517812 +1617386 +2102554 +2133153 +433970 +1343093 +1617363 +1772570 +2317342 +937711 +1843846 +682160 +1153957 +1101988 +1899970 +1681617 +2254296 +997782 +1464660 +2548423 +1812987 +600896 +2367870 +1516181 +1681620 +2317349 +2133170 +1320935 +1668875 +2254312 +2566275 +1668877 +1934625 +1617385 +1198832 +2007522 +2566269 +682144 +1535798 +600898 +857498 +600932 +1751462 +1718355 +2566287 +937695 +781299 +1026476 +666194 +2739446 +1617397 +997774 +753140 +2566304 +1783222 +682153 +460741 +1687947 +1198810 +748675 +398895 +937712 +600934 +2548453 +1718352 +2566273 +2079107 +857523 +1764553 +1198859 +1718372 +600857 +857520 +2367867 +937698 +720233 +1320928 +1464663 +2254292 +1855860 +997753 +1198803 +2412660 +460702 +373422 +1718359 +2350678 +1464661 +2254302 +2566277 +1320908 +1718374 +1385495 +1617374 +2254265 +2254264 +1709635 +373434 +737330 +2566289 +1122899 +1790823 +2548443 +600918 +907237 +266463 +2254241 +2254263 +1709637 +1535791 +735168 +1270520 +1464624 +997780 +1718375 +1153953 +517817 +600921 +753134 +2548448 +2060635 +1198849 +460720 +1516184 +2350679 +1751441 +709153 +1812994 +45531 +1349883 +2102546 +600935 +748674 +389000 +1198874 +1349891 +709150 +1198822 +709138 +1198841 +2624412 +666201 +1101991 +460728 +517819 +1855858 +709162 +1393652 +2624421 +709164 +1751464 +709137 +666195 +233897 +2133175 +730676 +1198858 +2566290 +1122916 +1718356 +937690 +1038120 +1038114 +737332 +1535796 +997776 +2102553 +1994606 +1516170 +1760471 +1516193 +2367872 +997737 +857527 +997783 +1617404 +756588 +666208 +1122927 +309603 +1198878 +1617504 +2254389 +709173 +1310798 +373461 +141075 +298022 +709181 +1261295 +649871 +649855 +2254335 +141076 +2566315 +1998760 +298019 +1718383 +141084 +1365557 +1972804 +1718378 +266557 +266608 +141074 +1617501 +1516199 +309647 +1726108 +373450 +2412664 +743504 +140968 +309694 +2735088 +2060645 +266482 +1375199 +720263 +2034652 +1772572 +1617498 +266587 +601034 +6074 +601070 +309675 +140947 +1652719 +2377539 +1211076 +1238467 +1617422 +601065 +215450 +266563 +1417670 +735179 +141018 +601154 +460761 +140972 +857566 +140856 +487604 +709194 +2377570 +338464 +756589 +2034639 +140812 +309644 +730730 +601166 +266532 +1813006 +45562 +997799 +6079 +140974 +2759690 +2034647 +601045 +2133206 +601013 +997789 +79183 +1404484 +2133212 +1790825 +233902 +45540 +2254393 +2735085 +601086 +2254364 +1375197 +1703414 +1417664 +266465 +460770 +373442 +2254390 +309731 +1934645 +709200 +517858 +141021 +1934662 +45541 +1026483 +2254380 +266534 +2102562 +954292 +743507 +373473 +517846 +309612 +487586 +460755 +517875 +2254387 +309729 +997814 +140986 +1072379 +309726 +1109356 +309718 +141090 +266541 +1535846 +460769 +857568 +363597 +730708 +997786 +487579 +1617492 +730738 +1617493 +1934661 +266554 +600996 +1934649 +2377540 +487615 +373456 +601121 +517850 +6085 +413526 +2680084 +487576 +2133224 +2367881 +266535 +487612 +1535850 +682173 +1934658 +309672 +2133235 +266601 +141034 +600964 +997806 +475799 +1751473 +324047 +487596 +1047957 +233904 +309692 +141042 +140977 +2254361 +2133195 +79201 +2060647 +140848 +1417671 +601134 +720246 +1681625 +298014 +487598 +600992 +1751477 +140877 +141078 +2510953 +1751482 +2357920 +324052 +2079112 +1900002 +601119 +2377576 +309654 +266500 +309643 +141043 +601055 +140976 +709206 +1718380 +1038132 +79172 +140851 +2034651 +517865 +266570 +140950 +45552 +373444 +140971 +517917 +517923 +517920 +1855865 +1617417 +601101 +600993 +266556 +517866 +309637 +1934636 +857559 +601143 +517916 +601193 +601044 +709195 +601110 +1026481 +266573 +373439 +45580 +140975 +954291 +781319 +141068 +1238468 +140886 +857537 +1464691 +1464688 +309717 +601161 +266629 +460752 +487594 +363591 +601038 +2636674 +2060648 +2133207 +266481 +857529 +460758 +709176 +309668 +709178 +2367882 +517832 +1122931 +141066 +666212 +141013 +6081 +1261297 +666222 +2636671 +601084 +309715 +266489 +1102004 +1109355 +1855872 +997839 +601215 +1972810 +2133293 +2377594 +1026485 +1270526 +1058753 +1516221 +682196 +2254405 +517957 +141123 +421786 +666236 +2698365 +487630 +1493342 +781364 +1493334 +1855882 +781325 +1958254 +1855881 +2778274 +79214 +682209 +1136044 +720274 +1617506 +215455 +1090383 +141110 +373480 +1718386 +2566350 +2034667 +1535869 +2133288 +517997 +79237 +2525704 +79218 +6088 +1072384 +1238489 +79239 +2133266 +1950702 +204320 +1377699 +141109 +857620 +601216 +1464707 +79225 +1493338 +141128 +1516213 +2291669 +781326 +517962 +2357925 +1180621 +79227 +857598 +2721083 +754575 +421785 +1417698 +754570 +1180626 +2735091 +79203 +997844 +1493326 +1072386 +1270529 +900506 +1198890 +997843 +2566322 +937734 +79224 +2254407 +1380660 +857594 +1493340 +666235 +1053868 +1349924 +1535875 +2431716 +781340 +2698363 +1972821 +1911599 +1825739 +2377598 +857616 +1516211 +601202 +2133298 +1038142 +2566363 +2778258 +601212 +2721085 +1958260 +2317353 +141102 +937729 +682226 +1349928 +781347 +2308504 +2019843 +141121 +730741 +2133273 +517955 +682214 +781374 +1483078 +1417704 +1972811 +1023475 +518001 +1270536 +1320944 +1972836 +720271 +1972820 +2566318 +857601 +1617513 +141122 +1790827 +333015 +2133299 +1843862 +1972817 +1320946 +2357931 +2751827 +1349929 +79233 +1843859 +2548463 +1996259 +141111 +1790830 +997837 +501180 +1320981 +1855867 +141161 +2727973 +2254430 +1772581 +857661 +1900027 +2254444 +2133340 +2291681 +518027 +1516231 +141135 +1198930 +954327 +433993 +1321005 +333020 +1958266 +421801 +1417725 +937754 +1646543 +1211097 +1900014 +2291677 +2034682 +900512 +2377631 +2133317 +2254477 +2133396 +1813024 +1998768 +709220 +204325 +1703421 +518038 +2377628 +1393662 +1159128 +2254433 +233930 +1813027 +2721092 +1617540 +2034680 +1687956 +1790833 +1198910 +1417711 +1238518 +1516225 +518030 +2133336 +45634 +954321 +1972841 +421800 +1709645 +1617570 +997866 +937739 +460794 +1535928 +1516239 +2357933 +2357939 +1417732 +954332 +1090388 +1122959 +781387 +857625 +2291678 +1166960 +1900026 +737339 +857629 +1417719 +1617549 +739676 +1198920 +329768 +997885 +79247 +2459414 +2034693 +2377625 +2079127 +1464736 +2377624 +2133391 +1261330 +45620 +2377621 +2133337 +2060685 +857655 +914258 +443274 +997854 +141160 +2254461 +45639 +2367890 +2133392 +2730633 +215461 +2254452 +1718391 +1464728 +329766 +1825756 +1301484 +426589 +1211099 +1855904 +1664814 +1038148 +351629 +460800 +2133366 +2133395 +2377638 +2751829 +1718411 +2079129 +45633 +1198922 +2510955 +1417729 +1772580 +501182 +460819 +1153964 +2034699 +204322 +1261329 +2060699 +2350694 +1211091 +2034702 +45628 +1617539 +2735098 +2133326 +730750 +1072388 +1687963 +2708575 +2060696 +907244 +1535894 +333016 +682229 +997855 +954325 +737340 +1900042 +914262 +2079124 +1153961 +1464718 +191616 +2254432 +487636 +1813023 +954318 +997900 +1911601 +1718395 +2254445 +2254436 +2510956 +373507 +373502 +1617536 +1083332 +460788 +2133315 +1958262 +413532 +601227 +1198931 +2060672 +2377635 +1063095 +1934692 +1535922 +1464762 +2254429 +1417710 +601228 +501183 +1617530 +413546 +383889 +2377654 +141191 +383874 +2357971 +1343103 +1709661 +266698 +333026 +2377650 +383860 +141239 +1718420 +266703 +1063100 +1911617 +518107 +373523 +518072 +1038155 +857698 +2317376 +857691 +1493358 +1900051 +1617598 +1090409 +389043 +1783230 +1843884 +682288 +413550 +2624473 +682336 +1855921 +753145 +487670 +408970 +682316 +2281511 +997911 +720281 +857687 +518066 +2636709 +857695 +518104 +266712 +1516278 +997915 +1535970 +737349 +937762 +682280 +443281 +1102039 +1934708 +2566429 +1198937 +754581 +2133425 +730751 +914265 +413548 +997909 +2459451 +141198 +518090 +2459441 +363611 +1757312 +1493368 +1718418 +333031 +682329 +363618 +1535979 +266716 +601292 +1404485 +709239 +191623 +682276 +2357976 +1813038 +735198 +1321015 +6119 +475825 +487653 +1617582 +1493359 +2636704 +1301486 +601275 +434025 +1024562 +1063102 +1166966 +333029 +518108 +141254 +2317361 +1321012 +1516270 +1392732 +413539 +248646 +460856 +215471 +1516272 +767194 +709236 +1174974 +443284 +730759 +1535931 +914275 +141229 +1516273 +914278 +487691 +413547 +1843879 +45655 +2317388 +487687 +1417739 +1090406 +2510968 +954357 +1617583 +141256 +735207 +2133419 +601295 +518112 +1718417 +737346 +900522 +709238 +460849 +2357978 +2317391 +709247 +1843876 +518081 +857683 +518063 +501188 +1349943 +2357952 +1900058 +79287 +475821 +1709676 +1321019 +2079133 +682335 +682341 +141224 +1709666 +266675 +2377664 +141253 +2357954 +2548480 +1180661 +141200 +857677 +1038151 +1516266 +363628 +997913 +781404 +1987777 +753152 +1764558 +518074 +1090410 +1180651 +2317364 +79294 +1321011 +389042 +1053872 +518095 +1090397 +997926 +1617610 +1090405 +413565 +1493370 +720286 +2357947 +2317365 +601305 +1998772 +2133449 +720293 +1180664 +2133484 +389050 +601303 +2133464 +1617642 +1772586 +383914 +373526 +2377686 +781427 +401740 +2133488 +1417763 +233948 +735218 +1703431 +141275 +1321037 +363632 +233947 +1198970 +2254508 +518127 +1270549 +2317406 +2825460 +682362 +2566467 +1911625 +1417768 +1090420 +2624480 +767202 +363631 +1813045 +518150 +2133455 +266735 +518124 +1063103 +1688005 +1349950 +2317409 +2133461 +475853 +363633 +233950 +1198968 +781420 +2566458 +1536008 +373528 +1617617 +1947817 +1821586 +1180667 +1321042 +2778278 +2377692 +6128 +79315 +266734 +1536001 +1464790 +6130 +2133470 +191629 +389047 +914288 +248652 +1813044 +914291 +857706 +1772587 +1855928 +2377691 +781416 +1180666 +2133490 +191631 +2566471 +141271 +1535993 +2377695 +900534 +1090421 +1180670 +266737 +79304 +79306 +1380674 +2133480 +1843889 +1998776 +518139 +1417753 +1464786 +1198957 +1159136 +1417749 +1681650 +1536099 +1123008 +389051 +1516299 +682381 +45752 +2254547 +2566494 +1536063 +754586 +2566490 +601399 +2133529 +857733 +857820 +857755 +141432 +460959 +682420 +1843898 +266761 +1709687 +2254534 +45691 +1417777 +2060714 +1464852 +756621 +233958 +141374 +2350715 +2133571 +601332 +1994626 +421876 +204352 +601431 +2636720 +1900113 +373604 +1617710 +266802 +1270555 +487718 +1718450 +248653 +2357982 +373565 +997997 +2068274 +2060734 +2624490 +373623 +233990 +1617799 +1900070 +421865 +421889 +2317413 +1123021 +2721096 +501198 +1516320 +2350724 +460951 +2624487 +1123006 +1198976 +487700 +1464865 +141390 +2254613 +1617825 +309752 +781449 +1090423 +1058763 +2254692 +191635 +781452 +2357983 +2308542 +997988 +1464883 +234008 +1617686 +1972856 +767240 +1900129 +1617716 +233956 +461008 +141347 +141431 +2459466 +2525733 +233955 +389066 +2412732 +1516313 +1087570 +857802 +1900110 +2525729 +1198998 +45730 +2254676 +1617656 +907255 +997959 +601350 +857745 +2548501 +1072422 +141289 +141310 +1718426 +2412743 +601316 +601432 +601329 +2566491 +1102059 +141375 +1751532 +2071913 +309758 +373605 +518189 +233982 +2548526 +1102069 +518163 +1199008 +1681648 +1718443 +2026637 +338486 +1900136 +857831 +434073 +266780 +2060739 +413570 +682410 +857816 +2350713 +141409 +373598 +460987 +857841 +405272 +1072421 +460947 +1751526 +857732 +1617786 +2254566 +857821 +767236 +601397 +289479 +1058775 +460871 +1718448 +2308526 +141363 +460885 +421887 +1900088 +266843 +682395 +1900131 +1900124 +1198981 +2548500 +309751 +682380 +434045 +233961 +141404 +475856 +2510977 +434050 +2133531 +2377723 +233972 +79348 +1493383 +1718439 +501202 +1617762 +2254629 +1783231 +997975 +518204 +1718445 +1617841 +2624499 +45745 +141296 +2680091 +1900134 +215501 +405276 +1617690 +2254620 +1536052 +518183 +45683 +413572 +487723 +998016 +730790 +398908 +45755 +601388 +487717 +1958271 +460923 +141287 +2350728 +2412707 +289497 +937793 +1855950 +1718433 +1972857 +998002 +2308546 +45685 +501224 +79326 +1123011 +421893 +373603 +1102047 +997952 +601456 +2254530 +2708584 +1617773 +857830 +1536080 +2624491 +2133525 +141323 +601353 +266851 +1058764 +1703434 +2308540 +2133501 +857734 +234007 +767239 +682408 +1617785 +475855 +857788 +2254634 +2548524 +1123000 +2728979 +601387 +141346 +601476 +2019845 +1617682 +767216 +141442 +709257 +1617673 +373572 +2133508 +389062 +1646550 +363640 +666256 +601454 +373581 +2254567 +601428 +460895 +2308543 +998015 +289478 +373570 +1958270 +2133515 +1617745 +2350723 +141367 +1464801 +1464860 +1617823 +1536061 +937809 +141330 +460902 +266836 +601376 +1464850 +1900100 +857735 +204349 +2350731 +338479 +1900084 +1417781 +682417 +1987781 +1726169 +2133544 +997962 +1516304 +1153983 +1493388 +998007 +421878 +421833 +1261359 +45671 +1198983 +601343 +2254664 +1343109 +141450 +857782 +1900073 +1102089 +1102087 +141480 +1408823 +857828 +767210 +2728980 +1843916 +857742 +501194 +418900 +2728976 +141448 +1947819 +2548498 +937812 +2133513 +45684 +1855953 +518165 +2254537 +2636727 +900542 +421874 +1617842 +2254656 +421844 +1038160 +1464812 +601336 +781445 +1617649 +997960 +45747 +2459468 +1024567 +2254602 +1417772 +373571 +518155 +709317 +1617907 +1310819 +857905 +358102 +1843935 +1211114 +1464918 +1536117 +518276 +2350735 +1159148 +857883 +2014904 +1617871 +6157 +601487 +373673 +601577 +266864 +1123056 +1819455 +1199019 +720305 +2254764 +2548541 +1751540 +518265 +1343116 +601537 +1536124 +2011165 +1617854 +234035 +709302 +1238638 +1310828 +1386848 +2133584 +1998782 +937823 +2624515 +937828 +601629 +2254705 +601608 +998028 +730819 +1493391 +1617961 +309791 +1516360 +518280 +45778 +601495 +1199020 +1349989 +1843931 +2745448 +1757318 +1688012 +2102626 +2014909 +1617910 +2624504 +1825788 +1404490 +45768 +1464893 +1349971 +1617956 +1617951 +730823 +1464915 +2751843 +518245 +2133607 +1718463 +730802 +857882 +954395 +1270566 +2412764 +1617870 +2102613 +601549 +1123029 +518219 +1301493 +1617865 +1843927 +1072426 +1058777 +857902 +2566505 +1238659 +2689060 +2060775 +730826 +1123043 +1211124 +2624522 +2367911 +1199015 +2727992 +857893 +1617890 +1402010 +1238618 +2133598 +373674 +998082 +1349972 +1843925 +1934745 +2412751 +2133599 +2102603 +1855971 +2377743 +937840 +2254750 +1718466 +1934731 +1855962 +2254755 +1536122 +1617930 +1668924 +2350736 +1726178 +666276 +1211117 +1709693 +601603 +1617927 +2133608 +373658 +1385511 +2254790 +1072431 +2357988 +2566503 +309785 +2510991 +1994652 +2548538 +309792 +1617879 +2254791 +487729 +1761472 +1349984 +2708590 +998027 +1321064 +1813049 +857881 +1123030 +1764563 +1464936 +2377759 +2357989 +709299 +601636 +1464920 +2636739 +1166984 +2034741 +682423 +1174992 +2459474 +1310818 +2133586 +2014906 +2133604 +1617947 +2412759 +857884 +2377767 +45766 +1703446 +2254702 +857891 +1487403 +1464927 +2021378 +1987784 +781462 +2636729 +857904 +289499 +383926 +2548534 +2133594 +383924 +2060756 +1760479 +1617849 +79354 +2133589 +914304 +1516375 +857880 +518269 +1397751 +358106 +2459482 +2751841 +1350003 +682428 +2254694 +2566506 +141534 +2291724 +518239 +1718465 +266884 +2367910 +2254716 +781471 +1790881 +2636784 +6167 +2636771 +781473 +2636776 +2377793 +1380701 +2459536 +781469 +1159150 +79359 +1958275 +1998785 +79358 +1417807 +383932 +1790883 +1772603 +2431743 +748687 +1063137 +79361 +1855979 +2133625 +2079194 +141544 +518340 +1063115 +900550 +781491 +1856029 +2079188 +954406 +1417802 +443313 +518319 +2133643 +2079177 +754589 +518321 +1270586 +682480 +1856025 +1726186 +1321077 +1350027 +1238663 +1855999 +1270584 +1536132 +756625 +1180697 +1790887 +1180699 +1386855 +2133639 +518287 +2133650 +2566553 +6162 +2291732 +1251175 +2636790 +914314 +781492 +2377796 +1536152 +518302 +1063134 +954399 +1380704 +1063136 +518313 +2566560 +1063127 +1644395 +1688022 +914311 +518322 +2079184 +1668932 +79355 +1493404 +2079183 +1321075 +1819458 +1493396 +781463 +518307 +1668928 +79362 +2377777 +748689 +1321079 +2459526 +682450 +2566537 +954403 +2636786 +1063131 +1617974 +389101 +1493426 +461034 +1153999 +487779 +1166988 +443325 +1166997 +266966 +373694 +1950718 +408981 +1166987 +1109387 +461019 +6174 +389131 +2511022 +2511002 +461091 +289507 +682534 +329779 +1987790 +266918 +857921 +682503 +1972892 +2636792 +1123071 +383980 +2133702 +1464955 +937852 +204371 +141571 +682505 +2254802 +267001 +1813085 +401748 +79387 +682533 +1199070 +2317446 +333042 +682514 +1083341 +443328 +2459574 +487810 +753170 +191659 +2133684 +682512 +1199066 +358118 +1199024 +1199029 +1900168 +1090442 +2751860 +518389 +461071 +383944 +234050 +2004144 +2698378 +2034751 +79391 +79380 +266968 +413611 +79374 +487813 +266975 +141601 +461069 +2636794 +461026 +2317462 +79389 +413654 +2566565 +266942 +1199051 +2511009 +266965 +2133700 +1617978 +2007535 +363649 +383972 +666295 +735244 +1856035 +266912 +79384 +1350031 +191658 +1900172 +2624528 +1617973 +2254820 +45789 +2511015 +434108 +413627 +1077361 +487770 +737363 +266979 +1180719 +79399 +383957 +289505 +266917 +248657 +1617980 +682484 +1668939 +1123060 +461046 +1813081 +461020 +413631 +266987 +2511003 +45785 +2021401 +1934774 +487786 +1180724 +266962 +461057 +1646555 +2751852 +413649 +1063144 +1136054 +1825809 +1123066 +1392741 +518397 +1072440 +1321100 +401750 +1813084 +487790 +383979 +601666 +1843948 +709321 +475893 +666293 +2751858 +1998790 +682482 +937849 +682488 +857925 +1987794 +266935 +735242 +1790898 +1397754 +141596 +1790901 +1154000 +191656 +461033 +398914 +413601 +266954 +998091 +329777 +358119 +2133677 +487811 +1972897 +413661 +2511024 +2317453 +1369646 +518399 +266983 +2739456 +1238677 +413622 +682520 +601670 +266964 +389088 +1464957 +2459579 +487735 +720322 +413665 +204369 +737357 +682543 +2060780 +487798 +443326 +461065 +383965 +266940 +753196 +2566567 +234048 +389126 +2317447 +954418 +954419 +2431745 +2431747 +2459554 +487743 +487807 +2021392 +720325 +682547 +401752 +1813091 +1301509 +1911655 +1199061 +1987807 +2317473 +141622 +1238695 +666337 +141649 +1180728 +1668943 +1987798 +2011181 +1618000 +1900223 +1772619 +1900207 +2751883 +1321137 +1900224 +2377799 +2566627 +601705 +1994670 +1900222 +2735144 +518513 +1380739 +2735133 +1238714 +1856062 +518441 +1617990 +2254849 +1090448 +1493430 +1321144 +1813100 +2566629 +2566633 +2014961 +2007536 +1825813 +1350111 +518427 +2133754 +1380727 +1390941 +954422 +2254846 +518443 +2459583 +666308 +1900192 +2377810 +2133786 +518421 +2133737 +2721124 +2011176 +2254834 +1900212 +1718498 +1617986 +1390964 +1536220 +1343124 +1238713 +2745456 +141629 +601728 +1618020 +1386870 +682610 +730874 +45793 +682602 +1417824 +1617988 +1934789 +1464963 +298038 +1464971 +1390944 +682620 +518453 +1390926 +682627 +1900214 +215535 +1536207 +2377816 +383983 +2721128 +2034758 +2459601 +2133744 +1390929 +682621 +1900193 +1417818 +1350101 +666301 +1380738 +1516389 +1994659 +1718488 +1668945 +1790913 +1987797 +998103 +2291745 +2728000 +730855 +2377802 +1380737 +79425 +2254858 +1464976 +1417815 +2742443 +1996269 +1718489 +2624554 +1270602 +954424 +6177 +1350078 +2021403 +2511027 +2721130 +2698382 +2525753 +518434 +1900239 +682612 +1301536 +649920 +1934785 +2566588 +1900216 +2735148 +79418 +1380734 +215538 +1301530 +1238708 +1994662 +857934 +1350103 +1972928 +1123098 +475913 +1464959 +1464975 +601749 +1911671 +2636841 +6179 +1900220 +1987800 +720329 +2377814 +2459596 +1123086 +666302 +2698380 +682588 +2034756 +682623 +1397757 +518407 +682561 +1934790 +1390945 +1270593 +1900213 +2624537 +1655479 +1386869 +1350067 +2566611 +2548557 +1972927 +1900240 +1493429 +2254824 +1167008 +730880 +2431752 +2566600 +1950732 +363655 +2636831 +1900227 +1998798 +2566622 +2014938 +1987808 +518412 +1856054 +2636825 +2459594 +1972932 +2525755 +1321114 +1856060 +2739462 +1998810 +1038199 +2751887 +1350086 +1123076 +2708613 +2636842 +2566591 +1911672 +2624535 +682598 +518521 +2014937 +857927 +2721116 +461113 +79423 +461119 +601709 +413673 +682583 +1536195 +1536227 +2721118 +601727 +2721125 +2019872 +937854 +720339 +2566621 +2695229 +1369649 +1464960 +1123107 +1238719 +2133843 +1465015 +1389788 +1813129 +2308584 +1843994 +2708639 +2566704 +1844014 +937873 +2548580 +2412780 +141683 +720354 +518551 +2308575 +2443737 +2133825 +2291760 +1618054 +141665 +1321156 +2358001 +2511041 +1141695 +857961 +649937 +1681671 +1768630 +2367928 +709397 +2254944 +141679 +682660 +1391535 +2274494 +1618048 +601998 +2719226 +2079220 +2133823 +1618116 +649938 +730903 +487821 +1321163 +2751891 +2254993 +1292537 +730888 +1385548 +2738129 +518533 +2412797 +601831 +2254897 +1321151 +649941 +998136 +2459605 +1393694 +1365586 +1310859 +2254945 +998113 +1703461 +1403286 +1843974 +2511057 +1783249 +937886 +2254978 +79430 +1464981 +2034765 +1856107 +2254913 +487843 +682644 +2255013 +858044 +2350780 +857950 +601815 +1141698 +937870 +2254914 +2624584 +666358 +1385535 +1658624 +2548569 +2317486 +2255003 +1516492 +1465000 +1380772 +709416 +1516452 +1400821 +2730672 +141682 +1516496 +2738136 +682633 +2738148 +1618061 +1618064 +2133856 +1516459 +2548581 +682665 +234080 +2025650 +2525778 +1900277 +2511033 +601915 +2735154 +2730666 +2377841 +2367941 +1396616 +1072464 +720349 +1813108 +1199108 +2377831 +682657 +2624578 +2719239 +601822 +1487412 +234087 +1703462 +1934803 +2255012 +1083371 +1154008 +1292544 +1618075 +1389793 +1400828 +601961 +1843997 +2733664 +1751589 +2133829 +2133811 +858035 +487831 +2060828 +2367944 +1813125 +1707693 +2133806 +1984872 +730897 +601829 +998144 +720356 +1072467 +1821594 +234086 +2525776 +1465025 +2423161 +2708635 +2730673 +998135 +1047965 +2708642 +937867 +601899 +2254977 +267029 +1703455 +601981 +1292532 +601993 +1465058 +857957 +709381 +666373 +1618059 +487839 +2525765 +2708638 +1618047 +2636851 +2708659 +2133801 +1261414 +2254890 +1154009 +858012 +1380763 +1365574 +1403291 +2367936 +2427546 +2511046 +2695240 +1465061 +2377822 +2254979 +1393692 +857944 +2133851 +736419 +1396611 +1270607 +309809 +1377713 +1516490 +1465018 +666344 +1681665 +1465051 +601901 +1396623 +141672 +1900272 +2079219 +1083370 +2060810 +1465065 +1516416 +2719223 +751642 +1365562 +1310861 +2525770 +1180739 +601958 +1072469 +1751582 +2566675 +346528 +2350778 +601772 +1703454 +1199100 +363656 +2708660 +1408832 +1350134 +487827 +781531 +1141703 +1375209 +1102141 +1365576 +1718507 +1618148 +1380758 +2708656 +2254954 +2377845 +2308583 +1380756 +1343151 +1343131 +751638 +666345 +858046 +1972936 +857994 +2254899 +736422 +2624585 +1843969 +2742451 +1483086 +1321162 +487840 +1350136 +2350785 +601878 +518536 +1465063 +1516421 +518539 +735256 +709408 +1238726 +1038213 +2708655 +1385555 +204378 +1123119 +2254898 +2708631 +682639 +141696 +518563 +338516 +1516447 +309805 +666346 +2566669 +2254894 +1618137 +601917 +2680108 +1343137 +1350126 +748705 +2308577 +1385533 +666350 +1365561 +1261413 +730887 +1618138 +204381 +857964 +1123105 +1365581 +487820 +2102644 +2745480 +601950 +2060813 +1618081 +2133831 +709425 +2133928 +141714 +858138 +1825841 +602199 +1900344 +1083380 +2060843 +2011187 +234103 +1536263 +2377848 +1465074 +602023 +2060847 +1703479 +141737 +730918 +1154016 +2133959 +1516545 +2548595 +1618304 +2358013 +602010 +1465140 +1994676 +1703467 +2684473 +2730676 +487865 +1465104 +267035 +1403303 +602201 +1958298 +602138 +1270636 +602159 +2412823 +2255098 +1199124 +1954460 +2255161 +1536262 +858190 +2034786 +2133865 +2011197 +2566750 +2133902 +1984884 +998172 +2548596 +730921 +1618272 +2255082 +1350147 +602025 +2511059 +1465118 +1994683 +2317514 +649948 +1350148 +2255116 +2511070 +1389798 +141779 +1900337 +2255067 +2708670 +907267 +2377851 +720370 +2255125 +2511078 +1102172 +709432 +730916 +2133917 +2008076 +2566734 +309810 +858094 +2255091 +421929 +1958304 +2636853 +2133888 +736428 +2255120 +954445 +1900329 +141709 +1465093 +487871 +2516875 +2431762 +1900289 +858141 +998187 +501241 +2566763 +1844041 +736436 +858135 +1516538 +1825836 +682702 +2516876 +2255081 +2255162 +1726222 +2525799 +858205 +1167016 +736430 +998157 +937897 +2548590 +1751593 +602088 +2133885 +858199 +751657 +2133874 +1900318 +2350840 +2003060 +1199119 +2377875 +141704 +1123126 +1403305 +2255160 +234097 +2025653 +1238780 +141751 +2060873 +389150 +1681674 +602042 +1167033 +602145 +602204 +602175 +2060854 +389157 +1703487 +730919 +1321220 +2377865 +602127 +1167024 +518574 +2511068 +1618263 +1681677 +751652 +2255190 +858147 +1321196 +389166 +1375220 +1211157 +1038214 +487862 +858108 +998201 +79438 +682692 +602178 +682698 +2566757 +2739473 +1321217 +2566749 +1167028 +2133962 +1038227 +79441 +1154013 +602046 +443349 +267064 +2255077 +1343157 +998184 +1618308 +682694 +1813138 +1856127 +858210 +1199132 +1038219 +709424 +858161 +1618200 +2102684 +602170 +937928 +1844027 +1365596 +309820 +2133918 +2624603 +1972939 +602154 +267053 +1703478 +1102176 +501232 +858153 +998197 +461159 +602014 +2255163 +2008088 +487875 +141715 +1751620 +383988 +2459619 +2566717 +602162 +501239 +443350 +2680116 +720367 +2548584 +602133 +518609 +487883 +2377864 +1958295 +461157 +2060885 +1238788 +2350859 +2358012 +781539 +1380786 +1403298 +1681675 +1536254 +2566713 +602061 +1145620 +204384 +2738154 +346535 +1141708 +1618310 +937925 +1958308 +1375215 +2412813 +2377873 +1109405 +2431764 +2350857 +2255175 +1844031 +346539 +1618209 +2255152 +602116 +1403295 +2308590 +736442 +709427 +1618290 +1167026 +2255051 +1821599 +1321216 +1984889 +2350815 +1856121 +2133951 +858142 +602053 +2566746 +2255040 +602032 +1618188 +141713 +666406 +1180747 +1238784 +2060862 +602047 +602029 +2133947 +2255087 +389159 +2133912 +602089 +1038225 +1261429 +2624611 +413684 +602172 +45815 +141778 +6185 +2548593 +2624608 +1270626 +858079 +141703 +998161 +1825843 +1998821 +2291769 +1038223 +501243 +781536 +2060893 +2636854 +602198 +2511081 +346533 +998150 +1516511 +1751616 +858053 +2730678 +487867 +858096 +2624610 +649945 +1516525 +2133867 +1954464 +998215 +2255270 +2459644 +1321247 +2459650 +1790924 +1536299 +1321243 +1321221 +2708677 +1465227 +2034803 +2459648 +1984891 +45828 +1536304 +2291786 +2255252 +2102690 +1417849 +1911692 +1536306 +6189 +2133982 +2291794 +1417867 +2008091 +1618396 +2134041 +1465288 +2636884 +1417859 +1856146 +781550 +937949 +1646560 +998235 +1856136 +781555 +2459649 +329800 +2636870 +998229 +2255287 +2377895 +2566837 +2255242 +2377917 +2511094 +1516557 +2291785 +1109411 +1417905 +1321253 +1321255 +1417898 +1465236 +141808 +2255225 +900565 +2377909 +2367981 +2459639 +1270649 +2255214 +2566832 +1417878 +998230 +518643 +602216 +2566831 +2684484 +45846 +1270639 +1321256 +383991 +2255275 +602258 +1270642 +2079247 +1465256 +2255286 +1900347 +2525824 +329804 +2291798 +2566774 +2459633 +383990 +1536312 +1790922 +858223 +1270641 +602244 +1465264 +518625 +1618330 +1958327 +141809 +998258 +2317529 +2255271 +1417894 +1465234 +1417900 +858230 +1483091 +1516556 +1934815 +518642 +602225 +2026642 +2738156 +2134008 +1718549 +2291797 +602245 +1465249 +2291792 +2134065 +1536294 +329793 +2255284 +2134060 +998243 +2034806 +45839 +2377902 +363661 +1109406 +2516881 +1465255 +900559 +1465211 +1465239 +1238797 +2134053 +1465250 +1516575 +2079259 +1516566 +2566842 +1972961 +998216 +900564 +1958322 +1726232 +329794 +1465238 +2636895 +2566845 +1350163 +2060907 +2255209 +518636 +2255295 +2071918 +2680128 +2255279 +2516877 +937948 +2377908 +2377886 +2358025 +1465237 +45837 +1417853 +1911693 +1465150 +858262 +1465233 +1465254 +781560 +858229 +1825846 +1954466 +2079243 +858259 +937936 +2134033 +858249 +141802 +1375227 +1109412 +602218 +1950740 +1536305 +1536300 +2008092 +1465224 +1026514 +1703491 +1465168 +1211162 +329835 +937970 +1175010 +666420 +682718 +1365607 +2255479 +602343 +363667 +602377 +2459666 +602386 +1516683 +2412850 +2134158 +1465428 +2079283 +1175013 +2566863 +602286 +2308625 +2350883 +1408837 +1825857 +602466 +1681680 +141863 +858367 +937984 +234125 +45878 +1844064 +602392 +2511138 +2102713 +234135 +141931 +682733 +2548605 +1516630 +2721146 +602279 +2060954 +1900364 +1516730 +2134163 +338554 +1199165 +45912 +2255467 +1393710 +1375232 +602280 +2443752 +1516657 +2443757 +649957 +2624634 +2255332 +2060928 +602411 +602291 +461221 +2427565 +1618449 +682720 +2060939 +1465422 +1301558 +461217 +141934 +858355 +2060995 +1487421 +998290 +45859 +1900379 +2511110 +2459668 +2291807 +998269 +2255488 +141866 +2255403 +1493461 +204422 +487902 +709470 +1618418 +2255416 +2255414 +141823 +1618475 +45861 +2291804 +2255438 +858313 +389180 +1618411 +204396 +602273 +666412 +2285684 +1465352 +1618472 +1516594 +1141714 +1109416 +141874 +2548599 +2525840 +413688 +998359 +204428 +1123162 +1465412 +141848 +45910 +2134128 +998361 +2255349 +1465376 +1238806 +2291800 +1167042 +1703503 +309826 +2255427 +2255397 +2255447 +389192 +2255351 +1465369 +2134171 +289516 +413689 +1072483 +461177 +2255478 +1813154 +2255348 +1465397 +461208 +709474 +998353 +602316 +2061014 +1900375 +1783276 +1199166 +2034833 +858290 +2255372 +2034819 +858300 +602372 +1726236 +1618417 +1199167 +2255308 +1063165 +2511122 +2511135 +1536326 +2134100 +2255458 +1408836 +1465343 +2548627 +1154024 +1844088 +602395 +1618446 +2102706 +1718580 +1516601 +1709733 +2060950 +2255327 +141895 +329839 +1618410 +141933 +2511112 +1321282 +1783277 +2255365 +1516690 +45883 +2412845 +141908 +1707700 +1516637 +2134090 +2255441 +2255407 +2443751 +602435 +1350169 +602333 +602358 +1051677 +2350887 +141841 +602349 +907273 +602300 +45864 +141831 +1751643 +1465404 +1516723 +602420 +2291813 +309828 +602415 +1718584 +1465372 +45906 +1465313 +2134138 +204399 +1900390 +602404 +2525853 +1751635 +998360 +1123163 +2134131 +1856162 +2308617 +2255390 +1681685 +1900381 +1400853 +858341 +1465360 +373745 +2431772 +45882 +1768642 +2102731 +267104 +2060922 +2367995 +1618461 +709471 +358138 +998308 +141905 +858301 +487913 +141862 +2624635 +1087578 +45894 +602311 +389190 +45885 +1703499 +2350892 +443357 +1199171 +2680137 +1751631 +998273 +1154020 +2079271 +1408843 +602289 +602370 +141852 +1768644 +204409 +858343 +1516696 +858345 +329807 +1844060 +1321287 +1175014 +1199155 +2255463 +858293 +141871 +2511141 +602317 +1199168 +204426 +2427566 +1900354 +1618412 +602449 +1400851 +1825853 +1783283 +998297 +1994687 +45862 +1718570 +434129 +1465317 +2102698 +1465306 +1934817 +1396630 +1825854 +1321290 +389182 +2255345 +2350904 +1465394 +1350167 +2719246 +329855 +2525907 +2423172 +2255629 +1618552 +1726241 +602626 +602529 +1465508 +1465490 +1270667 +2566894 +602596 +2525894 +938035 +2255612 +602576 +1618571 +1465491 +858521 +2255672 +858551 +2134255 +329852 +2566875 +141954 +1618576 +45950 +2134198 +602497 +1618610 +1087580 +602599 +1343203 +858487 +2061043 +998405 +602660 +2255567 +2525867 +141972 +914351 +2034834 +45953 +2566915 +1131949 +2285688 +1703505 +2134214 +858471 +1321319 +602486 +1825863 +2525857 +141979 +1618634 +2134246 +2566926 +2079301 +1934821 +1365617 +649959 +1270663 +2867514 +2255570 +858550 +938011 +649960 +1718618 +389196 +2511148 +1768656 +1321329 +2431774 +1123165 +2443758 +938004 +1618523 +2459698 +858395 +1087582 +1703506 +914352 +1465563 +900574 +858431 +1408858 +2134206 +2566882 +756640 +2708685 +1726240 +1380793 +2698399 +141973 +602565 +1516773 +2134177 +720379 +1465562 +141943 +1516775 +2566960 +1660503 +1516765 +858462 +2838458 +2368007 +1343214 +1618557 +2255608 +204464 +1844111 +1417926 +1516809 +2255613 +389197 +2412860 +141956 +858503 +602533 +2011204 +1321314 +602630 +2255671 +1109419 +1825873 +2134199 +2511155 +1844127 +1465469 +858562 +1058825 +1790931 +858398 +1058837 +141965 +858422 +858424 +1102222 +434147 +767307 +2368021 +2423173 +1726239 +2730682 +2838468 +1465559 +998404 +954475 +2255596 +602526 +1465547 +2624656 +2636917 +937993 +1825891 +858527 +141961 +2358041 +1038250 +1709737 +709510 +938025 +2255565 +1102207 +2459689 +1465569 +1493476 +2102749 +1377730 +2061021 +2851961 +1465546 +1825882 +2525903 +938024 +682746 +2308637 +1618545 +2061046 +1718607 +1968942 +1644400 +602545 +858497 +858401 +2698397 +1487428 +1618614 +1102237 +1703510 +1350175 +1618611 +602627 +1900396 +602538 +858537 +602569 +602585 +1825894 +1487422 +1618517 +1618590 +767299 +2061038 +1390977 +2368018 +2255534 +781567 +1998844 +2255637 +2377951 +518704 +1536350 +1465488 +858461 +2308635 +767303 +1618525 +373806 +1083403 +1465510 +141960 +373801 +602637 +2566945 +1038249 +858485 +2624658 +767301 +1618654 +2134196 +781573 +1270684 +2708689 +1618618 +338558 +602598 +2566972 +1911695 +682758 +1292605 +2134230 +2867547 +1292587 +2255616 +1270674 +2255542 +2134207 +373784 +2255643 +2003064 +2134219 +1768658 +2636915 +998402 +1365618 +1718622 +1465518 +2566928 +2255555 +234149 +2695246 +2680140 +2061028 +2255592 +518714 +1516787 +2636916 +1825874 +1618601 +858544 +1516757 +602552 +2525900 +858387 +2525863 +756641 +309832 +998411 +2867530 +914349 +1465557 +2034845 +2511157 +1102218 +2443763 +602548 +1994688 +1465462 +2061017 +518702 +1058834 +204458 +1083393 +602516 +1536335 +998423 +1618670 +1934824 +858670 +682803 +2721153 +720391 +142104 +709558 +602719 +1751669 +2377978 +2511160 +1238840 +998433 +2061055 +142122 +858603 +602770 +858599 +1536373 +45990 +2566993 +1536384 +666444 +858596 +2255693 +45961 +666447 +1972982 +602686 +142140 +142149 +142054 +338573 +234167 +1321335 +2034850 +858582 +1238852 +2134308 +309843 +329865 +1856191 +682809 +2134257 +1343223 +1238860 +142065 +602824 +1856193 +781590 +1825901 +2317587 +998421 +329862 +142080 +709541 +602832 +1238837 +2624662 +709529 +443370 +858643 +1844138 +1238839 +142101 +709546 +142067 +602699 +602858 +914357 +1618722 +1516830 +518732 +602767 +1238859 +142134 +1709744 +602750 +858682 +2255730 +234173 +2134312 +2255718 +2708690 +858652 +45993 +858649 +858684 +1145627 +2134299 +46003 +602785 +1668978 +79512 +1536359 +1465627 +1465608 +142165 +1718628 +1972978 +363683 +204472 +1238863 +2745499 +602722 +682806 +2255738 +142041 +142117 +730938 +2255697 +730940 +518788 +602674 +2255692 +45992 +938063 +1465615 +1350183 +998429 +2134311 +142001 +2317582 +602742 +602726 +45970 +666442 +2134291 +602781 +79481 +1238870 +602737 +2730684 +234166 +730952 +45987 +1301563 +2350932 +2567001 +998427 +1618710 +45989 +142114 +730951 +2255748 +2721149 +142162 +1900401 +2525978 +358171 +142028 +2291831 +938041 +1726246 +2134288 +1618750 +518758 +602860 +1465613 +2636943 +1751672 +682798 +1856173 +709544 +2636944 +142086 +1292614 +6217 +1751662 +602729 +1618718 +1856176 +2134297 +954482 +1350190 +730948 +730942 +1038282 +338572 +2255751 +142051 +79502 +1417940 +2567013 +518762 +338578 +234163 +338575 +1768661 +1618711 +666435 +602780 +329858 +2566995 +2459713 +2739486 +1856179 +709568 +1856195 +358156 +1321341 +1726244 +1751665 +858621 +1536391 +998415 +1844141 +142124 +1211183 +682796 +730970 +2624670 +1709762 +2459732 +1646574 +1483107 +858715 +1465668 +1751677 +142171 +443383 +1972995 +1417967 +2525981 +142167 +1465658 +1493498 +2526036 +1709772 +6247 +1618794 +1493513 +2255764 +2636956 +2134421 +2034866 +1483115 +2459720 +2378046 +1417946 +954513 +2636972 +518794 +6266 +1536441 +46008 +2291861 +1900417 +2255758 +1141736 +2134350 +781595 +1109426 +373864 +2378034 +682827 +1911708 +1211191 +2317603 +2061087 +329889 +518827 +6260 +2526021 +2378041 +46032 +998463 +1958372 +1709759 +443382 +1536400 +2526016 +1026523 +1958384 +363724 +1958375 +2134453 +2134436 +1417952 +443375 +781624 +329900 +2708704 +2350941 +751660 +363725 +2636958 +858740 +2255769 +781614 +954492 +383996 +998475 +518809 +204476 +2526011 +329897 +1911705 +1026520 +954505 +781601 +6267 +858746 +2021418 +1408865 +142168 +2567138 +1998859 +2459735 +858755 +1270711 +518838 +2416329 +1536418 +1669004 +2567128 +2134346 +1726268 +1856218 +2636968 +1940874 +373859 +2079327 +1393712 +900589 +2567140 +2567090 +363718 +1958382 +858763 +2291863 +518799 +1958380 +954536 +1958385 +2291839 +518849 +46012 +2134438 +1726277 +1709767 +1350201 +720430 +2061081 +1718646 +1911702 +1350218 +914374 +1380807 +2034871 +2291860 +2567031 +1772644 +858749 +1483122 +434171 +2291858 +2459719 +363728 +1536443 +2291869 +2317622 +2317637 +333053 +1321363 +2134420 +1618779 +2317607 +2567114 +2567101 +1058839 +2526027 +2526012 +1301565 +1483100 +998473 +2377990 +2526013 +2134372 +443376 +2358055 +373856 +2079324 +858700 +426602 +2079353 +2526020 +2134376 +1825927 +1536434 +79521 +602892 +954515 +914388 +1292618 +518835 +2358060 +1483113 +1321365 +2567120 +2698406 +2134355 +900586 +858729 +858717 +2034883 +2511166 +1813175 +954542 +2567130 +1813178 +518792 +6262 +443384 +1365628 +2134408 +2567028 +1751683 +602878 +2134338 +2708696 +1483116 +2079343 +1718638 +518839 +2079362 +2134334 +858764 +2134363 +1350200 +1199193 +1238892 +6230 +858735 +998460 +1404501 +2680146 +2079338 +756649 +6243 +2548654 +215565 +1483110 +1321358 +756645 +1090472 +1321390 +2079370 +2867654 +79550 +954582 +2134486 +1270725 +2867559 +602906 +2867656 +1958390 +401762 +2134523 +2021421 +2134475 +2134529 +781657 +2459745 +2624673 +518908 +900609 +650005 +900598 +954591 +756659 +1536496 +2511173 +2291876 +900611 +2867631 +1998866 +748721 +2867648 +1958397 +2134474 +1973006 +2526071 +1321403 +1900427 +1321400 +2867616 +1053891 +748714 +2079381 +914399 +1238895 +333063 +1321379 +900610 +2526061 +2378068 +2567166 +2567160 +1026532 +2636978 +2034904 +2778314 +2134502 +363757 +1536481 +2778312 +1950747 +518910 +858778 +2034914 +2838477 +2567153 +2867646 +649979 +2698412 +2867629 +443395 +954560 +2079389 +363753 +363730 +2134482 +2378054 +2567176 +2867630 +1911722 +2867597 +1646578 +1270737 +443390 +2636977 +954576 +2291889 +1270736 +2079383 +2867569 +781643 +1825938 +2378060 +518860 +2134456 +1493530 +2034908 +142195 +2134515 +1911724 +2378076 +1813182 +900605 +2134542 +461251 +1973001 +1669016 +1536470 +2459747 +954557 +1536486 +518872 +2134561 +1321384 +1380821 +1321443 +2637004 +1493543 +709580 +2317652 +1090490 +1167055 +2134676 +2061093 +2134738 +1856259 +2291938 +1365631 +954637 +1145651 +914411 +1321453 +2838485 +1026533 +1418017 +2567198 +1825968 +2423203 +751665 +338584 +2459771 +2526121 +720433 +1825985 +682924 +2378091 +518914 +751672 +1400864 +602940 +2511174 +2317664 +2378109 +2567222 +954604 +1751687 +1350244 +1709781 +682927 +1418062 +1783294 +2636989 +2684490 +142216 +518940 +781691 +1718651 +1790965 +2526104 +858782 +2526099 +1709791 +1536528 +2134705 +998497 +1321444 +1660536 +1536505 +938100 +2068293 +1825972 +1825951 +384004 +1350249 +1516883 +2511176 +1211230 +2851984 +142208 +998495 +2431799 +1825984 +518970 +1825941 +1911742 +2291928 +1211213 +602948 +900620 +518972 +1790980 +858841 +1536556 +79564 +2526131 +1418034 +2317646 +79566 +1726302 +2134678 +1380832 +2567193 +1772661 +2317644 +2459811 +1321457 +395048 +2459788 +1211222 +1465724 +2134636 +346569 +373878 +735273 +1536501 +2511178 +1418057 +1465732 +1536512 +1465684 +2698422 +954645 +2867696 +1321438 +2526148 +1911739 +2867662 +2867741 +2851992 +1856270 +1418027 +2867722 +2567231 +1911734 +858810 +2526150 +46041 +1063173 +781690 +1660534 +1493549 +858851 +1493550 +1350250 +1825950 +602949 +2733693 +735274 +1483130 +363774 +2378131 +2526120 +2255773 +1998889 +2636991 +1536540 +954594 +267133 +682866 +2459809 +751684 +2008104 +2459756 +401766 +682864 +373877 +1483129 +333067 +1211232 +2378130 +2567210 +1660532 +1404502 +2867719 +2637001 +2867686 +998506 +2838486 +1618827 +1465729 +1669027 +1536542 +2851974 +1270762 +2730692 +1465739 +2317642 +1180783 +2079423 +1465687 +602922 +1646580 +998515 +142217 +1270760 +1102246 +2134724 +1109432 +2637008 +1465686 +602942 +2358076 +938095 +2867702 +2134644 +1709787 +267127 +1536548 +487928 +2134749 +2011222 +142207 +363759 +384007 +1669035 +2255786 +443409 +751667 +46038 +2680148 +998480 +954619 +2279490 +2255801 +1418013 +1856265 +2021427 +2102785 +998530 +333070 +2459762 +751677 +954615 +1618809 +998507 +1090491 +858806 +954595 +2134704 +751686 +900619 +2867684 +1465674 +2291893 +2526138 +2378102 +2291919 +2867707 +2134729 +215573 +1270758 +2291924 +2134726 +1516889 +2291907 +2423199 +1516881 +2279492 +1709803 +1998893 +2378141 +2567311 +1536592 +1958466 +2459853 +682953 +2567298 +2526210 +1109460 +1536583 +2459848 +1958435 +2459860 +2079446 +1669042 +1109458 +1090495 +443425 +2358094 +1321475 +2378145 +2358099 +914420 +2567294 +1321485 +858888 +2378152 +1418090 +2526205 +2134832 +2567333 +1483139 +1825998 +1321488 +1726309 +1536574 +384015 +1996297 +2134815 +900630 +191700 +46052 +2526209 +142219 +2459874 +1321476 +1856298 +2291948 +1350254 +1856283 +1418082 +2567316 +1856307 +1493574 +1669049 +2730699 +2358097 +2852029 +858889 +1856285 +215576 +2291949 +142225 +2867760 +2852014 +682964 +1270798 +2526189 +781723 +2061113 +1958451 +2567273 +2745513 +1380844 +2708726 +401768 +2034978 +2079451 +2459851 +2745510 +2852032 +1418073 +2079441 +2567260 +1063219 +1940883 +2852041 +443429 +1292623 +2014981 +2134809 +1958460 +2079445 +1053896 +2852063 +6286 +2852000 +1465768 +1825991 +720446 +2291944 +2526181 +1973027 +1350266 +1053899 +1973023 +2567340 +2079459 +2079435 +1669041 +1465765 +1123175 +2730703 +2378149 +2637032 +1947838 +914424 +1958463 +2459880 +2852039 +1536580 +309875 +756666 +2079457 +1321478 +2079433 +2079447 +1321484 +2526164 +1301582 +682972 +2852038 +2291950 +682959 +2567322 +2459819 +2079469 +2567274 +1493570 +2637039 +2526192 +363791 +384012 +1772679 +1380841 +1493571 +1660553 +2378138 +2358106 +2567390 +2358109 +519003 +2567403 +2134901 +1350274 +914432 +2317675 +2526246 +1418107 +2567392 +1688076 +2134881 +519011 +1063225 +2079507 +2291974 +2708741 +79615 +1790994 +1826001 +1350286 +2567377 +1418114 +2567352 +1644407 +1688086 +1826009 +1321506 +2134876 +215593 +1145668 +1350270 +2079500 +2317686 +1321523 +2134890 +519030 +1050092 +79611 +2317684 +2134903 +1350280 +720461 +1660562 +1911748 +1418097 +2526223 +2567408 +2134904 +2134862 +1377739 +650020 +781726 +1536625 +2567366 +2134908 +650023 +2134906 +2825465 +2825463 +1350301 +720457 +2721167 +2317681 +1321519 +1211246 +1418106 +1350283 +1180809 +2134898 +519029 +2431837 +2291973 +2034992 +1393737 +1718661 +487947 +2255890 +2567460 +1199213 +2721168 +2135014 +1516946 +215605 +309886 +2511194 +79636 +1790997 +1958495 +289529 +858965 +142285 +1516932 +1751702 +1321539 +2255885 +79634 +1536660 +1703549 +2134997 +443447 +338606 +142247 +2368056 +720462 +1658644 +1408873 +1958485 +1063232 +267169 +602997 +234222 +914441 +333083 +603059 +1072514 +1618905 +2292006 +46078 +998551 +142316 +602982 +2134989 +1465853 +519069 +6324 +1465821 +2567510 +2431838 +2358125 +1718677 +1856331 +1768674 +1856332 +2511200 +6316 +204507 +858948 +2548676 +1516941 +1973036 +461293 +998600 +2368051 +1493583 +683011 +1238923 +46082 +1536648 +858957 +1826029 +1681703 +1536664 +461278 +1465791 +338594 +2567422 +1958494 +1536640 +434200 +2079520 +2358115 +1238926 +1973040 +2079533 +2255841 +204511 +142289 +46072 +2292021 +2548674 +603026 +1270820 +1516942 +2427592 +338601 +998544 +142293 +603002 +1516955 +2526266 +346580 +1465829 +329921 +267136 +2134961 +2459903 +2368043 +2134987 +1270831 +2567503 +204500 +267144 +781742 +1934842 +858992 +1768671 +2624695 +234232 +683006 +720469 +1180820 +2511182 +2548678 +2135042 +487948 +2255868 +395051 +434206 +954689 +1465860 +46085 +46097 +329922 +730977 +1751701 +1703550 +2134936 +858964 +2624677 +329915 +204494 +858936 +2738165 +1790998 +461267 +900640 +1516940 +2567436 +2134992 +1516917 +519072 +2350959 +1199208 +1536649 +2134938 +373883 +2427589 +443446 +998546 +461329 +434216 +1790995 +858921 +2350956 +434215 +1465830 +2079538 +2378188 +46103 +2423231 +338608 +1083406 +2567455 +142255 +2378192 +858986 +2079544 +1718664 +395053 +998583 +358191 +204498 +2134990 +2350962 +2511202 +998594 +1618869 +2350953 +998543 +2624699 +2567488 +2255817 +2079552 +46071 +2135037 +998561 +2317696 +603030 +1167071 +781743 +309890 +2079535 +267162 +1618843 +234248 +730973 +2567442 +1618850 +2102799 +1516930 +267151 +1058848 +267139 +2738166 +1516967 +46077 +1167067 +756670 +2680149 +2431846 +234254 +1826033 +781741 +1141741 +2567508 +2526262 +603027 +461308 +215602 +1154045 +1516908 +998597 +2567471 +1238932 +2281577 +434222 +1493587 +2511199 +767360 +858916 +1726320 +1618908 +2378187 +461302 +1389802 +998572 +748730 +329920 +603019 +2526283 +2134973 +1536656 +234241 +1292629 +2526259 +1493590 +2548665 +709590 +2698434 +1645245 +858974 +373906 +2567509 +1826031 +2378190 +1385582 +1681696 +1199216 +142249 +1703542 +2134934 +1123177 +1159196 +2134988 +2255830 +2134979 +2459915 +1688094 +142288 +1516964 +1390978 +954674 +6317 +603034 +1270825 +389210 +683012 +1493621 +1380870 +79669 +709604 +519113 +2637066 +2567522 +333094 +2526305 +1053906 +2079565 +2459946 +2009801 +2135069 +914451 +395055 +2035023 +2079557 +2317711 +1418153 +426629 +2431863 +2135091 +1772693 +1826049 +1856334 +2135101 +1669078 +1180829 +2684500 +2567565 +1418138 +2292062 +519103 +859001 +1536681 +1772710 +1145683 +1211258 +2698441 +859032 +1465863 +1393753 +2135149 +1321550 +2135117 +1791009 +859043 +2292040 +1536700 +954701 +2292044 +2526313 +1493625 +2102811 +2459969 +79655 +2526316 +709602 +2684497 +1145677 +2431887 +2135059 +859017 +1350305 +2708769 +2567554 +2009798 +683066 +2431862 +2378215 +1709819 +2255926 +2071942 +2317700 +373916 +1618965 +519106 +2423240 +519110 +2745542 +1418149 +2009794 +2009800 +1998913 +998613 +1516986 +2035028 +2459938 +2567595 +1536706 +1772703 +2135111 +859045 +781796 +2292064 +1418139 +2431889 +2135152 +2423250 +79657 +859000 +938121 +859033 +859054 +2317716 +2721170 +1418142 +2431876 +1517006 +1517010 +2135078 +2135116 +1493608 +954708 +2567531 +1199224 +1772697 +2135107 +1145673 +1536680 +395063 +333085 +2567558 +395066 +2292059 +79660 +2459922 +1058852 +2431878 +2567586 +2745527 +859036 +1688112 +1856345 +1380862 +751699 +2431854 +1350304 +363805 +1380858 +46110 +2698442 +1618949 +2431881 +1380872 +2431869 +938126 +2292057 +2068298 +2281586 +1211257 +426638 +2526310 +1660574 +859034 +338616 +333092 +79663 +2567570 +1493611 +1618940 +426630 +1536683 +650040 +2135060 +1772691 +2423247 +2135115 +683047 +1380866 +2459950 +2079563 +519139 +2281583 +683058 +519138 +2317735 +1516980 +2423254 +2378210 +1826046 +2745534 +1669080 +1958497 +859013 +2061144 +519115 +2378216 +2567541 +2292033 +2079568 +2317727 +998611 +1618957 +2292097 +603101 +2135177 +2567602 +1321592 +2526346 +2567631 +267191 +2567635 +1536748 +1826063 +1404512 +2378232 +1058853 +1393756 +2035040 +1238944 +2730729 +363821 +1726342 +2708773 +2526323 +519156 +1301596 +2459973 +2567659 +1483180 +1090513 +2637074 +358197 +709609 +767369 +736457 +730978 +938134 +1493644 +2423257 +2567678 +2708775 +1145692 +2459974 +1211275 +2526347 +859073 +2637088 +1619000 +2368065 +859063 +2135159 +1238948 +1180859 +2255937 +2511208 +914463 +1856370 +767372 +1465876 +1751708 +1856372 +2567623 +1826067 +1493635 +1465899 +2423259 +1141753 +1984915 +2637084 +2079600 +2135174 +2548682 +2255938 +2292080 +603082 +519163 +683083 +2526352 +2423260 +46115 +2079599 +2567651 +900654 +1211284 +2135183 +2567614 +519162 +1493641 +2526353 +1536745 +1669082 +1199234 +1350321 +2567636 +2567618 +2350976 +2358142 +2061148 +1826081 +1517026 +46116 +1856364 +2567666 +1238957 +2255949 +204530 +1465904 +1380882 +859090 +603096 +2431891 +2526319 +373922 +215617 +1483179 +666466 +2751923 +1180849 +1856371 +767371 +603116 +2061154 +6333 +267194 +1958507 +1618999 +900653 +2135205 +1517028 +2135184 +2317769 +46113 +603090 +2698459 +2567654 +2567642 +1856366 +1618975 +267193 +2068300 +2255935 +1940892 +2698466 +1618987 +1619005 +309894 +1211270 +1826090 +2317765 +2567660 +1270850 +142352 +767374 +603085 +2378240 +1377751 +6334 +2358139 +1211279 +859078 +2526343 +2423264 +603127 +2021445 +954740 +2255993 +720498 +720520 +666478 +2135436 +1154055 +1844210 +1465968 +748758 +2292100 +1517050 +2135298 +1418170 +363861 +2460025 +1934853 +1826115 +720478 +2135297 +333105 +2637100 +859119 +1619078 +2061159 +748775 +2350986 +2079610 +461348 +2135344 +519187 +1536831 +2317781 +2135383 +501299 +501259 +2378272 +603193 +1813226 +2079629 +2255968 +1703571 +1619056 +1619037 +683105 +1821611 +2011260 +1783307 +2378259 +1350328 +1063282 +914475 +79701 +1238970 +2135478 +1536787 +519291 +1109489 +938159 +2378292 +1321643 +1418222 +1385587 +1726349 +1375261 +519224 +2637125 +954729 +2567690 +683119 +683117 +2135350 +1493660 +1238986 +2460021 +2567760 +2135351 +1038307 +914469 +501278 +2014986 +2567721 +1517045 +329953 +2460005 +2567765 +1418203 +2135345 +748773 +1321621 +1783308 +1292643 +1199244 +2567710 +519330 +2378298 +603163 +142383 +2135454 +2567717 +683101 +373965 +1465937 +683161 +443473 +1211294 +338660 +2255957 +374016 +2745551 +720485 +1465919 +1380886 +1856427 +859143 +1465956 +1400874 +363869 +709628 +781853 +2035048 +1211296 +1400881 +2135296 +603153 +2526394 +1619079 +938141 +2368071 +1536834 +1418221 +519309 +998664 +519321 +519254 +1911766 +1102263 +2079633 +859141 +914476 +859139 +954725 +1261449 +2567701 +2079627 +1718689 +2102823 +1660596 +998646 +2079606 +2135455 +2412904 +748755 +519207 +443492 +1418225 +1369684 +1063271 +998665 +781852 +1900464 +421949 +2423265 +2135226 +2135441 +2135385 +2637124 +2378275 +1102264 +234300 +46124 +1826111 +1418193 +2378261 +1826109 +421937 +2378271 +683218 +1418173 +2135311 +1619051 +519184 +501274 +329956 +1321639 +338630 +2350985 +2460019 +2135326 +1856431 +2135306 +501282 +2135375 +2135324 +1669098 +1791021 +2567768 +2567777 +2460007 +1536839 +2292102 +519284 +2135332 +2526386 +1167074 +1813232 +519262 +2135271 +501264 +603191 +2378286 +2378307 +363849 +1844221 +954724 +519297 +1465909 +1180875 +2135413 +781838 +373957 +998667 +2135255 +363837 +2431900 +2624708 +2368069 +603123 +1343244 +2378302 +519311 +683203 +2443793 +720492 +683143 +1826105 +720505 +1465913 +2412899 +1856385 +329950 +2135301 +720524 +501266 +2135447 +2511223 +781829 +401788 +46125 +2526375 +1109500 +1321642 +309901 +1199235 +2135234 +2511225 +461346 +2637119 +1465957 +2135439 +709617 +2526399 +2637112 +1321634 +2378265 +461345 +2378287 +1493658 +2511218 +1536766 +2256027 +2135408 +683162 +1619022 +2721177 +2035051 +2135400 +79714 +683189 +720514 +2378317 +1211297 +720497 +2135329 +2255999 +1343243 +1726350 +443475 +421960 +2135429 +683207 +603156 +501258 +2567805 +859121 +363856 +1688121 +859097 +2708785 +519257 +1238994 +519222 +2292123 +2135470 +2135228 +1900456 +1517054 +1418236 +2256021 +2255977 +998643 +1984917 +1238960 +1123217 +2135331 +2526391 +234304 +998653 +501255 +338641 +900667 +1768681 +709610 +2317774 +519248 +79721 +2567736 +2135230 +461355 +1536792 +603202 +267197 +859168 +2281602 +142407 +1826138 +234312 +374067 +2256032 +267210 +1404519 +2256078 +1261454 +2292139 +998705 +2368075 +6370 +1844227 +603222 +142439 +1517078 +374033 +2567823 +267229 +234311 +1681709 +2516903 +683241 +346585 +2431913 +1397761 +2624721 +2567837 +914484 +374037 +998725 +1826136 +2351001 +204577 +267215 +2011269 +374080 +603209 +1783318 +1385591 +2431933 +2135503 +2735187 +1718701 +1768712 +346583 +267257 +859175 +1619103 +1844269 +2351000 +267221 +374026 +1958520 +2567831 +2548710 +914481 +2431920 +46129 +2460065 +1517060 +1751728 +900672 +2135512 +1072540 +650075 +267256 +342952 +191749 +234330 +46193 +1261457 +1709840 +998698 +998689 +46176 +2431925 +1718710 +346584 +79727 +374077 +1844265 +1418242 +142416 +859157 +1768684 +998704 +142409 +998718 +374052 +1664826 +1619084 +2567858 +46136 +234320 +709642 +142422 +2135507 +1465994 +1998934 +374069 +346592 +2526436 +1517069 +215631 +2526413 +1783323 +1844263 +730993 +346586 +142455 +1826149 +1517077 +2567863 +142417 +603220 +234319 +1053911 +914483 +1768693 +1343247 +2135498 +2518395 +859207 +1844230 +204552 +2516898 +374032 +46140 +2567869 +859191 +2637134 +781872 +709649 +204545 +2256049 +142431 +289539 +1517090 +859199 +2026651 +1517073 +2431928 +1844237 +1102275 +2460045 +2135520 +2526420 +1465971 +267293 +938168 +204541 +2281601 +1619093 +1123220 +2079645 +859170 +2135517 +1768702 +859227 +1844248 +46141 +2135480 +142424 +1844259 +267263 +1465991 +709637 +1791068 +1418272 +1934859 +1380898 +1487446 +1536861 +1517095 +2567897 +2378330 +2358164 +1466007 +2511227 +142457 +142465 +1159213 +2567935 +859242 +603247 +1493678 +2431942 +2526472 +781919 +1669128 +2135541 +2431951 +418918 +954807 +79775 +1703574 +1404523 +79739 +1973081 +2567937 +1791030 +720530 +683265 +2135568 +2637141 +735292 +2068316 +2068308 +191767 +2698477 +1844277 +2567921 +1321680 +79776 +2378366 +1764571 +998733 +1998942 +79763 +1856462 +2102837 +2068311 +1261475 +2135596 +914514 +191760 +1321666 +2135573 +1998943 +2637137 +2256090 +363881 +333113 +1646595 +2431939 +79759 +2035073 +2567896 +2742474 +2431948 +954809 +1483194 +900684 +519412 +1026545 +1900485 +2135593 +2567873 +683277 +998736 +2378353 +1493692 +900679 +1950757 +519389 +1180885 +1791051 +519386 +2378370 +914509 +2135569 +1911794 +1688142 +1350362 +2567931 +2378327 +1940899 +267320 +1958532 +1911792 +1321679 +142473 +191763 +1669117 +2135539 +1856460 +2068320 +683283 +2079662 +2567882 +2135591 +2567939 +1321685 +421971 +938181 +1321695 +954797 +519387 +1709844 +1709854 +191774 +142459 +79749 +1350368 +900686 +1826163 +1239014 +1688129 +1053913 +1211323 +191771 +2292186 +998732 +2079658 +1517098 +1418294 +859240 +1813245 +1270882 +1404525 +1321690 +2368081 +954777 +2745556 +2004164 +2135530 +1772752 +1856472 +2079659 +1493681 +1998939 +2292160 +1493704 +1856453 +2292179 +267322 +1145723 +1764569 +1996316 +998727 +1751731 +267304 +1856464 +1102278 +1418285 +2135576 +2698473 +735288 +998726 +2014997 +2135543 +1826162 +267307 +998730 +1418271 +1726373 +954842 +2368082 +2548724 +1493714 +1418333 +1856488 +1791073 +720536 +2317846 +1536870 +1900488 +2825494 +998753 +900695 +2256099 +142500 +1764601 +1669178 +2567956 +767380 +1536867 +519428 +1709861 +2432000 +2011290 +781945 +1660620 +998744 +1418316 +859260 +1404528 +2567973 +2526485 +2742503 +1321702 +2135618 +1180902 +2431988 +1669175 +2742490 +1350377 +1145728 +1998953 +781929 +2135663 +1392745 +1772766 +2292212 +683314 +1090539 +1772771 +2567950 +781931 +1466026 +2431986 +2035095 +2825468 +46204 +1669154 +954827 +1660618 +1619115 +683349 +2061184 +333132 +954834 +1466031 +859266 +683353 +2135634 +683307 +1669170 +900701 +215644 +2317852 +1536912 +142490 +2432005 +142502 +1392742 +1772768 +2292222 +907309 +2460114 +1761482 +1321723 +720534 +1772784 +2135632 +2526495 +2079675 +1350389 +519446 +2742495 +2135617 +2135650 +2431977 +2256097 +2548726 +1619116 +2015004 +2511230 +1350386 +1856479 +2317842 +998748 +1688159 +1493709 +1132770 +2317850 +2431985 +1536909 +2432017 +2526490 +1154067 +1466017 +683329 +2460087 +1718715 +1856483 +1380900 +2135670 +333139 +1669139 +1826182 +1764594 +938198 +683343 +2526480 +1418322 +1619128 +683322 +1619112 +519450 +1791080 +519434 +954822 +683352 +1418321 +2460119 +1764598 +1856482 +1900486 +142501 +1973090 +2135629 +519427 +1826179 +519436 +2511231 +683326 +2751934 +1772798 +2567964 +2317859 +900702 +1536888 +1397764 +2825502 +2460113 +954825 +1132775 +859273 +1180899 +756684 +79795 +2256095 +2378378 +2526486 +1350374 +2274511 +998749 +998784 +859293 +1856514 +1826216 +1536918 +1619140 +1109502 +2256167 +1390979 +683395 +683416 +1856503 +1826190 +1819464 +781994 +1844287 +748776 +519472 +443499 +666485 +2135700 +2035111 +2015012 +1390980 +46210 +1681727 +2079678 +1466042 +709663 +1669189 +1072567 +683361 +2378386 +1856530 +1083418 +2317870 +401801 +781970 +142583 +2460141 +234363 +2292235 +938211 +1619144 +1856518 +1619131 +666486 +731013 +1751739 +1669192 +142537 +1709866 +683377 +358212 +859336 +737376 +1764604 +1517126 +2742516 +709662 +46217 +1856522 +998766 +1517140 +1791093 +1826197 +1083416 +1167080 +2351023 +739694 +401797 +1211347 +1669191 +204591 +79820 +1681723 +907311 +2735202 +234361 +1072550 +1123229 +2292241 +79845 +2135713 +2378390 +683400 +954859 +859305 +683374 +1418344 +2135723 +191796 +1619172 +142531 +998795 +1321732 +1038316 +142566 +519493 +1466038 +1517146 +2256111 +1826204 +1726389 +2256115 +731009 +1619160 +1418353 +401802 +859340 +79829 +519507 +1660634 +683411 +2135690 +79810 +767385 +2135718 +1772808 +1083420 +142553 +1718722 +1418351 +1083419 +1321728 +2708792 +2735204 +142565 +2135732 +79840 +2728033 +2624735 +215666 +748777 +2135728 +142559 +79811 +2378398 +683366 +1856507 +781995 +142550 +1998955 +2460147 +2351019 +2135708 +756696 +2135726 +1536944 +1517145 +603283 +2135715 +443498 +142547 +1619147 +79824 +1517138 +2256123 +1619154 +1123228 +2308691 +998771 +2135716 +603300 +204598 +683360 +781986 +720546 +46221 +683362 +1826200 +142548 +2568013 +2567981 +2526502 +859307 +1493730 +2135750 +2011292 +683412 +1466050 +2735209 +683381 +2378394 +1681737 +938225 +1911805 +914579 +1350408 +2256198 +603339 +2035122 +1856562 +1536974 +1418372 +1123244 +374096 +1123245 +519562 +1726399 +358215 +1856579 +1709876 +79860 +519564 +1321758 +1619202 +1180904 +683450 +142620 +1998962 +1321738 +1934865 +1856576 +2548748 +1987817 +142641 +142612 +1301618 +1998970 +1718738 +519599 +2745566 +683472 +683430 +954874 +900712 +603344 +782006 +683442 +2135824 +2568023 +1321762 +1517172 +938223 +234369 +2102856 +2838490 +603313 +1239034 +519542 +142636 +2135840 +1466074 +1380913 +782016 +2135797 +859379 +2035115 +1844295 +1973106 +2061216 +79870 +1856563 +603337 +1856574 +2460164 +1856536 +519595 +2035119 +1856554 +683441 +309909 +1321763 +859356 +914584 +2838502 +2061203 +1772822 +2317889 +79864 +2292256 +2568026 +2015041 +519556 +1709870 +938227 +1826232 +1466079 +709701 +2526548 +2358196 +2274513 +1270910 +1321745 +1900506 +907313 +1493739 +1900502 +1856571 +2135771 +782022 +2637157 +998822 +2292264 +2358188 +1058878 +2135783 +1764611 +1911804 +1791101 +2011310 +731020 +1994706 +2135842 +1321765 +2135769 +1826229 +2135822 +683473 +683459 +2079698 +2256213 +683429 +2378416 +267327 +2281622 +374099 +2019880 +2568021 +2568044 +1408899 +1536982 +2568030 +1418381 +519551 +1418367 +6432 +1487456 +1536985 +914576 +1026547 +683423 +2256179 +2135805 +1466083 +709692 +519567 +1619198 +1900499 +1418377 +6423 +1102294 +2079709 +2035117 +2256207 +1900505 +46243 +2135826 +1536950 +709698 +2135807 +1083437 +859391 +767390 +2015026 +2061209 +683471 +2102868 +1826226 +2412917 +859397 +1998967 +603519 +2568096 +2256283 +1072575 +2368096 +603549 +1270928 +603468 +519620 +1826255 +1072578 +2135896 +1350455 +859414 +2511238 +191822 +2721184 +603512 +2256262 +2256245 +1726406 +1517184 +1380935 +1996338 +603496 +1973122 +389222 +1466142 +1350417 +2079732 +603359 +2135942 +519632 +1954493 +859405 +142687 +666539 +2004171 +1718784 +1718768 +1819472 +267351 +2852096 +2852138 +1292651 +519718 +267353 +1343268 +2735216 +603514 +142655 +519634 +1159232 +1709891 +954884 +2624742 +2867796 +683482 +2135870 +1826256 +2011321 +2548764 +1180930 +2852083 +1321807 +603373 +1619249 +1681739 +1321800 +2317906 +2637180 +603571 +1180926 +1517206 +2256239 +389224 +1487466 +519665 +46263 +1718751 +1681743 +735295 +1321789 +2015043 +1321796 +2852144 +2708818 +519704 +1418404 +998844 +859442 +683506 +731038 +1517208 +1619262 +1987821 +2568100 +142753 +666524 +1536991 +731051 +1819468 +1466097 +603408 +2637196 +650089 +142690 +234392 +79884 +859467 +735298 +519685 +2698485 +1517199 +1709887 +519698 +1292649 +2135853 +1321821 +338676 +2708813 +142715 +2135915 +2568077 +2308714 +142735 +1123248 +1123266 +519647 +46257 +938264 +2568120 +215691 +2730747 +519646 +1038323 +2568131 +1718777 +142664 +298052 +859485 +2852084 +603433 +2568133 +666523 +2079736 +603436 +2308717 +603445 +234381 +998837 +2568118 +1517198 +2548758 +683505 +1102302 +683521 +46256 +234388 +1180924 +666526 +519700 +767397 +1973145 +683484 +683530 +1270926 +519664 +2102893 +2568065 +1038337 +2135893 +1844307 +1958551 +603358 +1619278 +2061238 +519703 +46258 +2358205 +2061240 +1310906 +603528 +1954491 +650090 +1136094 +142736 +2135864 +1826244 +2852086 +2256240 +519725 +1619279 +603482 +519709 +1751763 +1350430 +859402 +603568 +756705 +1950772 +1856594 +954881 +1350450 +2637191 +2135952 +2256330 +2852071 +731055 +2432065 +519734 +2378443 +2368098 +1386883 +267330 +142679 +2624744 +1380940 +267336 +1958552 +1063310 +2637172 +2068325 +859516 +1998989 +519616 +519715 +1998973 +1102304 +1718789 +2852105 +859472 +666521 +954886 +2568071 +2751945 +2358200 +2102900 +709710 +1900517 +2568091 +603562 +1466112 +142750 +1703587 +1102310 +2721186 +1493767 +1973150 +2852106 +603507 +603443 +1751760 +475944 +1310896 +1718771 +1726412 +1408902 +2852085 +603548 +2751946 +2135944 +782042 +1466148 +603367 +2460192 +2460198 +603492 +2102897 +267348 +782058 +1718767 +666534 +2867779 +1159235 +267339 +603384 +1466132 +1958545 +1466151 +914589 +603419 +1321776 +2292266 +1038330 +2568105 +142686 +142651 +2256252 +1301637 +1466161 +2867805 +603480 +603410 +46259 +2742527 +2256294 +519643 +1996343 +603515 +1994707 +1350478 +720558 +1726407 +142752 +1301625 +666555 +603388 +2637168 +603579 +1856597 +1537012 +1726416 +475942 +1537027 +859480 +1718750 +1466126 +519653 +859434 +1772840 +1483197 +603421 +1856605 +1826254 +2102882 +1751757 +1418395 +954896 +1998999 +2526597 +2358214 +859540 +859530 +1211403 +79900 +1038342 +1791109 +1537033 +1090569 +1270979 +384043 +1688187 +1826286 +2274522 +782091 +1669217 +782095 +79917 +683571 +2277911 +142774 +1856634 +1418440 +2136016 +1350502 +1270956 +2008126 +782097 +1994716 +907317 +2136018 +2378450 +519765 +1726421 +309930 +1239060 +1856616 +1350513 +519740 +2135992 +2526602 +2035167 +519795 +2136044 +2136017 +1688185 +2004175 +1321841 +1321836 +1418416 +519772 +519801 +1764619 +2136020 +2035157 +1321845 +1646605 +1934876 +2526603 +1321877 +1934873 +142770 +954906 +1270970 +1537075 +1343270 +2135990 +720578 +2008122 +2568212 +519807 +2460215 +731058 +2136035 +519813 +720581 +1726434 +1466184 +2637214 +666557 +1321874 +2136028 +1301667 +309918 +1911828 +2136060 +683572 +954912 +1102320 +2637206 +1844312 +782089 +298055 +1911821 +1709907 +1301654 +501309 +1537064 +720585 +475948 +79919 +519739 +248708 +2637219 +2568149 +2136010 +1239057 +519790 +2378459 +731063 +384047 +519784 +2035158 +2378467 +1369705 +342957 +900717 +1726447 +782087 +1090563 +1826266 +2568183 +782108 +1493770 +2317924 +1856632 +519759 +650114 +2378475 +720576 +1109519 +1655504 +384042 +1211390 +2035176 +782101 +142776 +79896 +1038345 +1418425 +1856653 +2378501 +46320 +309934 +405306 +309946 +2136172 +1321882 +1619347 +603669 +1760489 +603762 +2568272 +603728 +1102329 +1123282 +859570 +1619351 +142869 +142796 +603720 +1123292 +1239072 +1493775 +1466205 +2568224 +907320 +1038365 +683610 +2721195 +938307 +859573 +603696 +753216 +487987 +1537083 +1211408 +374132 +1038371 +2136125 +1751782 +2432068 +519837 +374154 +603672 +938300 +859598 +389234 +234411 +2079775 +289573 +79927 +998889 +487978 +1517225 +938296 +142967 +2317932 +603692 +142856 +1261507 +1760490 +1261519 +142895 +142783 +2568250 +2256405 +2028368 +2735222 +519839 +709779 +1053928 +1619362 +1844316 +1466217 +2136064 +859594 +46298 +900720 +1123287 +2378487 +1123291 +461406 +1466207 +1619404 +2061255 +1726474 +389238 +914613 +603700 +1751781 +46318 +1726488 +1703618 +1418457 +142840 +603746 +2568285 +1703606 +2136154 +2568257 +1239074 +859554 +1537140 +709765 +603655 +519824 +363908 +1718806 +938297 +1211409 +519847 +859593 +1402033 +1261500 +1619310 +1619325 +142924 +1365651 +2378497 +46268 +603648 +1466212 +2526611 +1619386 +603709 +2351059 +1537106 +374151 +1167090 +683586 +859567 +603613 +1660645 +859609 +603615 +46294 +234412 +603703 +1726475 +2637250 +1703600 +603666 +603675 +1350528 +2751953 +1646609 +2624753 +2637253 +998918 +2102908 +731067 +46301 +1038373 +1619352 +1856646 +2256389 +1619312 +938299 +938284 +374138 +2317940 +603705 +461404 +2526616 +374128 +46329 +142823 +998917 +1038357 +938279 +1660644 +1973165 +1718801 +998904 +401810 +767400 +2568221 +142964 +603651 +1619368 +374135 +2136127 +234422 +1652743 +938290 +487994 +191834 +142900 +1703611 +1655505 +938273 +1167086 +1466195 +1239077 +603716 +142913 +1261532 +1102328 +709774 +2317937 +2378510 +1726494 +434234 +1994722 +1343273 +1537102 +6459 +603607 +1999007 +2568239 +1856655 +374124 +859587 +1072587 +1900533 +998905 +1537126 +720599 +2136108 +1999010 +1321900 +298063 +2136103 +1466187 +374125 +1466246 +2637234 +46303 +1211414 +1123278 +1537098 +461421 +1175039 +2568227 +2136117 +374168 +782120 +666565 +2136107 +1321899 +1619298 +2136106 +2378495 +1261515 +519838 +859610 +2735221 +709773 +142994 +142874 +2680167 +1102324 +389237 +374127 +603698 +2136173 +142918 +1466208 +603681 +859605 +142981 +142825 +1024578 +2256358 +1493774 +1619399 +938283 +2136148 +1466251 +1619292 +142835 +142787 +731068 +1517241 +1466209 +142862 +2136189 +756713 +461427 +2378507 +603825 +859710 +1310927 +143066 +1726504 +1958592 +709782 +204628 +6466 +2568299 +346639 +2317954 +329964 +998932 +859689 +389249 +2568325 +859656 +143008 +1619437 +1958583 +1038392 +2778358 +488020 +1751809 +1813257 +900723 +859663 +1517281 +143042 +731076 +1072601 +1123301 +2526621 +346631 +914619 +2526661 +2068327 +2274534 +1826316 +289599 +2412943 +1537152 +2004189 +1619463 +2378515 +1239084 +2256424 +1517290 +461438 +1783345 +1947859 +143078 +2136214 +1180946 +2568365 +1239091 +1343282 +2256441 +1958597 +421990 +1517274 +1063319 +1053930 +1718817 +603787 +938332 +998921 +1751799 +2698508 +346621 +309984 +2735228 +143068 +2698503 +1199282 +289595 +2136231 +998931 +389243 +309974 +1681758 +1350538 +1102339 +234434 +234445 +1321923 +398918 +46363 +143071 +2698507 +1619446 +143102 +143018 +1123305 +2079785 +1270993 +1856664 +234430 +309983 +346635 +1726501 +938374 +2256410 +650148 +1321918 +289592 +2292287 +998923 +1145747 +2705267 +2751957 +2691537 +234441 +859724 +384053 +1180941 +1072599 +2568331 +1418475 +1537165 +1072600 +2728048 +1958593 +1947860 +2061269 +1619415 +603791 +2526643 +204633 +1038397 +2061267 +900724 +2368115 +1466284 +421979 +46353 +421984 +1487470 +2256430 +2378534 +2136203 +1024580 +2102921 +475969 +2568346 +1791115 +1199296 +1408910 +1466264 +2378530 +1619427 +2079783 +1102344 +2698495 +2568305 +1947865 +1123306 +1102338 +191841 +603776 +603834 +1709931 +374183 +519885 +859714 +1826306 +938350 +709794 +143044 +1199298 +1063326 +2568306 +2698492 +2102910 +289603 +143016 +2061257 +1239088 +1657274 +1321922 +603782 +2061283 +914620 +267400 +421998 +859675 +204635 +859666 +1751812 +1751798 +1321939 +267390 +421996 +143011 +2011336 +1934883 +143113 +1493790 +2852165 +1063323 +1343283 +426651 +938353 +2568312 +2136225 +1321944 +2256439 +1466281 +2292285 +2568358 +204634 +2698491 +2568351 +2778356 +2568302 +2708842 +1102335 +1321945 +1090585 +2035186 +2526633 +2292293 +79953 +1958599 +2568345 +389255 +1038388 +2705268 +2568309 +1619417 +2568360 +2412944 +475965 +1141765 +1167098 +1239109 +603878 +1493807 +914632 +1718835 +1537183 +1761493 +461453 +204649 +461498 +859767 +2102925 +1934891 +2852258 +2136255 +2691542 +1718832 +1783349 +1239123 +1487476 +1900616 +1343292 +1761492 +204658 +666589 +389260 +1058892 +519905 +1102356 +859741 +1418488 +1664849 +2852225 +1072602 +1408919 +2136292 +859749 +46384 +346665 +2368131 +1199342 +1783355 +1517319 +907330 +434265 +1141767 +1271008 +234466 +2256483 +405310 +1199353 +461485 +2071954 +2751964 +1199350 +998979 +1664848 +461487 +434264 +143155 +2511249 +309995 +2698525 +998953 +519901 +900729 +1321971 +143166 +434262 +650149 +1493799 +1175074 +46398 +1681770 +2548782 +1072610 +434243 +234462 +2003093 +1239098 +2412952 +461455 +488043 +1900559 +289625 +1123343 +1167103 +1038404 +2637274 +1703646 +2061285 +1537194 +938376 +1819477 +1999021 +461492 +79960 +2061297 +2852229 +46399 +938404 +998980 +954930 +2745577 +143120 +389267 +1619495 +346671 +2292301 +309991 +907333 +422031 +1783354 +422003 +1466318 +2548783 +1239103 +2852218 +143154 +1819483 +267432 +2256466 +1973180 +374225 +1321950 +2061286 +346660 +1239157 +709812 +938385 +346661 +2351084 +1380963 +756719 +1175072 +1900606 +267415 +1211429 +1083446 +1301681 +1270997 +2526685 +1900581 +434248 +1826321 +434268 +1900608 +6474 +1900601 +2568387 +782143 +1703631 +603847 +2852231 +2680203 +405327 +1900617 +1619531 +2867833 +2351074 +2852227 +1175053 +2317975 +2256470 +2292298 +1102353 +2852235 +2460234 +434281 +2698526 +1761503 +1900638 +1493798 +2852205 +1537191 +1321973 +374235 +1175057 +501322 +2867842 +683621 +143153 +2061287 +683627 +2460236 +1239159 +519907 +1175069 +1343290 +2378540 +859789 +2136309 +398927 +1813279 +998962 +603841 +1844351 +1537180 +79965 +488024 +1934908 +1466303 +1900567 +422024 +767407 +405322 +1517327 +1321962 +1703648 +346676 +2852202 +743519 +324761 +1199345 +954932 +434277 +309998 +2256452 +501318 +1239107 +1517323 +907334 +1175065 +434282 +389268 +351644 +998977 +405315 +461468 +434275 +1751817 +1718830 +234453 +1844345 +143144 +6479 +1718853 +1619472 +267405 +1418482 +998972 +2308726 +731078 +346683 +1718851 +782142 +1900615 +2680214 +1404543 +2568439 +603921 +1844369 +1026589 +2708865 +1199366 +2079814 +859836 +1751832 +1418535 +2136431 +2568417 +215718 +2637284 +683642 +1844364 +374260 +1517336 +2568485 +1958623 +2568433 +859862 +1350564 +2378574 +2568437 +1418501 +1709963 +1669239 +1619544 +1760494 +1466337 +1826351 +2568412 +1322016 +1380965 +938412 +1958656 +519923 +519931 +914647 +1856721 +1751836 +2035213 +782184 +461549 +1167110 +2637285 +6492 +1322001 +1493822 +79993 +1537199 +2136337 +2136376 +1090598 +603899 +519998 +2568494 +999070 +782161 +1856710 +2256509 +2256515 +2292314 +650152 +1026587 +234477 +443537 +2079819 +2318012 +2568435 +2102929 +1418496 +2568398 +1199364 +2079794 +1322008 +79974 +2318005 +1537254 +1934912 +2079820 +1408926 +999059 +603904 +1537258 +2318006 +603935 +2637302 +1038424 +1418494 +2568451 +1322012 +1856698 +1418497 +2136416 +859866 +2136446 +2637317 +859808 +1619546 +2708866 +2274540 +2378623 +683636 +461564 +1180969 +1726547 +2708867 +2136390 +1958640 +1791121 +683662 +603961 +2079815 +1261564 +461563 +1038411 +603908 +2318002 +1301691 +143221 +1053933 +1301688 +519946 +2136340 +2136436 +1940918 +603942 +1856740 +461547 +1537233 +2568462 +2568479 +1537261 +1669245 +1958629 +2378610 +782180 +2680210 +1619573 +1856699 +2460246 +1958616 +1646618 +1688197 +1911838 +2526706 +1466351 +954967 +1619563 +2637282 +1466350 +2281638 +2526719 +1251232 +1537228 +1261567 +859802 +520002 +2136407 +1718862 +1619541 +603905 +1109544 +1537197 +1180970 +603918 +1726525 +1844371 +2460245 +488060 +1322007 +782197 +2568468 +1655510 +519919 +143184 +1380966 +603928 +2378621 +1180959 +1408924 +143207 +2358237 +298067 +709827 +709825 +938417 +1826333 +2136401 +2136426 +1726532 +1483209 +1958644 +1321992 +2568400 +488062 +1973183 +2136361 +143226 +859828 +374263 +603947 +2317976 +603924 +1726521 +859837 +1301685 +709834 +1900656 +1466372 +782173 +1466346 +2568483 +2568402 +1493823 +666594 +1987842 +1537268 +2680213 +1261556 +1102368 +1940920 +1493830 +1900644 +191855 +603933 +2358234 +1537214 +143232 +1709943 +1726542 +2526710 +1537238 +1826324 +603939 +1537256 +1826355 +683666 +1973185 +310006 +1271020 +782165 +2318007 +363917 +1844384 +603972 +859941 +938452 +1418550 +859875 +907339 +938448 +1102400 +2256562 +289639 +461583 +859984 +1726550 +999080 +1664853 +859931 +143283 +46457 +731097 +461572 +709850 +859880 +999081 +289645 +1493843 +1199387 +604027 +520023 +1102388 +1900689 +46438 +938472 +1199401 +1292698 +782206 +938469 +2624798 +143238 +999079 +1537277 +1517349 +1102389 +2708883 +289650 +604080 +461574 +1657277 +1239178 +1038433 +1517379 +1271043 +604065 +859918 +604010 +1517377 +2292324 +1537283 +603989 +2136500 +1271036 +603981 +289648 +938473 +374276 +859987 +1619647 +1350573 +2256533 +859867 +2368149 +604056 +1418555 +2102949 +604120 +2256567 +2136492 +143257 +2368142 +1968960 +2102941 +2102940 +720614 +859975 +1038431 +143286 +604098 +1900690 +1751871 +2035226 +1418552 +2003102 +2751976 +1646626 +1718884 +604137 +2061350 +2019883 +1619606 +859939 +1856756 +461576 +1123363 +461580 +346686 +234483 +1987846 +2079827 +2035218 +1271040 +999077 +859926 +2136506 +709846 +743527 +859955 +2136480 +2637331 +603997 +859973 +1856751 +80005 +2680235 +859940 +859885 +143294 +520051 +289649 +1466418 +1703662 +1466444 +2624811 +234488 +999078 +2412968 +2412963 +2136462 +80004 +2719257 +1261575 +859924 +1681783 +1751844 +1292709 +2460259 +859928 +2256571 +1726555 +1024584 +999100 +1703660 +143273 +1517396 +46451 +859978 +1751868 +1950783 +2637321 +1087593 +2079833 +1856764 +604030 +859900 +1958668 +143301 +2378636 +1466395 +1900713 +1517374 +1087595 +143267 +2719253 +604048 +666599 +520027 +2637322 +603994 +1619628 +46474 +859938 +2378634 +603985 +1466430 +1493838 +1365670 +604105 +2680231 +1466409 +2102934 +520050 +2680234 +2061330 +2061309 +2061360 +234505 +604078 +1261573 +520021 +1517387 +1517382 +374277 +143299 +1619600 +1813295 +1751838 +1292695 +2568528 +2102942 +2061363 +1102408 +2256532 +1718878 +310036 +2568502 +1537298 +683668 +1537288 +709852 +2061324 +1261574 +1102412 +731090 +1493836 +2256563 +2079832 +234497 +604107 +1844379 +374300 +1751870 +310010 +1239176 +2568512 +1900712 +1271030 +1350578 +2035214 +2136474 +1271026 +1123357 +2278852 +488075 +1760497 +1709969 +767431 +1537353 +1466447 +604189 +488076 +1261597 +1517405 +1087602 +860051 +2378646 +1726563 +1537330 +914662 +405335 +1537336 +488081 +1090629 +938479 +520059 +1751877 +2318031 +1726556 +860006 +860097 +1619689 +1619685 +1466453 +1844407 +1261599 +2136540 +2460262 +999184 +767429 +2256593 +143307 +1813297 +289654 +604144 +2680269 +860074 +46513 +2378678 +2568573 +683686 +2028374 +2136538 +1537310 +2378673 +1619670 +2637339 +860081 +1973201 +860003 +1619682 +2637349 +860079 +1466452 +1537354 +143319 +1038466 +46525 +1199410 +1619734 +2354214 +1900730 +46538 +1619715 +2698545 +604197 +46507 +143318 +1900715 +2028379 +143305 +2061369 +1619706 +1751885 +143349 +1271048 +1109567 +1102436 +756736 +2102952 +1726560 +2526731 +2318026 +2368176 +604163 +1466481 +860112 +434284 +488080 +914658 +1900731 +2526727 +1090627 +2256596 +267473 +143374 +1537357 +1102421 +1646631 +1751890 +46537 +1102427 +782220 +2354219 +2637345 +2136604 +954991 +1466463 +2256580 +1619752 +488074 +267467 +999196 +1038456 +860056 +2368182 +1619678 +2256598 +860011 +310047 +1466459 +6505 +2460261 +346690 +604178 +46522 +1408932 +860090 +461602 +1934952 +2079847 +1844412 +2136545 +1844405 +1261581 +1619736 +1322041 +234514 +2368181 +2624815 +1517406 +1619698 +2728994 +1466500 +2102957 +1466513 +1517422 +1322050 +2256606 +1947871 +1408933 +46545 +1466523 +289664 +1239204 +1619738 +461596 +1537351 +604183 +782229 +1537309 +1844399 +1751880 +1900724 +999165 +2460263 +204672 +289659 +1646627 +1239195 +2378672 +1261598 +1038468 +782230 +782227 +954982 +1958680 +1167118 +2416339 +1619746 +782225 +1261576 +1493852 +1199416 +999164 +1239192 +954985 +1537333 +1726567 +461585 +999183 +2035238 +234515 +1688202 +1466461 +1751875 +2136543 +1844394 +1619716 +267476 +143333 +413721 +1517424 +143352 +2028378 +520056 +2412982 +1751937 +1350592 +1900748 +1726588 +1934994 +2568594 +2568665 +1322057 +1090636 +604232 +2412994 +731118 +1466541 +1261635 +2278854 +1844466 +1199450 +2061398 +488134 +310065 +2568618 +1856779 +2548790 +2735240 +1900771 +1199452 +1239257 +2378689 +1090634 +604264 +46556 +461611 +1619820 +2526762 +2061386 +1537376 +1537375 +1343304 +709929 +2061401 +1239245 +683710 +374313 +2416340 +2412987 +709928 +2526777 +1844431 +2526765 +1038548 +1239253 +1619806 +1199435 +709952 +374309 +2136631 +1175083 +1537383 +143399 +46551 +604293 +1844415 +2728065 +1199443 +1751915 +2368214 +1844458 +1102467 +488119 +2136628 +1072631 +143392 +310091 +1751979 +1973216 +1343302 +2680298 +488128 +2368200 +1239252 +2691550 +1751953 +1973212 +461618 +604299 +1751936 +2708904 +1123412 +374330 +1751898 +2708901 +1154102 +1365686 +374324 +1038499 +1038479 +2637362 +2719267 +1350594 +461628 +1760499 +1950786 +2526755 +2691549 +709936 +1038525 +650173 +1251240 +2035244 +1261628 +1856789 +2624844 +2277926 +2068334 +2378705 +604254 +709897 +2568662 +2624829 +1239259 +709969 +1038545 +1844420 +310077 +1619793 +1199444 +520098 +2548798 +1090640 +2680288 +900742 +604324 +604357 +426655 +737391 +1038480 +2061402 +1038518 +1900738 +1537366 +267493 +709958 +683722 +1211459 +2368209 +2568628 +374315 +1934973 +604246 +2624833 +1709972 +1646634 +709967 +2680284 +2079858 +1083464 +2680291 +731125 +2368208 +604263 +604245 +1239303 +1619800 +2568600 +604255 +1900757 +1726604 +1726579 +1038544 +520096 +2026657 +709953 +2548789 +234521 +2277929 +1045825 +1369733 +346691 +650174 +1856778 +1211466 +1994750 +2378701 +1026606 +2071959 +604360 +2526780 +1718893 +1418586 +2691548 +709912 +2526751 +1619787 +1102468 +2548793 +1199449 +1726592 +604364 +604344 +1211469 +2680290 +1703677 +1301704 +938526 +1751925 +2624842 +2368196 +2568611 +2368201 +1911844 +1239243 +389296 +2035241 +2728064 +1751918 +1619782 +1211463 +683716 +2412984 +1175080 +461637 +720618 +1239282 +2526732 +374317 +1109570 +709962 +234523 +2021462 +743534 +604274 +461633 +310079 +1537415 +604427 +2413002 +1958688 +1987867 +2680326 +604374 +683735 +488144 +2568697 +860166 +2637419 +1826401 +1537407 +1239316 +475987 +2637429 +374349 +731138 +604481 +143430 +1109577 +2568693 +1239307 +2637393 +2637369 +1086186 +2318040 +860165 +2568698 +310140 +2416342 +1045841 +2568716 +1987866 +767443 +501336 +604382 +520133 +2378760 +2680324 +1646654 +1090646 +2637409 +1292725 +1973223 +720645 +1123441 +384059 +310112 +324789 +501329 +1239308 +1343311 +860203 +2378734 +1856817 +1038558 +2526797 +1271057 +1994756 +1537385 +1038563 +860155 +1271060 +488147 +2274575 +2278857 +2568701 +1271066 +2680309 +2318041 +2637368 +2358284 +650183 +488135 +1537404 +604395 +604446 +1973229 +2136643 +1024591 +1537402 +999215 +389313 +520122 +1726625 +1199467 +2637402 +324810 +143431 +2277945 +298082 +143413 +955003 +1947878 +2416344 +2637432 +2680336 +860176 +1655516 +310144 +267505 +1404547 +1310965 +1856799 +2637414 +1369747 +1987869 +2568699 +1751989 +720644 +720639 +2568729 +1211476 +1987870 +310138 +2637410 +1935011 +604432 +520143 +767444 +310094 +1038554 +666637 +782246 +1123417 +1239331 +1987868 +1537411 +604387 +2568718 +2358282 +1090648 +604480 +604452 +1239322 +1171016 +2526796 +1537394 +1292737 +520128 +1199471 +324787 +1655517 +324806 +2568749 +2637403 +1038570 +1751984 +709978 +1350601 +46559 +604410 +2568714 +1466573 +1958696 +1045839 +1090649 +767442 +2378772 +374368 +1537393 +1726629 +2721212 +604438 +2568737 +1038560 +1239334 +1703683 +422038 +2256654 +1813305 +709988 +329975 +475991 +2136726 +384060 +2735245 +2256661 +80029 +1180995 +2102977 +1199473 +2136657 +604507 +310162 +1418609 +900748 +1619867 +443556 +80022 +2460270 +1619859 +1619874 +1537461 +1083465 +1123448 +1154104 +2460272 +1537448 +2136680 +143462 +604496 +1718918 +2292357 +1999043 +2637461 +2568759 +2637477 +80026 +191867 +267509 +1493873 +900749 +2358285 +2460274 +782258 +443554 +329974 +604515 +782268 +1418600 +2136668 +2136694 +1703685 +1652795 +1199481 +405338 +1072635 +860252 +349742 +143486 +520177 +1856853 +782267 +2136672 +1826406 +1537455 +2351112 +1958713 +1466588 +683741 +782265 +2568798 +938530 +405341 +2028393 +1537427 +1856827 +2637470 +1619886 +46569 +1199477 +860241 +1791135 +2526816 +2526820 +1322115 +46571 +2318060 +2136705 +520179 +938531 +204676 +1322098 +999251 +215730 +443549 +683762 +2368226 +860247 +2432086 +1271080 +767445 +2460277 +860243 +2637469 +955016 +860260 +1958711 +1038583 +1826431 +1772867 +2413012 +860261 +1171018 +2637454 +143442 +2136706 +1271085 +2079873 +914673 +683749 +1900793 +2136707 +143502 +1826435 +426658 +1819487 +374389 +1619879 +709979 +2318048 +900745 +2079878 +1537431 +520157 +520171 +2281646 +683757 +999234 +999248 +2568783 +720648 +1102489 +520174 +2568793 +1718919 +1090661 +2698558 +2698559 +1466605 +143495 +2378798 +1466598 +143463 +1999041 +1709988 +2136698 +2460269 +2079871 +2637464 +1826418 +1271088 +2136673 +2680340 +1935018 +1517452 +604603 +1726652 +2568835 +1681812 +2011347 +143524 +1752020 +2867847 +6528 +1322178 +2292393 +683780 +520221 +1365699 +2526856 +604574 +2308747 +2852293 +2368236 +1418644 +1350698 +1180997 +2432104 +434306 +2568910 +2136845 +2637488 +2568867 +999270 +2378841 +329976 +1958750 +2852386 +2568939 +604553 +2358317 +1310976 +1517458 +860301 +1199489 +520256 +2526854 +1350624 +1466637 +2079884 +520203 +1844497 +1181001 +1791152 +914696 +1958737 +2019893 +1053941 +2292382 +710008 +2526890 +389318 +604607 +1239351 +1393808 +1718927 +2378879 +1517453 +2136819 +955034 +2378855 +2460291 +1123449 +1844486 +604535 +1418635 +2852298 +1386895 +2778370 +2708988 +520210 +2378872 +2292367 +1397792 +1973244 +2136752 +2256677 +2568857 +999266 +2368233 +374397 +1350626 +2752003 +1292753 +2867884 +1466610 +1123450 +2526869 +1660669 +2292386 +2432103 +1350660 +938553 +1973262 +2568862 +2136747 +520234 +1791146 +1322197 +2568900 +999267 +1537472 +2136792 +2568941 +2867864 +1350650 +2136744 +1301730 +753232 +2526870 +1958742 +1935026 +2136758 +2624856 +1350702 +914693 +143518 +1301719 +2292371 +1175097 +2691559 +2292365 +2867868 +426665 +1350675 +1418657 +2867862 +2079906 +938567 +1844496 +461675 +2378831 +1199485 +1856868 +1418614 +1418632 +1726653 +1483212 +1343316 +955045 +2852318 +1844490 +2698564 +2136777 +2568924 +2637491 +1350703 +2136750 +860287 +1973248 +1072639 +650199 +743547 +1772870 +1466615 +488155 +1418631 +1669270 +709999 +1350708 +1826472 +938572 +46576 +2526894 +1466652 +2735251 +2136794 +2035248 +2021474 +520264 +234553 +2852347 +1669275 +1709998 +2778360 +604618 +1026635 +2256669 +1322191 +1322185 +2378867 +2378884 +710006 +2852382 +422040 +955032 +1350665 +1660676 +2698567 +2526848 +2735272 +2432099 +1958728 +1856880 +1132800 +2568863 +461678 +1681811 +1466656 +2867859 +2568873 +1958732 +2136759 +520232 +2526878 +1350619 +520220 +1386897 +2292372 +2852280 +1322156 +1322152 +1350690 +143509 +1418640 +1466608 +520247 +604541 +2378878 +2852307 +1180996 +1058908 +1393814 +2708978 +1999062 +2378870 +914701 +2079899 +1072640 +1350657 +2003116 +1167123 +2568865 +1239339 +666661 +2358316 +1826468 +938563 +604600 +2852331 +2378830 +1083474 +1669273 +604545 +2852335 +2568836 +1211508 +2308748 +999283 +683782 +2292361 +683799 +1517455 +2568944 +1350625 +215739 +2852356 +2136740 +2778379 +2708956 +2136806 +1826441 +1369768 +1083477 +2852274 +2568886 +2852373 +2568828 +2460296 +1109594 +1123451 +1322147 +1537492 +2867849 +398931 +2004208 +1710000 +2526881 +1175099 +2568905 +683811 +2292381 +2079920 +2752027 +782318 +2526908 +1826508 +520329 +2011358 +604642 +2460365 +1764643 +2568980 +443569 +1537541 +1826519 +191901 +1996357 +2292410 +1038592 +267519 +2378906 +408993 +520345 +1199498 +1050118 +782309 +756752 +683844 +2079913 +2526905 +443566 +1537528 +1537496 +401843 +2136903 +2136890 +2698573 +520325 +374409 +2079929 +1487485 +2745596 +1619901 +248749 +1418687 +1826483 +1856914 +2423279 +1239358 +2526922 +1646661 +520315 +2526928 +2432126 +1418683 +398935 +914709 +1726659 +999291 +1375289 +1350710 +1726661 +2136924 +782307 +1826500 +2136923 +1999081 +2136916 +2709002 +1703691 +1261660 +1051703 +1537522 +248747 +2460340 +1726655 +2568969 +914713 +955046 +1764641 +710014 +1783377 +683823 +1537515 +2378908 +1688205 +475997 +2079931 +1973270 +1958760 +683841 +2136947 +342961 +782330 +683832 +1856906 +1669276 +2460330 +248748 +782299 +1493912 +955080 +2460324 +1826494 +2136874 +1271131 +2378910 +1726665 +2061425 +720671 +782363 +1537572 +731163 +1973286 +2079915 +338709 +756761 +1301751 +1537570 +2569024 +215748 +1301755 +2752019 +1181012 +2460357 +1072643 +1271135 +363930 +2136872 +2568966 +2721226 +782352 +46584 +1322206 +191893 +2079926 +1493914 +860316 +604644 +604637 +2708999 +2569039 +955055 +683838 +1669292 +955049 +1996356 +374413 +1844518 +1517467 +1826503 +1393823 +267537 +1726666 +520319 +1418672 +1063354 +461695 +2136868 +2281661 +1999082 +461694 +1537529 +1397796 +434314 +2378902 +2460348 +1466666 +333164 +2079927 +1181034 +1999080 +1181015 +1973273 +1199503 +2136935 +1072645 +267520 +267522 +2637526 +2637522 +2432116 +1301753 +1791157 +2432127 +1537552 +999307 +1493937 +1322217 +1086190 +1145755 +234559 +683859 +1619910 +1826520 +1826498 +1493931 +408991 +2368245 +2136959 +1063359 +2637518 +914715 +1418670 +2292439 +2568959 +1369777 +2427621 +2136880 +1537556 +2413019 +2378912 +2136899 +1493917 +2460327 +2378896 +1090673 +520305 +6532 +1973280 +1726667 +1322207 +2569000 +1393819 +1537499 +860415 +1175132 +434331 +2413032 +2256700 +1466760 +374432 +2256774 +2358326 +2256696 +860410 +860368 +46613 +1408961 +1466751 +2526933 +374434 +1134631 +2308773 +1408981 +1466675 +683869 +1710009 +2035295 +1038593 +860426 +267564 +2061465 +1408957 +2624876 +2526959 +1466690 +1466772 +1517498 +2256708 +1844531 +1466698 +2368272 +2256738 +1408956 +1199557 +1051708 +267557 +1466707 +1681832 +2548815 +204696 +2318095 +2256811 +1466753 +1517507 +2256725 +2256808 +46610 +860354 +389325 +999382 +2256729 +1620031 +1292767 +46609 +1131960 +1409000 +2427628 +2102994 +422050 +860425 +1083481 +2256723 +2256791 +1466695 +860369 +2136981 +710039 +2061427 +461716 +2719274 +2548807 +2548814 +46624 +461712 +434317 +1087613 +2368259 +1408997 +204724 +1718938 +2368266 +1537583 +1466684 +2035293 +860468 +488162 +1322228 +46627 +2368253 +860413 +351654 +2526960 +1620008 +461732 +999345 +2292450 +204719 +860456 +860466 +2061428 +2460372 +2308758 +1171022 +2061435 +2256741 +2292452 +1844547 +1239404 +1134627 +2256711 +46605 +860406 +2427635 +1681831 +860371 +1154115 +2569073 +1408993 +2256768 +1619981 +1517490 +434329 +2256818 +1658652 +289739 +1466773 +1620020 +1483215 +1175106 +1408960 +374424 +2413023 +2351136 +1718931 +2368254 +2102996 +2136987 +143601 +1620011 +710032 +1038594 +422052 +1109602 +1664868 +2511301 +374427 +2256822 +204694 +267570 +999369 +1752033 +1620036 +1517511 +204718 +1681826 +1487489 +2569077 +289715 +2460371 +1058918 +234578 +999333 +1175122 +767454 +860459 +860379 +2136994 +1652796 +2624866 +310171 +2378923 +1620003 +267551 +143562 +2624863 +1517515 +1900837 +6545 +860394 +2526945 +2256722 +2136980 +461717 +1167133 +710038 +2548819 +2102997 +234571 +1175130 +289720 +1132807 +1517531 +1658653 +1239372 +2423282 +405359 +1947887 +1703704 +860351 +860424 +1418723 +938596 +1199534 +999314 +1652799 +1619973 +204714 +46621 +1154126 +2548810 +1239386 +955088 +204705 +860434 +1664857 +289726 +2256795 +1900831 +767459 +2256872 +1418761 +1973297 +955104 +2569084 +426679 +520369 +2378945 +1652801 +2460398 +2637591 +1123473 +2378938 +1239413 +1620090 +2079976 +426696 +1418755 +1393827 +1199565 +1620081 +1322255 +1322260 +2256885 +1826542 +2569161 +2569139 +767477 +267593 +520359 +2526983 +2413052 +2527005 +1123482 +434336 +143650 +1239416 +1620113 +310184 +2137162 +1090687 +1813332 +1102522 +1752042 +520380 +520387 +2137187 +1271154 +143652 +1466822 +2137125 +1072669 +2548826 +1322241 +860492 +6550 +1493960 +1466825 +234592 +2569157 +1791174 +2569125 +1958795 +1958771 +2079964 +1900843 +604694 +2079949 +1493957 +2358334 +2569124 +2569197 +443575 +1752041 +1517566 +1856958 +1681843 +2526996 +1181054 +1109608 +2358357 +2460383 +1385609 +1483219 +2569158 +1537618 +2548832 +1996366 +860484 +1271157 +1175147 +2256877 +2637584 +2569223 +2637572 +461741 +2460387 +6554 +2256847 +1109605 +6561 +2137106 +2637552 +1072659 +2137075 +914737 +1271150 +782395 +1657579 +1343331 +6572 +204727 +2061481 +1856930 +1681847 +2368301 +6592 +1038604 +46667 +289744 +2035320 +2318133 +2292468 +2368307 +914723 +2318122 +6570 +1813330 +267575 +2256834 +2103033 +1109618 +2460413 +782405 +2637556 +2432144 +1072663 +1211561 +1102527 +6576 +1136097 +2279514 +955097 +1718972 +2137050 +461744 +2137045 +1038607 +2548838 +1791171 +2137130 +2292474 +426692 +737412 +2569261 +1466790 +488174 +2137178 +1199566 +1072668 +955103 +2137072 +234597 +1102525 +1958769 +2137059 +2137158 +2103032 +1322287 +1537616 +443587 +2527007 +2548830 +1657576 +1657592 +2569108 +374437 +914740 +1418753 +1517549 +2378968 +1958797 +2137134 +2256863 +520356 +860481 +2358340 +1935041 +143617 +914727 +143635 +1483221 +2318136 +1813333 +2274583 +1856928 +1856964 +2569111 +1620084 +267591 +1681835 +2137165 +46645 +2354227 +1826572 +2569099 +2527042 +1999092 +2358367 +2432147 +1710015 +2569212 +520355 +1537619 +2035303 +1517568 +2137086 +1418750 +1958784 +234582 +1141791 +2569184 +2378947 +2378952 +1537613 +2569201 +80076 +2292456 +999391 +2137094 +1109606 +1537622 +914720 +1791192 +2358359 +1466817 +2637593 +46661 +1466812 +1343330 +1660686 +1199577 +2368302 +443594 +2035314 +1620062 +1900844 +1131961 +289753 +2460403 +2368304 +1493954 +2035323 +1620110 +1710012 +2637551 +938626 +1322236 +938615 +2637545 +1968971 +2637589 +2569207 +215761 +2460396 +2432139 +6557 +443603 +2569149 +1537606 +520375 +1090690 +2378956 +2137076 +2637592 +1783383 +1145762 +1322256 +2637540 +2569142 +1175150 +1418751 +2292469 +2256884 +2137151 +2569211 +2569219 +443604 +1199581 +2516918 +215756 +1109609 +1900838 +2637579 +1181051 +2281675 +1772894 +2460410 +443582 +1768718 +2368299 +2526990 +1688217 +2079986 +1026658 +1537635 +2379020 +6609 +2752039 +1791207 +1710026 +2752040 +1026652 +1350738 +1764648 +1493990 +1669309 +6602 +2569265 +2637617 +1493985 +1493977 +1856991 +520403 +2318168 +683887 +1537667 +1483224 +2137236 +1826597 +1826606 +2079991 +2527107 +215773 +1493983 +2278862 +80100 +2569321 +2637605 +1826578 +2423285 +1369788 +1537655 +683896 +1856979 +1856977 +2318194 +2569368 +1493987 +2378987 +1726692 +2569300 +1109622 +1958800 +2318172 +2527079 +1211585 +2379003 +2379005 +2569360 +2527104 +2318174 +2137204 +650222 +2569301 +2721233 +1911864 +520416 +782429 +2137260 +1537648 +1537652 +2378990 +2379004 +1322300 +782421 +1537662 +2318154 +1772898 +2569299 +1537670 +1271169 +2569336 +720679 +2569337 +2137240 +2137263 +2137209 +2318180 +683899 +1211584 +2137225 +80108 +2318192 +1710032 +2318166 +1418778 +1537664 +914750 +2137227 +215767 +520415 +1211577 +6604 +1537656 +2137246 +2569338 +2527146 +1826629 +2008133 +2637633 +1726707 +1322350 +363938 +1537717 +2569438 +1857067 +1857076 +342970 +2698585 +900795 +2379083 +650231 +1494026 +2035348 +2432160 +2637646 +1494033 +2137337 +342966 +2035351 +2460445 +1826650 +2432158 +2527188 +1646678 +2318228 +1857017 +1090718 +520471 +1537688 +1826643 +650228 +2137349 +2637643 +1211610 +782449 +2527124 +1958823 +2527172 +2569434 +1826635 +2292503 +1350743 +2379075 +900792 +80133 +80163 +1251249 +2709017 +2318249 +1537682 +1181099 +1322327 +2137354 +2527128 +2569387 +1271186 +1857072 +2569408 +1958840 +2358386 +1211593 +2318214 +2569409 +1826612 +1418793 +1940942 +914765 +2137272 +2379081 +1181087 +80126 +6623 +2527182 +1973322 +342965 +2569439 +476017 +2527114 +2318220 +2358379 +191934 +860516 +2137298 +520462 +2137289 +1301770 +650238 +1494025 +2569433 +298102 +2137292 +2527141 +1999098 +2527160 +2569473 +900796 +1857029 +2379057 +1537690 +80164 +1322318 +2569465 +2358393 +955137 +2460426 +80149 +2137313 +2137288 +2527192 +1090715 +1857015 +80151 +1063377 +1940940 +2292506 +2035353 +1322328 +2735292 +1418807 +1857034 +1322324 +2137303 +2637653 +782456 +1537684 +2379041 +650235 +1857077 +2358383 +443608 +1322331 +248773 +1322339 +1826618 +1537727 +443606 +1211586 +1483228 +1826621 +2527184 +1660698 +1537676 +1973318 +782446 +1493997 +1537725 +1402043 +1646682 +443609 +2292511 +1181086 +80129 +1063371 +1857054 +2460477 +1418849 +1646685 +2137416 +1418837 +1669326 +683950 +2137462 +1911882 +298106 +1791226 +1350755 +1381031 +2137408 +2527218 +2292529 +2137378 +520521 +1726732 +520502 +2137385 +2379145 +1826709 +2460455 +2379142 +363942 +1109653 +2569541 +520539 +1826701 +1418844 +2637682 +1826715 +683928 +1958853 +1322399 +2527197 +1132819 +1181109 +2569553 +2569557 +1393836 +1973339 +2379107 +1646688 +1857084 +2569502 +2698586 +1211615 +1322410 +2637689 +1826661 +1109650 +1181123 +1322403 +1397808 +2527209 +1350763 +1660704 +443621 +1109643 +1109644 +2274592 +401853 +756790 +2569609 +1211662 +2637698 +2569515 +2527221 +1791229 +1271201 +1826712 +2569530 +2137427 +191949 +80181 +2637706 +1381025 +782463 +2752052 +2379088 +80182 +1826721 +2137448 +1369791 +2137432 +2637699 +1987889 +1393839 +6646 +520513 +2569556 +2080022 +520535 +2569606 +1791224 +520526 +2569552 +1494042 +2637711 +1418852 +1911884 +1211626 +2137384 +2137389 +1181124 +1109641 +2137428 +2569580 +2274593 +1494047 +2137436 +1381028 +2460479 +914776 +2379113 +2137429 +2637708 +2569528 +2137419 +2569582 +2637688 +683941 +6640 +2080015 +1109656 +1537745 +1826659 +782472 +6628 +2379146 +1090726 +520555 +1494046 +2318263 +955145 +2569521 +2137397 +1386907 +1958850 +2569534 +1350765 +1688248 +1109652 +1494056 +191953 +2137431 +2569627 +1646695 +1123485 +310197 +1726752 +1652841 +389329 +1261667 +310263 +2569836 +2278013 +1844608 +1857091 +2569822 +2379312 +1950807 +1652823 +2358411 +2680392 +2569757 +1826756 +2274660 +2569759 +2569854 +2277998 +1026688 +860520 +1710080 +2569747 +2277956 +1652849 +2278875 +2527261 +289775 +2569729 +1038637 +289794 +289766 +1826740 +461767 +1844611 +1935052 +289813 +2274651 +860524 +1038717 +1038720 +2637733 +461764 +289846 +1652834 +2569640 +1900877 +2569654 +1646715 +2273337 +2379215 +289784 +520569 +2569702 +2637723 +2569751 +2274626 +2569776 +2527251 +2278002 +310185 +1710088 +2274631 +324841 +1652810 +1857102 +2527233 +2277978 +1090736 +2569847 +2358417 +2277989 +2278891 +1657320 +2569842 +1038703 +1652862 +1726762 +2527258 +2624897 +1900863 +1652864 +2680377 +2274658 +2637785 +324833 +1038655 +2379300 +1181135 +2569628 +2379182 +1752089 +1652809 +1857105 +2278870 +604729 +1646745 +2527226 +1026685 +2569749 +1239423 +289797 +384071 +1646741 +1102541 +2624901 +1657333 +1857114 +2637787 +2379284 +1038613 +1710086 +1102537 +1109659 +2569788 +2413058 +2569632 +1038614 +2277973 +1646739 +1752077 +2569690 +2569721 +2274665 +2273328 +1038657 +2379149 +324824 +310192 +2569741 +289800 +289764 +2277994 +2278032 +1752068 +2416358 +2379259 +1261668 +2354234 +1646701 +1181133 +2379313 +1657330 +2569783 +2379205 +2278026 +1261670 +1826747 +1719005 +2413061 +2569698 +1826765 +1646742 +2569778 +1038689 +2274666 +2637735 +289839 +1271210 +1652842 +289805 +310200 +1038618 +1271218 +2569629 +2637722 +2569630 +1657325 +1026679 +2680390 +1646714 +310211 +2637718 +2637731 +1752061 +2358422 +2680373 +1752057 +2637727 +310240 +289771 +2569662 +2569666 +1752080 +2569748 +1251272 +374442 +2569669 +1710075 +1710072 +1655544 +1251270 +1652839 +2569816 +324831 +2527262 +2274638 +1652858 +2278020 +1826751 +1261679 +2637774 +324849 +2277972 +1109665 +1026680 +310186 +443635 +1857125 +289786 +2569716 +289822 +2358403 +1652853 +1646731 +1199588 +604715 +2274596 +1109668 +289791 +310250 +1646698 +1038635 +1900882 +1026677 +604720 +2274600 +1123495 +143675 +2061500 +2061519 +1719013 +1466843 +2368344 +860530 +914800 +1752096 +1038732 +2569943 +310309 +737415 +1826805 +683991 +1038735 +710061 +914782 +520656 +1669335 +2570089 +604785 +1710104 +520620 +1719058 +1710126 +2137511 +1719016 +2624909 +1958875 +520626 +1646754 +2103041 +2379331 +520670 +2527420 +1940944 +1844634 +1947894 +1517596 +2698594 +1292790 +2691571 +310305 +2637853 +1517592 +1652905 +1620184 +310304 +1271233 +2569970 +1517584 +2379341 +1681856 +1726788 +374449 +2570022 +1958870 +1090747 +666668 +782494 +2256910 +2569916 +346721 +2637804 +684008 +2569919 +1365711 +1466857 +2137545 +2273346 +1072676 +2137490 +143686 +2527307 +914792 +860558 +2570092 +1652909 +2061531 +2379373 +650269 +1826823 +1947893 +683980 +683994 +683965 +2778387 +2527373 +1517582 +1418876 +234613 +731181 +1646750 +2256917 +860564 +1826803 +731170 +2379320 +782485 +720719 +374460 +2080058 +2379334 +2137530 +2570061 +1292802 +1038761 +1343345 +2256918 +1483235 +2137541 +1857205 +2637846 +2569966 +604740 +461770 +710063 +374468 +2379355 +2379397 +1466840 +2569908 +2637803 +2137480 +1038743 +684023 +520646 +684019 +520650 +1752107 +1719029 +782484 +1517579 +1652911 +604774 +1620194 +604755 +2080035 +1026703 +2061535 +1466845 +2527350 +2527278 +520619 +2569947 +1292797 +289881 +267600 +731180 +2569963 +46675 +1620174 +1537784 +1646758 +1791235 +1826818 +2061533 +1652903 +2637858 +1466847 +2137503 +1703725 +1537780 +2570028 +2569892 +2637823 +1123515 +604790 +2358431 +1466864 +2569885 +2379346 +143671 +1181153 +2637844 +1038746 +1620137 +2637801 +1710112 +2137518 +720702 +604812 +2137479 +1350775 +1620186 +2527340 +342972 +1710133 +1109670 +2527408 +2527282 +1072678 +2569907 +604768 +2548848 +1109673 +520663 +720709 +1322484 +1726774 +1322497 +2368339 +2569997 +782500 +1646752 +2527275 +1947895 +520612 +1109676 +2752056 +1537771 +604843 +2527319 +520677 +520672 +2778385 +2080061 +2379387 +143669 +2527378 +1418874 +1466838 +2379385 +2274677 +1494092 +900802 +374450 +2292564 +860536 +1652902 +1109675 +1038756 +1418892 +2527366 +683972 +2035389 +2684526 +1141797 +1343342 +1958859 +720715 +604765 +2569884 +1719035 +2368337 +1292799 +1973351 +1857169 +2778390 +860553 +604741 +2137528 +520685 +1181151 +520687 +2379402 +2569988 +1826796 +1466872 +2569882 +389334 +2527374 +860552 +2527347 +520671 +1418877 +1418887 +1681855 +2570063 +1900897 +914799 +1857190 +2137485 +2103045 +1719047 +1537789 +2137524 +1171040 +1483242 +1322418 +520581 +731174 +1181154 +604772 +938628 +2358433 +1710097 +2080032 +2068343 +2137547 +2752058 +443691 +2358457 +1322523 +2527483 +2752063 +2637894 +1719088 +2137635 +720732 +461807 +6662 +1377802 +1038767 +443652 +461791 +1710141 +1826871 +1365715 +1857225 +955178 +1999114 +2570180 +1343349 +1322559 +1087629 +1660720 +1239430 +2698613 +1681865 +2137660 +2137601 +2637867 +2358454 +2137606 +1857227 +684055 +520739 +955166 +2137574 +1726803 +289896 +2527444 +2035403 +1620204 +2256947 +1322511 +1322541 +1958886 +1844694 +2358463 +1681862 +1072686 +2570187 +215830 +1322546 +215823 +756807 +1719099 +955176 +2256936 +1343350 +2137549 +2570122 +955182 +999441 +782519 +756809 +2527517 +1844659 +1322507 +2527547 +2570223 +520746 +782503 +2548863 +461789 +1620198 +1537820 +955165 +6693 +284654 +443660 +720739 +1844661 +1844662 +684028 +2460508 +6706 +2379453 +2570095 +2570133 +2570220 +1494102 +1090768 +443648 +2318285 +2460516 +1494100 +2637892 +914815 +2137653 +2292587 +2137603 +782509 +1620223 +1292806 +461790 +767487 +2137631 +520740 +955157 +650275 +2548874 +1261706 +1620219 +443684 +520758 +2548895 +2527509 +2527488 +1710164 +2527544 +2527527 +1261691 +2527538 +2256950 +2318277 +1038771 +289894 +2570181 +1710151 +1826867 +2548883 +461784 +1123526 +2680402 +1752122 +2460520 +1494101 +2368353 +1350811 +234629 +80231 +1322527 +2137665 +2527549 +520747 +1322512 +215825 +289895 +1826845 +2570110 +2570147 +1752126 +2080066 +46683 +1620196 +2379422 +2432181 +2379417 +2527455 +1646763 +1418899 +782506 +860579 +1710161 +1844646 +914803 +2570227 +46691 +1537824 +46685 +461816 +520762 +1973358 +1322557 +215832 +860577 +461837 +2570216 +1620212 +767491 +2379403 +1857221 +143691 +1900899 +2637863 +1537825 +1537823 +2035397 +860583 +1123519 +1826864 +191973 +2527537 +1826858 +2256945 +1844639 +782507 +6684 +461829 +1261705 +520730 +1211680 +461796 +2460517 +2691575 +782548 +1844663 +767492 +2061555 +2570415 +1038785 +2570299 +290007 +2570432 +604882 +1646785 +289966 +2379535 +2061571 +2637992 +2413120 +604893 +2570323 +1418924 +1958896 +310323 +1652919 +2354245 +2527551 +1826883 +2637969 +1752170 +2413101 +374487 +1900945 +1844741 +1418923 +2413113 +604869 +1900938 +2637906 +290032 +2570275 +2061543 +2548911 +2278055 +1038837 +2637940 +2358481 +1752135 +1752177 +2570311 +2061550 +2637973 +1239445 +2035418 +2061589 +310324 +1752174 +1844727 +2680429 +1175159 +2278043 +1466982 +488188 +1090769 +1900930 +2527567 +1466939 +2570278 +1026764 +2637980 +46701 +2680423 +1620226 +1310997 +2379498 +1652921 +2624930 +2570329 +2358479 +2379497 +1620225 +2548897 +2379552 +1652937 +1123532 +1038843 +1038816 +1109694 +374483 +2637919 +1719116 +2061551 +1239476 +1239438 +767494 +1038805 +1646804 +2354243 +1652950 +1083498 +289941 +2624927 +143705 +1646800 +1211704 +1466958 +2624961 +2570295 +1211689 +2570380 +1239468 +1026758 +1646797 +284695 +1752131 +1958895 +1038826 +1102575 +1646790 +2570290 +1123537 +2548906 +1026746 +461850 +1719136 +2527581 +289979 +2637962 +2379533 +1038819 +520780 +2548922 +1752152 +1038796 +1646806 +1752140 +1726833 +2379500 +284673 +2413100 +2680427 +1826873 +2548898 +1752183 +290043 +1857243 +1752172 +2548921 +1239479 +1752154 +1292814 +1418930 +1652964 +2413116 +1123533 +2637934 +1900911 +1038786 +1652952 +1652924 +1826879 +2527556 +1466925 +1719124 +2274710 +2624963 +1466905 +290005 +2274701 +2624937 +2637938 +284688 +2256955 +1175164 +1726826 +1844708 +310326 +2061545 +2527580 +284662 +2570354 +143707 +2413124 +1239462 +1102580 +1466928 +1239444 +955192 +1494116 +1466990 +2637913 +358227 +1239457 +1900909 +289965 +1045873 +310332 +1123541 +290015 +2637921 +1726838 +1292834 +1261712 +1467024 +914833 +860615 +2137762 +2358501 +782580 +1467051 +143725 +1494132 +767498 +1973375 +426732 +488202 +1620273 +1175198 +1418941 +1350845 +2137770 +2358499 +1620276 +1703736 +1171044 +2256986 +290055 +2570503 +1418966 +2691581 +2527585 +684082 +2256992 +1175174 +2080088 +2256968 +1494126 +2137696 +604934 +684078 +2137781 +2137772 +2570456 +1517630 +2368376 +1418954 +2137722 +860603 +1131975 +1141801 +2379586 +2368379 +2379576 +2379573 +731190 +1467061 +1826904 +860664 +1038896 +2137703 +2071967 +2638027 +1620247 +310344 +389350 +604937 +2527619 +1857280 +426739 +2358508 +2680438 +914828 +2061618 +1652984 +1211720 +1857276 +2257023 +1467071 +2570483 +2061607 +2379602 +1466994 +290056 +1973363 +1038884 +2061610 +298126 +1752205 +143724 +2028400 +1620274 +358254 +1826897 +2281697 +2570475 +284701 +6722 +520801 +1292823 +358282 +2570486 +2698617 +2137737 +1211711 +2527591 +1301796 +1620267 +143716 +2548928 +1652985 +1418955 +740843 +1211717 +1404562 +2721243 +1239490 +1102593 +1038885 +354025 +1181182 +1688272 +1772917 +1857278 +2256982 +1719151 +1826907 +2570477 +1038864 +1826909 +290060 +2368391 +860630 +860604 +1199619 +1857253 +374491 +2137728 +1752204 +1652971 +2570487 +310350 +1935079 +2735304 +1844760 +2358509 +2256976 +1239493 +1467059 +1973377 +2137759 +1620285 +1620266 +914829 +1620242 +1199620 +2527590 +351666 +2379579 +1620279 +2413134 +389341 +1292833 +1844772 +1710183 +604919 +1418964 +1620291 +2527584 +1947911 +1620255 +1657595 +1857271 +2379569 +234660 +2570497 +860641 +1322578 +1404564 +604914 +2256979 +1467056 +1211726 +290074 +2068355 +1844759 +2061616 +2257006 +2011374 +2638017 +1322589 +2257003 +80240 +1102588 +363954 +2358495 +1719139 +2137743 +389354 +2354249 +2570448 +46721 +1418945 +1719142 +1857266 +358245 +46716 +358280 +1620243 +1038867 +2638010 +1102607 +389344 +2137723 +1973368 +2638016 +860650 +1350829 +604930 +756819 +2137707 +1947909 +1102612 +1467049 +1038859 +2416387 +2278071 +2278087 +2852414 +1647003 +2368414 +1646997 +1646976 +1726843 +2368411 +2274771 +1646965 +310356 +2852441 +2379827 +2638068 +2379814 +1026811 +1752226 +604964 +290116 +2527646 +2416378 +2413144 +1844783 +1301810 +1646974 +1857341 +2867895 +1857353 +2379781 +1646905 +2570786 +1646873 +1301838 +2852423 +2570853 +2638181 +2570846 +2379817 +1940976 +1418970 +2274879 +1857325 +2274758 +354030 +2778417 +2638049 +1109709 +1271390 +2570640 +2852494 +2274857 +1646947 +2274782 +2570787 +284709 +1647038 +2570600 +1026818 +298138 +290098 +2852579 +2638125 +2638054 +2527639 +2638177 +2379840 +2570705 +604953 +310416 +2680445 +2274809 +2570658 +2852482 +1271414 +1271406 +650292 +1181212 +2274736 +1109706 +1271367 +1026857 +2570682 +520871 +1123560 +1940992 +1646878 +1646841 +2570592 +2638074 +2527632 +1826920 +1826919 +604961 +1653073 +2379641 +2379815 +298172 +1653005 +1026817 +290091 +1653051 +1646981 +1271399 +2379667 +2570632 +2274727 +1857310 +2137787 +310402 +1026859 +1109710 +1271382 +2413148 +2274785 +2852490 +1647028 +2570798 +1647051 +1644443 +520876 +2570771 +1271415 +1653080 +2852463 +2852537 +2274873 +2570816 +1292848 +1418967 +1211742 +2527643 +650284 +1271393 +1726846 +1947931 +2379676 +1940957 +2852480 +1653061 +520854 +2638086 +1646874 +1646859 +1292858 +2274817 +2638079 +1271363 +2638132 +1647053 +1211732 +443701 +2274774 +1646830 +2638101 +2570648 +2274808 +2274805 +2278069 +1646931 +650302 +1646850 +1646977 +1947924 +2379857 +1646906 +2379872 +2379744 +2570633 +1857318 +310363 +2570641 +2358528 +1647033 +374503 +1857354 +1109704 +2852397 +2624980 +2570677 +1752214 +1726848 +520819 +2274862 +1857344 +1644439 +2570622 +2379836 +1646855 +1045891 +310370 +2570785 +2721249 +1752229 +2570819 +1026875 +2570547 +2274877 +2570702 +1301824 +2852525 +1653031 +2379671 +2570750 +2684533 +1271412 +2684532 +1644449 +2570836 +2570639 +604956 +2527648 +2570650 +2570512 +2379907 +2852422 +1857301 +2274878 +1726861 +1271297 +2274789 +1752217 +520896 +2638176 +1211737 +2570752 +1857298 +2570571 +1109713 +1646902 +2379746 +1710191 +298157 +2379837 +2680448 +2358520 +1026854 +1123556 +2570686 +666673 +1045882 +1726847 +298140 +290115 +310411 +1646886 +2638197 +1109723 +1644437 +1857297 +443698 +290086 +2638050 +2570523 +2852404 +1271373 +2638195 +290118 +2379800 +1026842 +310361 +2274772 +284727 +1211730 +1646956 +310390 +520818 +1271304 +1857350 +2379710 +2379877 +2379892 +1726869 +2570716 +443709 +2570687 +2638196 +2358519 +1271383 +2527637 +2852508 +1646831 +2852411 +1653028 +2570692 +2416394 +604940 +1900965 +2638060 +2379834 +1646871 +1726859 +2379849 +1935082 +1026827 +1239504 +2278073 +1045889 +1271362 +2379680 +2570508 +520875 +2379713 +2278081 +1653048 +2570528 +2638113 +2570667 +2570719 +2570522 +290089 +2379997 +1090823 +1647139 +1644475 +2638310 +2570885 +2274990 +2638252 +1322620 +2274964 +284755 +2379982 +2035471 +2570929 +1322606 +521028 +2380012 +1026912 +1647098 +2379928 +2080094 +2379950 +2638391 +1647117 +1647184 +520926 +684086 +2035459 +2570900 +1322598 +2638332 +1322617 +2638325 +2274975 +1647189 +2638384 +1322599 +2380078 +2571137 +2571105 +1419023 +2380056 +1940997 +1941014 +1940999 +520976 +2527702 +2571159 +2638340 +1647201 +1026902 +2527694 +1109750 +521065 +1109725 +1109726 +1647149 +1647109 +1045949 +2380100 +1026938 +2274911 +1647072 +2571173 +6731 +2379988 +2274920 +1090802 +1045930 +2571080 +2571175 +2638369 +1026906 +2638346 +1644453 +1109755 +2274919 +1647198 +1090790 +1419033 +1026898 +2638445 +284741 +520942 +1647158 +2691612 +1211777 +1647199 +1644467 +2571000 +2638226 +1647102 +1958925 +2274954 +1090819 +1647106 +2570898 +1419040 +2570883 +2416410 +2570953 +284743 +521072 +1026900 +2570876 +284759 +2380067 +1211781 +2638245 +2638272 +2638357 +1109756 +2274985 +1026958 +2571094 +2638352 +2080097 +2570966 +1026962 +1086209 +2571012 +2638377 +1647191 +2571147 +2571102 +2571024 +2274952 +1958924 +2638276 +1726887 +363957 +1483257 +2571144 +1706872 +1322614 +2571003 +2638406 +1109757 +1045924 +2527693 +1826937 +1090801 +1418991 +1857388 +2274894 +2292599 +2691601 +2638258 +1090830 +2638389 +2570944 +2416396 +2380045 +1726907 +520957 +2527684 +520983 +1419032 +2570948 +2570991 +1026914 +520958 +2137815 +284762 +2571089 +1045932 +1026965 +2638326 +1647148 +1026940 +1026949 +2691617 +1726897 +2691604 +2571006 +2380086 +2638285 +2571167 +1322600 +1090821 +2691611 +298178 +284740 +2380089 +2379965 +520939 +2527704 +2638349 +521046 +1857377 +2638405 +521043 +1647133 +1109733 +2379936 +1647177 +1941007 +521010 +2274971 +2570889 +2137806 +1322618 +2274915 +2571042 +2527705 +1109737 +2380069 +521036 +1211780 +2379954 +2380024 +520951 +2638291 +2571048 +2137922 +2292629 +1752232 +2460546 +80256 +2137900 +476048 +2137891 +2571221 +1791246 +2638461 +1419076 +2638451 +1494141 +2460545 +782595 +2080121 +900821 +2380120 +955205 +191994 +2080112 +1072699 +2571284 +2684538 +191995 +2638458 +2137869 +2292625 +1123565 +6771 +2423291 +1369805 +1826952 +1102615 +1826956 +1537885 +6769 +2571193 +1494148 +2015080 +6747 +215857 +938678 +1419059 +1483258 +2638456 +1958941 +2318309 +2527740 +1537874 +2527793 +476056 +782597 +1791247 +2571194 +2638460 +215853 +955219 +2460547 +1791241 +2527794 +1322635 +2015081 +191985 +521087 +1377814 +1072708 +999471 +1826972 +2103054 +2432202 +756830 +1726918 +1620300 +426757 +955232 +2080150 +1772926 +2292637 +955202 +1958951 +1537888 +267613 +2571287 +2080116 +2080138 +476042 +955224 +2137847 +1681869 +1537878 +2292606 +2318341 +2527729 +2380116 +756835 +2638459 +1620303 +1857403 +476045 +6760 +2137916 +2026672 +1791250 +143738 +284771 +191997 +6753 +2004242 +2571261 +2432211 +955198 +476044 +80259 +2527775 +1826978 +756836 +2137876 +2380123 +2571178 +1857398 +2698623 +2516934 +2571251 +767506 +2571275 +2527754 +2638462 +2080117 +2571216 +2011376 +2318310 +2527741 +2527730 +2274995 +1109765 +1669346 +2638447 +2527716 +521084 +2571181 +1772920 +1827019 +1537901 +1261720 +248775 +1494164 +2571331 +1211796 +1827010 +2068364 +374507 +2571310 +1710231 +2137945 +1857434 +2721261 +2071968 +1660739 +1647209 +2137973 +46742 +1322653 +914847 +1026974 +2571352 +2527838 +6810 +6796 +6787 +2380142 +2571341 +1271432 +1973399 +2137943 +1827006 +6789 +2527803 +1844787 +2292640 +2624983 +2137980 +46746 +1844806 +2137968 +521107 +501353 +267615 +2571305 +1710217 +1090853 +6805 +6785 +2527798 +1827014 +1900980 +2380158 +501354 +1181217 +2527828 +2358601 +1844797 +1026979 +1494163 +1322652 +2571302 +2527813 +2257043 +2137958 +2571337 +2571357 +2137940 +1719189 +2638482 +2638474 +1826986 +46739 +2571317 +2380135 +2571348 +2527817 +2368419 +2137957 +2739522 +1660736 +2527799 +2137935 +1719178 +1827003 +1710207 +476066 +1026980 +1537900 +521091 +2571364 +521118 +914849 +1647215 +1537906 +2527854 +2137939 +1494161 +1181233 +1171049 +521115 +2137976 +2137955 +684107 +521158 +1857476 +1171062 +955246 +2318384 +2571495 +476089 +782636 +6858 +1467090 +1857439 +1175205 +1688287 +6841 +1857481 +1181289 +2138041 +426763 +267643 +1171051 +6853 +1419099 +1620326 +46748 +2138069 +2527873 +2460574 +1239510 +2318379 +1494184 +1404591 +1647224 +1537944 +1181282 +2571449 +756861 +1827054 +2571377 +2080215 +2292646 +2527895 +1175206 +443739 +1647232 +2318369 +2138057 +461868 +1494182 +1181255 +1620330 +1271435 +2571493 +1494174 +2571437 +2571456 +1653088 +1404594 +6827 +521168 +1419126 +746257 +521165 +1181260 +1350863 +1537945 +2571465 +1404600 +2527888 +2138088 +2275001 +2638505 +2138001 +1827045 +720768 +720771 +2571470 +2380201 +1261746 +2638510 +2571459 +521132 +2358603 +1537936 +2138040 +2275013 +2358626 +720767 +443721 +1900985 +1102633 +1647230 +2275009 +1123567 +1857438 +2380198 +1620341 +476078 +1090889 +2380195 +1109792 +1710243 +267644 +1404579 +1857474 +1419103 +443719 +1251308 +2380177 +2571531 +1467091 +2138109 +2068365 +1090890 +1620331 +6850 +363961 +1404606 +2103056 +1827031 +1251321 +1653092 +1827048 +2080203 +2358620 +2571423 +1710240 +1620328 +2571480 +6862 +1857456 +2138028 +6855 +756856 +1726952 +1657600 +1251330 +2638525 +2035477 +1199655 +1494178 +900831 +1181241 +1181288 +2278097 +1404612 +1827062 +2275008 +1941022 +6845 +267634 +1385619 +1827060 +2257062 +2138094 +1537926 +2571530 +1726926 +2527965 +1483312 +2318414 +6929 +2571612 +782669 +2138185 +2571670 +6872 +215870 +2745619 +2571681 +1827125 +2380236 +2318437 +2138168 +1726954 +215868 +1181319 +1181303 +80292 +1537999 +1827108 +2358660 +1404619 +521231 +1537996 +2571613 +2035498 +2292708 +1537987 +2571702 +955260 +192004 +914900 +2571594 +1211805 +1827093 +2281718 +80296 +1772935 +476096 +1271458 +1419138 +1958965 +6875 +2281709 +2571624 +2138200 +2011388 +1669354 +2380216 +80294 +6869 +1419160 +2571580 +1537988 +2080280 +782641 +521229 +215884 +782651 +2571685 +1669357 +215879 +290124 +2138211 +1494231 +2380208 +2292706 +1669363 +2528086 +2138217 +2571579 +2292697 +2380224 +782660 +1827100 +2778432 +1483307 +1538010 +900844 +1620344 +2571553 +2778430 +2318415 +2318420 +1181295 +756885 +2527957 +2380257 +914879 +521221 +2460593 +2528029 +1181330 +2571591 +955269 +384096 +6905 +1404624 +1026988 +1322733 +2358664 +2380210 +6901 +2318426 +1419163 +2528039 +342980 +2698627 +342994 +1045957 +2257068 +782652 +2527964 +1669366 +1827122 +2460625 +2460619 +1669355 +1494214 +756890 +2318402 +2571628 +2380240 +1538004 +2292698 +2380225 +1958988 +1271450 +2432233 +215885 +2035490 +2138161 +1181314 +650313 +1419156 +80288 +2460609 +342986 +2571565 +6900 +1726972 +2380254 +2318428 +2358663 +782668 +2638576 +2138152 +2318393 +2735308 +2035513 +2528091 +2035531 +2380230 +384090 +1958973 +1271456 +2035489 +2571605 +2571655 +80301 +2281711 +1958987 +2318411 +2318422 +2752078 +900846 +2318435 +782661 +2698630 +1136102 +2432228 +2528036 +1271459 +2380275 +80336 +2354271 +1483326 +1827176 +2292740 +1136112 +2292758 +2138221 +1271463 +2318455 +2571798 +2721267 +2138359 +1538016 +1821638 +521239 +900857 +2138383 +2138295 +521235 +2460641 +2318512 +1958989 +2571787 +1301850 +2528141 +2138281 +2279520 +2292771 +326623 +2528094 +2528193 +1467093 +1494284 +1494276 +2080323 +2460647 +1660746 +2380303 +2080307 +2138391 +782714 +1136117 +2528107 +1827155 +2138238 +2709068 +914931 +782703 +2571750 +2358670 +860703 +2698635 +2138382 +1973430 +2358671 +192023 +2571854 +2528207 +1660745 +2138236 +914909 +1271464 +2571769 +2460643 +1181353 +2571810 +2138384 +2138310 +2571777 +1322746 +6997 +443783 +2318502 +1710259 +2698632 +1419223 +2571748 +1090901 +2528134 +2138300 +2138369 +80340 +2138316 +1644484 +1171065 +80350 +2571779 +1181352 +2138371 +2528128 +2318471 +443774 +2742536 +1494265 +1494271 +2729015 +1538025 +2292769 +2292733 +2745623 +1538013 +914941 +2721271 +2571734 +2528118 +2571802 +2138284 +2138348 +2009818 +2358702 +521247 +2380291 +2571824 +2698642 +2138305 +914927 +2318503 +6939 +900864 +2318495 +2138251 +6940 +2423295 +2423296 +2009820 +2571797 +2380280 +80332 +1494267 +1958997 +1538030 +2528172 +443772 +2571858 +80337 +2281741 +2432267 +782718 +2080327 +1136108 +2571722 +2318459 +2735311 +2138362 +2380270 +2528093 +914925 +476099 +2571819 +2318507 +782672 +2138249 +1483314 +1483331 +2080344 +2138356 +1419225 +6943 +1419207 +2292788 +2571831 +1647239 +1467101 +426766 +782717 +782676 +1419189 +782698 +2138241 +2432252 +1419176 +2138317 +1419192 +2516945 +1419234 +2380284 +1973421 +1827140 +1483329 +2292750 +2745621 +2571829 +914918 +326625 +443779 +2528150 +46754 +1322747 +1647286 +2571944 +1419277 +2380432 +1647394 +1419275 +2571948 +2380326 +2572137 +1109817 +2528218 +2380338 +2572220 +2684544 +2572103 +1292865 +2571967 +1857508 +2572158 +782732 +1727018 +2380322 +2528231 +1211833 +2638762 +2380580 +2416440 +1419261 +1045972 +2380585 +2275175 +1653101 +2528241 +2380324 +2572174 +2638614 +1857507 +2275140 +1644492 +2572116 +2380435 +1727003 +1271476 +2572076 +298192 +2638730 +2638774 +1647330 +1857519 +2380513 +2638722 +284800 +284890 +1027019 +2380387 +1045981 +2571976 +2572216 +2380372 +2380321 +298182 +2572181 +1726993 +2572040 +2571940 +2572212 +2380399 +2571920 +2638759 +1027058 +284911 +2275119 +2035550 +2275154 +2638616 +2380537 +2638728 +1647264 +1647251 +1027053 +2275169 +1045996 +1419239 +2528223 +2572002 +2275029 +2638740 +2638712 +2572133 +1027027 +1857527 +2358720 +1647267 +2572044 +2572027 +2275096 +782731 +2572126 +2684553 +2572195 +2638653 +1419267 +1857512 +2571983 +2572066 +2528224 +2275180 +284781 +2572034 +2528246 +1727020 +2638686 +290132 +284858 +284809 +2380594 +2572214 +2528257 +1027060 +1827181 +284790 +2380349 +426790 +2572112 +2572051 +2528238 +1419280 +2380325 +2528211 +2275115 +2571902 +1647265 +2572094 +358293 +1271487 +2380554 +2380429 +2380590 +1857524 +1271471 +2638723 +2638657 +7010 +2380506 +1647386 +2275070 +2638718 +1419260 +284780 +2380460 +2380483 +2572143 +1647395 +2358723 +2380341 +2572006 +2380404 +2571936 +2275121 +604986 +2380505 +7008 +1027070 +1647367 +1301855 +2572144 +2380527 +1941063 +2275057 +1647314 +2572107 +2275113 +1027055 +1647381 +2571933 +1027034 +2275102 +2380548 +2571994 +2638736 +2061631 +1857503 +2572001 +2572142 +2572230 +2380501 +284824 +2380568 +1419285 +1647283 +2572134 +284782 +284878 +7006 +2275193 +1027069 +1857504 +2571942 +1045964 +2638662 +2528220 +2275130 +2358706 +2571972 +2572028 +2275100 +290154 +2380487 +2698649 +1959038 +2638827 +1419297 +521271 +384112 +2572269 +2572285 +2380601 +1973461 +2684563 +2638786 +2358768 +1688300 +521280 +2709096 +1827187 +2572298 +1261769 +1959018 +1419299 +2380696 +1301884 +2721288 +2572292 +2035555 +1973463 +2380604 +2528270 +2752089 +1973451 +2689078 +2572358 +1973442 +1959034 +2721306 +2709094 +1046004 +363969 +2380650 +2698653 +384111 +2638843 +2380676 +2275271 +1647429 +2691672 +2572355 +2638839 +2358737 +2572375 +1419296 +2684564 +2380680 +2138397 +2689079 +1973441 +2689077 +2138426 +2275255 +2380667 +2698651 +1973432 +2358752 +2035556 +2691631 +2691670 +2684561 +521296 +2638829 +2709073 +1973458 +1647409 +2638782 +363968 +2572373 +2035553 +2528267 +1959040 +363970 +2380702 +2138420 +2380607 +2380638 +2380613 +1710276 +2721313 +2691661 +2638789 +1973433 +1647432 +2138418 +2572281 +2691648 +2691635 +2698662 +2138453 +1959045 +2572526 +2528412 +1129999 +2138514 +1973488 +521443 +2698683 +521457 +2528306 +2721345 +1271514 +1959097 +1973591 +521505 +1973501 +521309 +1999136 +46762 +2011401 +1419312 +1129996 +2572533 +1973480 +2528372 +1973562 +2281746 +2709165 +521440 +1090923 +2709163 +1090926 +2528403 +1494296 +2698690 +2292828 +782740 +1109856 +1538047 +521427 +2281749 +1653104 +2080460 +2572543 +2292809 +2257083 +2138499 +2015082 +2867925 +605022 +2528338 +2709120 +1973542 +1090922 +2080421 +2572430 +521438 +2380812 +2528376 +1772941 +1322784 +2035589 +2709122 +521484 +1077392 +2138618 +1350892 +1271508 +2572500 +1959107 +2528324 +2138451 +2380794 +2729018 +2572433 +521316 +521388 +2709151 +1973566 +2721362 +2460677 +2138492 +710082 +2380806 +860732 +1301903 +955293 +363972 +2080437 +2035562 +1419316 +267664 +2572428 +2292816 +1973557 +2275279 +2572378 +605048 +521447 +2380810 +521482 +2572388 +1727024 +2572463 +2292821 +1959050 +2572394 +2572542 +443807 +2318537 +1369823 +2138603 +2721355 +354043 +782756 +1710293 +2572464 +2572490 +2292829 +1727030 +1973568 +1657602 +1959069 +2138622 +521450 +521338 +2358781 +1710302 +2275281 +1973537 +2035579 +2709173 +2275285 +2528280 +521327 +2638883 +2035557 +2061650 +2138547 +2572551 +2035564 +2380715 +2638882 +2380740 +2138627 +2004248 +1322771 +1350881 +1090913 +650333 +1109842 +2528287 +2318532 +1129987 +2572517 +1350887 +605058 +1973482 +1973560 +1350877 +2698682 +2138599 +1109850 +2572440 +2138516 +1959115 +2572530 +1301888 +2354283 +2080440 +2138613 +1999141 +2358780 +2035595 +1301906 +2358818 +1973536 +1494322 +2572510 +2138443 +1292873 +2358790 +521310 +2680453 +2572383 +2080396 +782754 +2752099 +1857548 +2318533 +1999138 +521347 +2572382 +1772944 +2292807 +2638864 +2080404 +2035587 +2281745 +1350871 +1973555 +2709154 +2572441 +521405 +2638891 +1973593 +1959092 +2528295 +521360 +1322792 +1959131 +650355 +2380809 +2080405 +1973500 +1467120 +1494306 +2691677 +2138494 +7013 +2852599 +1090915 +2432285 +2011418 +1973577 +1301913 +2638855 +2035570 +2691686 +2080420 +2138534 +1959071 +1827239 +2015090 +1393855 +2638870 +2745638 +1959084 +2739540 +1959068 +860731 +2380752 +2138566 +2721350 +650338 +2528383 +2380712 +605005 +650337 +2080470 +2358785 +2460671 +1827217 +2572395 +605026 +605015 +1973563 +1109837 +1271522 +2138479 +2709142 +2292814 +605014 +521399 +2380831 +2380855 +2528449 +1090933 +720789 +1538089 +1494334 +1027095 +2380880 +1109869 +2638933 +1419346 +2380850 +1494333 +2528427 +521581 +521520 +2138770 +1090949 +443833 +605065 +2572585 +2358844 +2138742 +1494332 +2572669 +2528467 +2138789 +2138782 +2572584 +1538065 +605074 +2292835 +2572674 +2138783 +1301919 +684168 +2292832 +2416455 +521547 +2638909 +521548 +1647450 +2638904 +782807 +2638943 +2257085 +2380854 +2528464 +2572619 +2318556 +1727034 +1027090 +782796 +2035625 +80368 +860742 +684189 +2528447 +2035616 +684191 +1688317 +1109864 +1819503 +1419338 +1857577 +2080491 +2138737 +192039 +1419324 +2138643 +1494341 +2138650 +2638924 +2516953 +2528438 +521570 +605073 +1538056 +2138688 +1494329 +521530 +2138740 +605071 +521529 +521526 +2035619 +684172 +2138764 +2528445 +860760 +1419350 +1538085 +2380829 +2528442 +2004252 +782786 +2572646 +461875 +605070 +1947960 +1322828 +443819 +2380841 +2080499 +2380827 +2035607 +1973612 +1419343 +2638912 +1369829 +521555 +1538060 +1538080 +2138705 +1620351 +521576 +2572614 +2138778 +684165 +521587 +782777 +2358841 +2638921 +2380828 +2572648 +2068393 +1322834 +2752109 +2275288 +2035622 +2572562 +1669379 +1538096 +2572570 +2528425 +2528466 +2638898 +1494331 +7059 +1987906 +1857672 +1322896 +955337 +2528511 +1322876 +914982 +2572803 +914975 +1538117 +1911898 +2516966 +521645 +650369 +720795 +731197 +999496 +955327 +1827275 +521618 +234674 +2528505 +1211891 +860773 +900913 +1900993 +1857608 +2257087 +2572690 +2358866 +2528495 +2138857 +310452 +782869 +2416463 +2138841 +2318632 +782827 +914971 +1827272 +1199662 +1419391 +443852 +1487507 +1791297 +684237 +2572809 +2308778 +1538237 +1322899 +2380943 +2318641 +756905 +143785 +2061671 +2138935 +1419370 +938687 +267668 +1322882 +1538154 +684234 +2528527 +999503 +2380884 +2318612 +1911913 +1538122 +80432 +389366 +143800 +684217 +521608 +1900990 +1538214 +684203 +1494348 +2138919 +2638987 +1857686 +1857606 +2572712 +955332 +2318626 +710086 +1053974 +2528533 +2572743 +1051716 +333182 +1050122 +900912 +80378 +1857634 +710084 +461887 +684230 +7046 +1211882 +1857675 +1857640 +1271544 +2380968 +1857670 +80387 +1999149 +2380933 +1467153 +914980 +2138825 +1791300 +2035656 +2138900 +1827253 +938686 +1419397 +234677 +80381 +1827274 +782868 +2638972 +1959143 +2572762 +2380962 +1322898 +782857 +2138948 +1959149 +2138896 +999502 +234675 +2721380 +1791291 +1538176 +443842 +1211885 +1827304 +1827302 +1772948 +80391 +900916 +1827290 +143793 +1419375 +1538111 +2138859 +2318603 +1827270 +7062 +2035636 +2638993 +684215 +1322860 +521649 +1393857 +298205 +2572705 +1090982 +521627 +1538147 +267665 +1538139 +2138798 +2380942 +1935097 +1123577 +1538131 +684239 +1494351 +476114 +2572812 +1538223 +1857597 +1538158 +2358867 +1419371 +2138908 +2278892 +1419389 +2138915 +2318589 +2292851 +1538226 +2572711 +46773 +2138931 +2380905 +684202 +1538162 +2572741 +782838 +1402046 +267670 +2035662 +521665 +2292850 +2318606 +1827291 +1727052 +2292854 +1538239 +2460706 +80440 +955336 +80413 +1791292 +2035630 +80443 +2380897 +1027110 +1857660 +2413172 +955342 +1827269 +1538168 +1409016 +521633 +80394 +684225 +2752112 +1764656 +1211864 +2380938 +1090966 +443847 +2638952 +7042 +782837 +2528508 +1102640 +1827317 +2138933 +2380891 +363978 +80393 +1494349 +374529 +215903 +1517663 +900910 +2281755 +443856 +80384 +2624986 +2528516 +2380925 +2257090 +1538167 +2528554 +1857680 +2138849 +2318578 +521634 +374513 +1181396 +476111 +2138960 +2380947 +1251369 +476115 +143801 +2138876 +1727069 +521601 +290166 +1211857 +2318645 +1538126 +2572716 +80407 +1538190 +1681878 +1322888 +782853 +443849 +80400 +860777 +2380997 +2639013 +2080530 +756918 +684246 +521695 +408998 +2061674 +1109917 +426810 +2639037 +782886 +2680458 +1261790 +2139044 +2061673 +1791309 +346735 +2318679 +46785 +1911933 +1857711 +1935104 +1090991 +476125 +2318690 +1813349 +1239524 +1027116 +1791323 +1538306 +1727075 +2380981 +2318665 +1973619 +1791317 +2528589 +720805 +2639007 +1211899 +860789 +2138999 +521677 +1791327 +955385 +1538313 +1494383 +2318718 +1791324 +1959160 +1791332 +1827321 +2528563 +2139034 +2572873 +2380998 +1538300 +1959159 +2572855 +2528560 +46782 +1494376 +2138968 +2139045 +1538261 +756928 +80460 +2460727 +521692 +1657603 +1538285 +2292873 +80463 +955351 +2528578 +900925 +1764661 +684266 +1791319 +2460721 +521671 +1538259 +684258 +2460728 +2460717 +2318677 +2138973 +443861 +521707 +7091 +1467156 +2351188 +80451 +2318678 +2639027 +2139055 +2528561 +1199668 +1261793 +1791311 +2380985 +7099 +80474 +1322903 +2380975 +2139028 +1211897 +1827319 +2639039 +900923 +521701 +782875 +2318684 +2139007 +955375 +1175220 +2139058 +7095 +2139050 +1538291 +1211916 +7093 +1669402 +2139126 +915007 +2139084 +401870 +782928 +2867933 +2572899 +999507 +1369845 +2572934 +650380 +2528606 +1857727 +143816 +2381028 +1999159 +2318740 +2080554 +2318743 +192083 +1669401 +2318738 +2139069 +1322919 +2528610 +298212 +1419433 +1688327 +2318745 +1271548 +2381027 +7121 +2572950 +215919 +2381035 +1827364 +684293 +2381011 +521712 +1772965 +2381004 +1538367 +1494410 +1827356 +1857731 +1211927 +1900996 +955422 +2639066 +756936 +1727099 +2528639 +2381031 +2680460 +782910 +782920 +2009825 +143817 +1322936 +80509 +2572892 +2292883 +2528642 +782929 +2432312 +521714 +2852629 +2139111 +1791340 +1973634 +2572891 +1063409 +2852618 +756938 +2572890 +2528643 +1494414 +1271554 +2572907 +605109 +1419419 +1973635 +720809 +955427 +2281766 +1419421 +192084 +1083508 +1538370 +1109921 +521728 +2572895 +1538335 +2572923 +1857749 +2080551 +1999160 +782911 +2139087 +2139107 +1772962 +2139147 +1857719 +215920 +1959168 +2528614 +2639071 +2381024 +2572925 +2381002 +1538361 +1857740 +2368438 +521749 +684277 +1181422 +80514 +1322932 +2852642 +2358893 +1251383 +1239527 +443877 +2139148 +2460768 +684316 +2528609 +1827387 +900933 +1369840 +2015096 +2292879 +1819507 +1999152 +1710343 +955406 +1710349 +1467159 +2852641 +234682 +1999154 +1181423 +2528637 +7126 +860798 +2680461 +1261795 +248815 +2381059 +1653106 +1517672 +1271560 +2639103 +1051718 +955437 +422075 +2139220 +938698 +2639089 +2061678 +1620400 +1350945 +605173 +1538422 +2624987 +1131979 +1102656 +782949 +2572985 +1791344 +192093 +2516969 +1538412 +46796 +2308781 +1538416 +2139153 +2139194 +1517668 +1322958 +1494425 +2139230 +1710352 +1211947 +1783404 +1145796 +1199671 +290178 +2278895 +1719217 +1710358 +605179 +2368441 +2139227 +1322971 +1123602 +2021486 +1710360 +1538396 +2381056 +1350943 +1857779 +2257106 +2639115 +1620418 +2080570 +1935116 +1752259 +2639090 +1211928 +756941 +1350950 +422074 +1517671 +1844837 +938701 +1844847 +1538394 +2080564 +1038976 +1083512 +605178 +605138 +2080563 +605142 +1211950 +1999171 +605147 +955434 +2257107 +234685 +1322965 +1271557 +1261800 +1647473 +1935119 +1027125 +684327 +143848 +1719213 +2139206 +1538398 +1109940 +1901013 +2292909 +605155 +860839 +605117 +1467179 +1959180 +1467177 +1973642 +2528656 +1538393 +1973643 +204756 +2639104 +1935109 +2741515 +1301941 +521779 +1719214 +860843 +1419455 +1271564 +1538401 +46804 +338719 +2639087 +2838540 +290173 +2103072 +684329 +1322951 +461896 +1211933 +2528649 +1199680 +2139218 +143851 +1827424 +2139237 +1827405 +2460785 +2680474 +215921 +2680466 +938713 +1123597 +2275303 +860842 +401877 +1827404 +2528657 +1181424 +1239531 +2139159 +2680462 +1039026 +1239567 +1752278 +310511 +860884 +2292912 +2709210 +1027148 +1827432 +234693 +143926 +143937 +143895 +310504 +2838543 +1827428 +143884 +461915 +2061689 +1350955 +605451 +860923 +731203 +1857821 +1123618 +938756 +1027136 +1538442 +955444 +267704 +743554 +999578 +46818 +860878 +2528676 +521814 +605311 +1827431 +1681889 +955448 +2358910 +1211958 +1123621 +1620474 +860951 +1039005 +521848 +46809 +938743 +605449 +2139296 +2139326 +1517683 +860848 +666701 +605408 +2639131 +605492 +310499 +2278111 +1857797 +731218 +1494433 +1467209 +2139332 +1647480 +488255 +215926 +1102688 +2139273 +605258 +2257150 +860863 +605431 +374594 +605192 +374591 +938746 +1199696 +1154132 +1102669 +2639126 +1343363 +1538458 +1467226 +605485 +2139262 +1727129 +1727124 +1935123 +767522 +1027140 +1517697 +1727130 +521790 +2709219 +1681885 +1620459 +1199695 +143957 +80526 +143899 +521789 +1517708 +434361 +143924 +298216 +1239557 +1467198 +1199698 +605362 +731212 +1901027 +310498 +2139289 +666696 +605247 +938734 +2639124 +1467223 +2139290 +605356 +324856 +605196 +605202 +1669422 +605281 +915028 +1653121 +2139294 +860905 +1827435 +1857822 +605468 +860918 +1719223 +374609 +2709196 +938760 +2139282 +2528681 +1538432 +999572 +2416469 +605399 +443886 +1844866 +2257145 +1844874 +1538450 +1844862 +1109946 +1517688 +684343 +1827427 +2061699 +2275317 +1311047 +605523 +461934 +1947962 +1102689 +143938 +1467208 +1973658 +605343 +461948 +605228 +605352 +1987920 +1703764 +999536 +1199707 +1703766 +720815 +860935 +1620489 +860846 +1538439 +521804 +605480 +1027139 +143865 +731202 +860944 +374559 +46834 +521827 +1901037 +1901025 +1102670 +1752270 +46812 +756943 +2103078 +605321 +1791351 +1102682 +204762 +1039042 +310478 +389388 +443888 +1102694 +2368452 +684334 +1844854 +1703773 +2103094 +938759 +310482 +374607 +1494443 +710110 +684335 +605367 +605512 +1123620 +605209 +521820 +2368445 +1719218 +605263 +2572997 +374556 +860854 +1901036 +605386 +1973654 +461938 +710114 +1857819 +2061694 +605306 +1760516 +1102696 +860872 +1857823 +143917 +1087660 +605381 +605470 +1027150 +267699 +999549 +1935133 +605299 +860955 +605462 +2139301 +143869 +1039063 +605452 +1752279 +915027 +731215 +2257137 +1620481 +1857811 +605401 +605290 +2420663 +860882 +999543 +2709204 +605312 +2139257 +1996384 +2139263 +2275310 +999581 +1901032 +2139271 +143864 +1857817 +1409021 +861002 +1301953 +1620509 +1655568 +1620512 +521957 +1039110 +310523 +605635 +710143 +1467236 +666749 +2639155 +605612 +2680491 +1935141 +1857851 +1350977 +666719 +1620604 +605636 +743558 +1039101 +144036 +1727139 +915032 +310530 +861028 +1039078 +521869 +1467240 +2061733 +2061710 +1039124 +521875 +310527 +310535 +861064 +2035717 +1901069 +1311056 +1419481 +2061729 +2139389 +374629 +2573007 +1419470 +144011 +2381153 +605733 +2275319 +860988 +1941098 +2573028 +2735345 +1935143 +1369850 +2139337 +521945 +2080603 +1538480 +1027152 +144001 +861062 +521917 +144006 +1620609 +2639160 +2035735 +2639164 +1301954 +605711 +1935160 +2139367 +144052 +1620581 +2061709 +1857849 +1350967 +521879 +605551 +143992 +1311077 +861063 +2709229 +2691706 +2257220 +650403 +2680496 +999614 +461964 +605613 +1467241 +144030 +2257219 +1538515 +234714 +2709222 +2139396 +521880 +1039098 +144031 +605591 +605651 +1301964 +650410 +1620620 +684358 +860994 +1911949 +1620605 +2721392 +1301979 +2139338 +650402 +2368470 +1727145 +1941097 +46871 +1375305 +521918 +1517728 +1620603 +650409 +2139376 +1039085 +1620611 +461975 +501360 +2035718 +2257188 +2709223 +1375297 +2257186 +605587 +605709 +605632 +1239604 +650401 +666744 +999597 +2413184 +861042 +1647486 +2381113 +1292887 +999633 +1857833 +1311068 +782969 +605671 +1911954 +1857846 +605708 +782990 +374628 +710139 +1467260 +2381149 +143988 +782966 +782986 +605696 +2139344 +1467251 +2573008 +1301957 +1620600 +143995 +861016 +684365 +1620561 +605594 +955455 +144069 +1131981 +710138 +1039080 +2381143 +144047 +1467263 +1301978 +860982 +1620617 +2573032 +605751 +1752312 +1369857 +782971 +650406 +1375306 +1857837 +2573006 +1131980 +144056 +1350965 +144004 +2358920 +999599 +2004268 +2709231 +2381160 +310531 +605686 +1083519 +861078 +501370 +405371 +2639158 +605702 +1935140 +720821 +1311075 +2778446 +521914 +2139343 +521962 +144038 +2257178 +2358925 +2139362 +1935163 +374620 +1039072 +2278127 +2035716 +710161 +1655566 +1935153 +1653129 +1039122 +2381177 +2358918 +1311054 +2381171 +1620554 +461967 +1311055 +2278120 +684364 +144042 +2257184 +2139411 +144053 +861068 +2139407 +1301956 +1467318 +1620629 +1419527 +1752322 +2680533 +144088 +1538553 +1727196 +2318804 +2381214 +1538563 +2573058 +290217 +2358931 +2639237 +2838552 +767526 +521979 +2358953 +2061742 +2698724 +2639230 +401880 +1752317 +2573057 +1901116 +605773 +2035754 +2080609 +2639199 +1538531 +192110 +1620623 +1239634 +1419519 +861097 +2139517 +767527 +605755 +2698727 +2257236 +1538543 +1669427 +522017 +1973676 +2318799 +80553 +2061737 +2139429 +1857903 +1538570 +80556 +1911962 +1727197 +915034 +2318784 +756946 +2139497 +80561 +2709240 +1091049 +2318779 +1419501 +2573035 +1211983 +1419515 +1369870 +1620638 +7148 +80567 +2381203 +605768 +310548 +2139478 +521970 +1467314 +1211985 +215933 +1538573 +2139471 +144095 +144109 +1620639 +861094 +2139513 +2035745 +2639185 +2381245 +1154134 +1175231 +2416474 +2273385 +605774 +1620643 +2639169 +1467297 +144094 +1181438 +2139470 +374641 +2318808 +2275335 +422088 +2318806 +1935177 +522006 +861107 +2639235 +900946 +1063427 +2573075 +2139519 +999647 +522020 +2139441 +2413194 +215934 +7159 +783006 +2292921 +2709238 +422084 +2318789 +684383 +756961 +2639222 +861100 +710166 +756970 +80571 +2035736 +2381268 +2838546 +2139420 +2003132 +2639231 +2413195 +2381234 +1727166 +1261813 +2639188 +1494466 +1494467 +756954 +2639193 +144099 +1039129 +1141810 +461987 +1901112 +2680529 +1419539 +1494457 +501381 +684373 +1211998 +2061744 +1467289 +2004270 +1467293 +1620642 +1901104 +1538568 +2035740 +1901100 +2026687 +1175225 +767535 +2639240 +1494469 +1950818 +521991 +1901095 +2573052 +999660 +144110 +1091051 +1271587 +1467308 +2573059 +2318793 +2381265 +1239614 +521967 +1999177 +2460798 +1538578 +1857893 +900954 +2278902 +756965 +2381205 +346751 +476141 +1419516 +422085 +2139452 +1239641 +2381241 +2139515 +1261830 +2278904 +2698729 +374644 +605784 +522051 +290224 +1027205 +2139559 +938815 +2139599 +1827456 +1123638 +1987935 +1239648 +1351001 +684386 +488277 +324862 +1727200 +1369872 +522096 +522099 +2680536 +1935184 +2275348 +522056 +522094 +522114 +1857951 +1538610 +2709277 +2381287 +1973688 +605837 +1199728 +1375309 +731237 +2721403 +1365756 +1911965 +1109971 +2639271 +2080641 +2381280 +2061750 +1959187 +1538619 +1752330 +605842 +861111 +2368484 +1857971 +605826 +783019 +1857974 +2528722 +2573118 +2709243 +389397 +2278134 +1039145 +1999184 +1351014 +1827460 +1901128 +1271593 +443897 +2528721 +684395 +2709252 +1901124 +650436 +2528719 +650467 +1959191 +1365755 +1350994 +310567 +753244 +522026 +650475 +2061751 +1987934 +1827455 +2139560 +1901139 +2528720 +522029 +605865 +2351205 +753246 +2573127 +1857962 +522070 +1199722 +2573123 +2381316 +2709293 +2573102 +1710392 +2275343 +1109973 +522080 +2838558 +915050 +522063 +1467329 +605816 +522071 +522054 +720833 +731233 +522068 +389398 +684396 +2358964 +310566 +1123636 +2139557 +2698730 +2275339 +1181447 +1727216 +1901136 +1027201 +650449 +1027187 +2573086 +2381278 +861118 +522033 +1301987 +1538622 +522077 +2709286 +605817 +2139573 +522103 +443903 +1350993 +522101 +1351007 +2639243 +1311079 +605830 +2139578 +666751 +1212005 +1727211 +1039163 +2639247 +1727208 +2381300 +522126 +2516975 +2548979 +2528786 +1302030 +1844891 +522164 +1381070 +2068413 +1620665 +783028 +2139734 +1688368 +2573209 +1419576 +2573167 +1419615 +7172 +1538658 +2745654 +522147 +2139640 +2528727 +2035794 +999683 +1419632 +1710402 +2573138 +1620681 +2139637 +650490 +684442 +2318846 +2528742 +2139663 +2573200 +2381369 +2139744 +522142 +2292970 +684411 +1660789 +1302003 +80588 +1483349 +2139618 +2080684 +2735358 +1419590 +999678 +192122 +2528777 +2528738 +2035784 +2080660 +2011438 +1323039 +2381359 +1752332 +522158 +1239651 +2257271 +522187 +2739545 +1827474 +1517743 +1419585 +1857997 +2381372 +1688361 +2080695 +1419627 +1688345 +2035778 +2684610 +783038 +2318847 +144129 +1419634 +605881 +915054 +684421 +2139709 +2639280 +2035768 +955505 +1351029 +1669435 +783069 +1419605 +2548980 +2061761 +1419616 +1311082 +2139706 +2318835 +2381335 +1973711 +522211 +2080694 +80579 +1688342 +2292956 +7168 +2460821 +2721424 +1419567 +1323069 +1688353 +2139602 +2381342 +2573156 +2528761 +861138 +2139600 +861130 +1710399 +2684602 +1323060 +2573211 +2684612 +2518418 +1719236 +2035789 +2752153 +2292948 +2139676 +1072728 +2528768 +783052 +2358974 +2257255 +1857987 +2139705 +1419583 +1271614 +1323074 +2080666 +2460827 +2292961 +1703796 +1302018 +2080661 +684406 +1996391 +2432321 +2011430 +2573148 +2139675 +1419623 +1467337 +1827484 +2061757 +1419572 +2381325 +1351039 +1301998 +1688367 +1419561 +2035807 +326635 +2639292 +2061754 +2004277 +1311085 +1703795 +522138 +1467344 +476154 +2759695 +1419589 +2698740 +144128 +1710404 +1271607 +1620661 +1467363 +1959221 +1271611 +2035802 +2139623 +1959202 +1688362 +2432322 +1703799 +1323062 +384137 +2698753 +2573226 +740857 +2721420 +2528747 +522209 +1323056 +2035796 +2729023 +2273389 +522157 +2528736 +1419645 +364006 +2432319 +522207 +80582 +1419613 +684415 +1271629 +783046 +2432318 +1959223 +2573154 +955507 +2752143 +2752145 +2528725 +1302032 +1091073 +1083524 +2139758 +1791366 +938823 +1858006 +1710410 +1419690 +1027211 +1620697 +783091 +2381395 +1669441 +2035827 +2460837 +2528833 +2528809 +2573293 +2004281 +2639325 +2009830 +1419678 +1311088 +999696 +2275362 +7184 +1046040 +1727239 +522223 +80610 +2573283 +1727235 +290239 +2061766 +522231 +1302039 +756981 +1959228 +2257285 +1419672 +2528812 +1653144 +2358991 +1727242 +684450 +1467388 +1647511 +2528819 +1027209 +2257272 +710178 +2061791 +1973726 +1620709 +1109988 +605895 +999693 +2639304 +2368490 +605918 +2139814 +2318853 +2528803 +1483353 +1467411 +1467407 +2035834 +861152 +2460834 +605917 +1517746 +1827487 +605921 +2573259 +861169 +2139772 +2139801 +522230 +2852653 +2528838 +1302038 +1494485 +605892 +2139826 +1719237 +1620687 +1517745 +2573279 +955519 +46910 +522218 +290230 +605912 +2035813 +1538670 +1620693 +2381392 +46911 +684453 +2358989 +783089 +522268 +2460840 +1973727 +192124 +2139797 +2257282 +783082 +2061779 +2381376 +861158 +861164 +2852651 +522270 +2528813 +605893 +1727238 +1351056 +783132 +2061811 +767546 +1858019 +783110 +2278143 +2257323 +861206 +731240 +861177 +2257392 +46917 +346755 +861242 +783120 +2026702 +522278 +290258 +2035849 +1409032 +2318870 +2257324 +2528843 +2080743 +1419717 +2257383 +1620725 +684460 +861240 +2139863 +522290 +310574 +1419709 +2573315 +1039200 +2518419 +2516981 +1419697 +2061813 +2257349 +684464 +2381415 +783138 +2573326 +2516984 +2381419 +2061817 +2359009 +2381413 +767545 +2381428 +2103127 +290244 +1419725 +861192 +2381405 +2257351 +605946 +2413207 +2139850 +2139884 +2573340 +1620715 +46922 +2639333 +2139889 +915070 +1647512 +2573300 +2381427 +1620723 +2139912 +2257375 +605928 +1467458 +1323119 +2080744 +861200 +2061809 +2516989 +731241 +1620734 +2139876 +2103122 +861276 +1858012 +1351057 +1467481 +2573322 +1620759 +2639339 +861258 +1719258 +1419696 +783129 +1039193 +915069 +2351215 +2639356 +1271639 +1343378 +2528866 +1039180 +1467471 +861262 +783121 +2318877 +1827497 +2139891 +2080753 +2548986 +861231 +2318865 +1467478 +144181 +783117 +2639352 +522301 +2061802 +2080745 +783107 +290261 +861215 +605940 +2516979 +2028407 +783124 +1710418 +861244 +2381461 +2139984 +2035876 +2528890 +2573379 +1827507 +462014 +861287 +1959274 +462013 +783190 +522326 +605964 +2573419 +1710435 +2639361 +605960 +2139946 +2528936 +2381468 +900977 +462012 +2351219 +2639363 +2381459 +1419740 +2368496 +2698772 +2432336 +2139941 +1053989 +522304 +1494506 +2292996 +2139972 +2080781 +1239654 +783153 +2528892 +1973749 +2035863 +1494501 +2528914 +861292 +1494510 +1494509 +2359023 +1858021 +2573414 +443916 +522342 +684471 +1141811 +522319 +2080758 +756986 +1620781 +1323134 +2080764 +1494514 +1494507 +2257394 +1710429 +2528903 +2281784 +2639370 +1827499 +2139978 +2381477 +2139935 +1271643 +443919 +522340 +1791379 +2080774 +522334 +2080785 +1710436 +2528945 +783172 +1091081 +2639364 +522305 +1973754 +522307 +2639358 +1973742 +2359031 +2528924 +2139975 +2139947 +1181461 +1669444 +1727256 +684476 +1271645 +2573400 +2139940 +2035868 +2381458 +1323132 +2292995 +2460846 +1494497 +1302049 +443927 +2035893 +7223 +1973756 +606032 +2698775 +1858032 +2080873 +2368502 +144187 +1947987 +1710443 +1538725 +2257403 +2721438 +2140009 +2698801 +2257401 +2413216 +861359 +2573453 +783243 +1467526 +2359096 +2257409 +1620818 +2529044 +2528990 +522350 +522351 +2257408 +2275384 +144209 +1292936 +1959299 +522453 +2140104 +2061846 +2140070 +1858041 +1941130 +2709367 +2080875 +443926 +1086234 +2359065 +2852684 +1261842 +2745665 +1109995 +2529095 +2257467 +999729 +2639388 +1494528 +2140046 +1538733 +605993 +606025 +1351060 +1959287 +2852667 +684481 +2359067 +2080807 +2257413 +2351220 +2140137 +2573489 +2529113 +861369 +2061835 +1419751 +144191 +2852668 +2778455 +2528991 +2709384 +606023 +144221 +1494533 +1091096 +2529094 +2035888 +1467625 +2529009 +2080806 +248827 +1710452 +2573521 +999737 +2548993 +389410 +2103157 +861421 +522446 +1858046 +2381499 +2140026 +1419775 +2257419 +80642 +144228 +2548995 +267731 +2698787 +2381512 +2528989 +783223 +2275381 +767564 +2573483 +783269 +2080796 +2739555 +2528966 +1292912 +1419789 +861388 +2548998 +1292908 +1948000 +2573511 +938838 +497162 +1727260 +737447 +2721436 +2140148 +1941121 +522397 +2359115 +364013 +1271720 +1419803 +2381524 +1467615 +1538728 +2359102 +1302053 +1620808 +605974 +2698802 +1271662 +606053 +2529075 +1948005 +1251399 +1271672 +861325 +1538754 +861311 +522344 +1271660 +2573460 +1620782 +1323179 +2730814 +605968 +1323196 +2739561 +1647519 +2368503 +861334 +955531 +2257445 +2140152 +2257439 +1271722 +2318922 +756995 +522367 +2359054 +2359098 +783266 +2035899 +2140160 +1419829 +80636 +1123647 +1271675 +2719290 +1467551 +1467504 +2381496 +1494524 +1271690 +2730808 +1620805 +1091098 +1292945 +1494518 +2573539 +1467527 +2275380 +46938 +1973795 +522355 +2080865 +606011 +1467530 +1323174 +2529005 +1973769 +80640 +1517776 +384144 +1538753 +2318934 +1323195 +2080815 +1343385 +2275392 +522421 +605980 +1653150 +2573458 +2573439 +1467568 +2852670 +783240 +1271665 +1323193 +606018 +1494522 +1727259 +861370 +2573440 +1369921 +2278155 +2140156 +2639385 +2318943 +2573508 +2257451 +1419766 +2318899 +2359087 +2140116 +522388 +650528 +1710448 +1947996 +2103147 +1467509 +2080857 +684505 +2011446 +1710451 +2381513 +955523 +2528985 +2080866 +2381489 +2778500 +2278152 +2275405 +1292949 +606045 +234742 +144186 +2381505 +2698790 +2709386 +1647521 +1302058 +861340 +720869 +606041 +2528955 +1271682 +2368498 +606037 +1517770 +783219 +2852661 +861358 +650526 +1959317 +1419788 +606013 +1858040 +2381495 +1959322 +2739562 +2573537 +2381545 +710191 +522401 +1681904 +2318919 +80623 +2318914 +955533 +2140003 +684485 +2359047 +144222 +767560 +2529087 +767550 +710192 +861410 +2080826 +1538723 +2739554 +1292923 +1538734 +1467555 +522364 +2140119 +2573430 +606033 +2359100 +1409038 +1987955 +731245 +1292958 +1941117 +2103159 +2709354 +1261838 +605994 +1302061 +1538744 +7222 +2730813 +2528957 +999732 +1620824 +2080814 +2573509 +46937 +1727272 +1181471 +2381587 +2529126 +2381639 +2026720 +248828 +2381582 +2026721 +1973807 +2293039 +2140242 +2639431 +2639488 +2140350 +2140323 +2140279 +1538764 +1404684 +861438 +2080905 +2359128 +955578 +2573559 +2416517 +2460880 +2778508 +1941144 +2381595 +1181465 +2639425 +2381598 +2140169 +1941157 +2639481 +2573593 +1727280 +1419881 +2140363 +1419848 +1538795 +1027226 +2140176 +2381606 +2140330 +2709388 +1647533 +1419864 +522480 +2381600 +1404671 +1046055 +1494546 +1941162 +2684638 +1351067 +2721455 +2413217 +2318992 +1419841 +783367 +1212038 +1973802 +783339 +2639450 +2035941 +2140257 +1538791 +955549 +1858065 +1494559 +1494554 +955570 +1959336 +1212040 +2140349 +443937 +2573544 +2140187 +2381583 +443936 +783317 +1538780 +1419874 +2573608 +1494549 +1538802 +7235 +783330 +2140188 +2275412 +2080900 +80717 +1404672 +1941139 +1027229 +7238 +2573622 +2381629 +1538809 +783288 +1110005 +2381616 +1483370 +7237 +2318944 +1941146 +1212043 +2140186 +364016 +1941161 +1419832 +1688388 +2381622 +1419863 +2416518 +7247 +2140226 +2080910 +80683 +1494542 +2140311 +2318989 +1302064 +1858053 +1941159 +522472 +2140210 +2381615 +476166 +1858051 +1858048 +426831 +522457 +2573581 +1419882 +2035911 +2381633 +2140205 +1494539 +955579 +2639428 +192133 +2140362 +2293033 +783289 +2026719 +2318968 +2035925 +1858059 +1538775 +2080894 +2035950 +1620861 +2573548 +1941134 +1727295 +2639442 +2140266 +757005 +2359122 +2035903 +284926 +1827540 +783298 +955548 +2573597 +2721457 +2359127 +1419893 +2359155 +2080914 +650541 +7266 +1419910 +1620867 +80718 +1959365 +1323239 +2140430 +2140435 +2140424 +2639523 +1538849 +2698820 +2573679 +1538866 +2319007 +2838607 +1710463 +1538844 +1959346 +2080928 +1212055 +2140368 +2035985 +2061861 +1710464 +2529178 +1959358 +2140417 +2381667 +783378 +1660811 +1538865 +2838613 +2140378 +955599 +2573682 +1538831 +2416523 +1959355 +1538862 +2140386 +2080935 +2517011 +2838610 +2035972 +783372 +1351069 +1110027 +1858074 +2381650 +2573639 +1419905 +2080920 +2639521 +2460904 +1494570 +2140395 +1538836 +1323236 +7264 +2529171 +2140385 +2838590 +1772982 +2698819 +522490 +2730817 +2639530 +1483391 +2691734 +2140374 +783380 +2745669 +2140394 +2529151 +2745668 +7256 +1419913 +1660810 +1538834 +2460887 +2140406 +2035975 +955602 +522492 +2529167 +1483376 +2319002 +2573681 +2319051 +1538859 +2293043 +1538857 +2140393 +2573654 +522498 +1323242 +2529174 +2432345 +1959350 +783396 +2035962 +999752 +2359153 +1323234 +2319018 +2319001 +2319021 +2838667 +1323247 +2739567 +2318997 +2721459 +290270 +2838653 +7269 +684534 +1351083 +2778530 +2698823 +2140669 +2080993 +2140729 +2460945 +2573845 +2359173 +2319068 +1710516 +522538 +1827570 +1959373 +2140531 +1419980 +2140522 +1323303 +606061 +2573758 +2011451 +1827594 +2140655 +2529303 +46960 +2825515 +1727331 +1727333 +2778540 +443946 +1494610 +522516 +1419932 +1212066 +2080971 +1517778 +2460972 +2140677 +2381703 +1827596 +1660827 +426847 +1271777 +2825519 +2068447 +2460933 +1827588 +1110042 +2573738 +2140557 +2709404 +1538872 +7277 +861463 +2460923 +2140605 +2140681 +2081029 +1791402 +2573719 +2381700 +1538909 +1467658 +2698828 +1351082 +915115 +915097 +901015 +2825511 +2140731 +861469 +1271769 +2752181 +1483412 +2529220 +1323251 +2381692 +2080965 +2359184 +2432364 +215972 +2061874 +2140538 +2080987 +2140570 +2778527 +2293077 +2140523 +746264 +2529189 +192157 +1351085 +1302089 +2573843 +2080962 +2140485 +2359165 +2081028 +1959371 +1538915 +1136129 +1467686 +1660832 +215961 +1669470 +2529187 +1323281 +1199730 +1419991 +1419982 +2080977 +2778537 +1538928 +1827600 +1181504 +2293093 +1494597 +2529305 +1669468 +2778534 +2140716 +861465 +2825516 +2752177 +443966 +861453 +2432365 +1271802 +2573770 +2460966 +2080958 +2275421 +1381073 +861454 +426859 +2140590 +1323284 +1791401 +955618 +2359181 +2140480 +1181480 +2432379 +2080978 +1710502 +2071978 +2778522 +861474 +1397851 +2529198 +2319096 +2432362 +426863 +2140685 +522527 +1538922 +1669478 +2460959 +1292965 +2140725 +1419945 +783415 +2140552 +1483402 +2432354 +1271811 +2529241 +740866 +2015109 +2011452 +650542 +606076 +2573727 +443982 +1419981 +2529266 +955614 +192160 +2140492 +426854 +522546 +2529190 +2867943 +2432370 +443974 +1271776 +2036000 +2319063 +1669475 +861467 +1467651 +1145815 +2432380 +2460935 +1292983 +1538878 +2140514 +2080985 +1517779 +2081003 +1393872 +2080972 +2529234 +757017 +1669464 +2432356 +2140475 +443965 +2319091 +2140516 +1397846 +80745 +2573732 +2573722 +1292968 +2460975 +2529199 +2529221 +1271770 +1948024 +1419953 +2381697 +2573861 +2639545 +1136122 +1827605 +783410 +1397848 +2639536 +2257493 +1302084 +2319071 +1538869 +1351077 +2080959 +915099 +915119 +2140645 +2080964 +1091114 +426846 +2319058 +2460982 +1181487 +861451 +2381685 +2381711 +1660866 +2140543 +1768734 +2293063 +2573838 +364026 +2061882 +2573844 +1494604 +2140666 +2529249 +443977 +1538919 +1791400 +2081027 +2639546 +522552 +861473 +443939 +1419968 +2140704 +2745675 +2004295 +2140727 +1467682 +1791404 +2293065 +1538886 +1323252 +915107 +2293069 +2460927 +2293109 +2460917 +1538887 +2778538 +1404688 +1419950 +2432353 +2867941 +2381701 +1941171 +1323256 +2140711 +757015 +2867949 +1727335 +2068449 +2825514 +443961 +215965 +1688401 +1467680 +1323307 +522503 +7290 +1539001 +1420020 +1688422 +2639582 +1181525 +488288 +1950822 +2460997 +2381772 +2257509 +2413227 +374670 +1827615 +1827631 +2573971 +2319129 +443997 +1494626 +861511 +2639610 +1858212 +1323360 +1973828 +2680551 +2573993 +2639592 +444001 +666793 +684574 +2140870 +46996 +2735376 +783482 +7316 +2068466 +783484 +2573913 +1039213 +2698847 +1538973 +1110058 +2852727 +144281 +1212088 +2140779 +2071982 +606113 +757024 +2140791 +2140802 +1912006 +1538969 +2026729 +2081056 +7301 +1973855 +2573875 +1239660 +1323346 +2381767 +2140858 +606112 +46991 +2061887 +2140788 +1077404 +2639588 +1323352 +1912012 +955670 +488299 +1199740 +1858127 +606080 +1858192 +1538967 +2852748 +2381763 +2359217 +606115 +915133 +476173 +2081048 +7309 +364059 +1102731 +1999237 +1063431 +2319124 +2730826 +2140793 +1858145 +324868 +955659 +1538954 +1110062 +1858161 +1494619 +2140777 +861487 +1323351 +1757332 +2381738 +2381735 +1647554 +290277 +861505 +1123654 +2698855 +522593 +2068463 +2140789 +1688415 +1199742 +1467692 +144259 +2140817 +2319114 +310590 +955642 +1538940 +2573968 +1123652 +1351092 +46980 +606081 +2140834 +1912003 +1343389 +1483413 +2140749 +1239687 +1302090 +7308 +310593 +2574001 +1911977 +1212094 +2359206 +1261843 +1703805 +2140849 +2081049 +2639601 +2381759 +7328 +955657 +2381732 +2140856 +1858175 +1123655 +2639622 +1239681 +522574 +1239665 +1110048 +861501 +2838675 +1858160 +2529324 +955658 +1467702 +2140861 +2081050 +1827625 +2293143 +144256 +2293149 +1175238 +1620882 +783448 +1494614 +1199734 +1858148 +1181524 +1323349 +1077406 +374674 +2081036 +2852753 +2573952 +2529334 +2319108 +2081047 +298237 +2529340 +2381752 +1323327 +1323350 +2852742 +757023 +1858117 +1538998 +46968 +1844909 +1911970 +2852746 +1620890 +1959401 +606105 +1239677 +1973830 +2461001 +2275424 +298236 +955662 +2354291 +2529360 +684584 +1494636 +1420027 +1973875 +2381819 +1827655 +2574060 +522613 +2574010 +1858248 +1539054 +684601 +2529352 +1323395 +1858247 +2140976 +2639641 +1950838 +2381812 +2359270 +1110072 +783507 +1123668 +1212119 +783506 +1912033 +2698862 +2359245 +1858260 +955682 +1271860 +2140920 +267756 +684577 +1950832 +1539017 +1212135 +2574049 +522604 +2359255 +783520 +2140933 +2574076 +2381805 +1760534 +444025 +476191 +1647566 +1323367 +2140921 +2574018 +1063434 +1827658 +1302098 +1912020 +7344 +2413229 +2574064 +1858243 +1999246 +2081072 +1027259 +2381814 +2574024 +310597 +2416537 +2730828 +80798 +2081080 +1271879 +783539 +1420044 +783540 +2140952 +1858220 +2529365 +2140959 +2574031 +1077412 +2529349 +298261 +2026740 +1351102 +2008164 +1323383 +1212120 +2381811 +444019 +1858258 +1791416 +1941196 +80788 +2140943 +215991 +1827660 +1973876 +80794 +2639638 +2639656 +2359252 +1494650 +1710550 +1404700 +1827657 +1323390 +1271857 +2319149 +1539050 +2529347 +2574036 +476187 +1858250 +1858254 +1858242 +1271858 +2140942 +1420031 +1647563 +2529369 +1110078 +1752350 +2709425 +783582 +2141054 +2141020 +2036084 +1385628 +2574113 +2293179 +1110083 +955716 +1827698 +1710562 +2574170 +1912043 +861521 +684621 +2081095 +1110081 +267760 +1351115 +1950846 +1494659 +2432397 +684634 +2529401 +2141077 +248845 +522646 +1063441 +1959426 +2752189 +999795 +2852775 +47009 +861512 +2852783 +2381852 +2036072 +2351237 +1420111 +2432398 +1199745 +2574086 +267764 +999785 +1351107 +234776 +1271911 +1858325 +1420089 +1539089 +2529404 +144310 +1102739 +2838688 +522631 +783552 +2381837 +2081092 +1212165 +2867957 +2141046 +1858327 +1302108 +2293192 +861523 +783551 +1323423 +2081100 +2698872 +324871 +1973913 +522626 +144309 +2011473 +2257516 +2359275 +2529381 +2852779 +1773004 +1494663 +2778564 +783576 +2639682 +1858319 +2257513 +2529423 +1420123 +2141010 +2381840 +2574132 +2574174 +1271909 +1827704 +955723 +1539104 +606118 +1323432 +2293188 +2141051 +2103168 +1063438 +2691744 +1973897 +1959434 +1420085 +2574123 +1058929 +720889 +1858303 +389420 +1973895 +2432400 +783572 +2461055 +1323431 +1181538 +1858269 +2432395 +710206 +2319180 +1420126 +1912042 +1323435 +7361 +522673 +324870 +2709423 +915177 +1381080 +955727 +1912038 +1420131 +2141075 +915176 +783559 +1420096 +2293168 +204780 +1858335 +2461033 +2416538 +1858277 +2867977 +1710559 +1858274 +2141040 +2141018 +1351125 +1302117 +606119 +1941208 +606137 +1323426 +2461020 +955707 +522629 +80802 +1539073 +999788 +522632 +1351129 +2011468 +2359280 +1039233 +1323417 +1420109 +1959429 +522664 +522669 +1727377 +783543 +1539100 +47011 +2574143 +1773008 +1973910 +2574129 +783573 +783562 +1351108 +2011471 +861530 +2036063 +1941206 +955704 +783577 +1858283 +1420092 +1539059 +907379 +2549013 +684700 +2141165 +2011487 +2529465 +2738176 +2141141 +2529429 +2141164 +783633 +1517793 +522769 +2574180 +2529459 +684663 +1901166 +720905 +2141116 +522676 +1239691 +1369971 +1494680 +2574285 +1827724 +267782 +999815 +1688448 +80810 +2852823 +522781 +1539133 +2752199 +1027268 +1351141 +522724 +462040 +861557 +522771 +2141120 +861600 +2852833 +522708 +2639721 +234795 +1539172 +2381873 +2739579 +650557 +1539152 +522700 +144335 +2574184 +2639690 +684714 +2319247 +374723 +1858376 +1688436 +2319211 +47016 +2141121 +684708 +1539168 +80813 +47020 +1821642 +606202 +1292987 +1351146 +861598 +1827713 +999822 +2257544 +2574224 +2529515 +144338 +1620962 +374712 +999804 +2529460 +861559 +444037 +2141130 +1420149 +2852820 +2141171 +1271920 +267775 +1467746 +2141137 +1620980 +1783420 +1620981 +2036114 +374718 +374725 +2852851 +204786 +2529438 +343015 +2852849 +2529471 +522763 +2574295 +2381865 +783608 +1539132 +2529481 +1091147 +2061918 +2257529 +606198 +444051 +2721488 +2061908 +47025 +2257540 +1620965 +2721485 +1271921 +1858391 +938858 +2852837 +1773011 +2368521 +522758 +2574189 +606179 +80809 +2141172 +1130013 +2574206 +861581 +1145832 +2529455 +522736 +757050 +1681913 +783615 +999832 +1420152 +267778 +2416540 +2061926 +310606 +2141105 +2709434 +2141089 +999803 +1181567 +522778 +684695 +2381880 +2319244 +2141124 +861589 +1858371 +1467734 +2293222 +767582 +1858380 +1292989 +144314 +2574294 +861562 +522756 +1620952 +1131995 +2011488 +606176 +2257528 +346765 +666798 +2061897 +1620942 +2359295 +364066 +2529426 +2141182 +1688450 +2081120 +1987973 +2141239 +267785 +310604 +444049 +1083546 +47021 +1827732 +1539128 +1467725 +1323442 +2574274 +80819 +1351154 +144329 +2061905 +1351143 +1083538 +740881 +2257561 +1901165 +2141091 +1858359 +1102747 +1091151 +444043 +650555 +861549 +1620972 +1091146 +2368523 +2574262 +1620927 +522678 +1323436 +1813367 +861603 +1539173 +522705 +2141191 +2141236 +522695 +2574283 +2319225 +1467724 +2359288 +1292991 +1827736 +2359301 +476220 +47028 +684707 +2529514 +1467722 +2867980 +1039235 +1420145 +915188 +444069 +2036089 +522704 +144317 +684716 +861572 +1620985 +2852839 +2081151 +2141460 +47050 +389427 +7453 +1827765 +1621004 +1539195 +234801 +606233 +2778737 +1858438 +1858477 +2867986 +144402 +2081141 +861615 +1539209 +1703817 +2381930 +1083549 +2319267 +1420223 +144392 +2141321 +1467755 +783714 +915220 +2778736 +783704 +2141463 +1539198 +2574369 +783676 +1091162 +1181606 +2081163 +395087 +2574386 +7431 +955797 +1727446 +1199755 +2574310 +1420191 +1323490 +2778587 +861653 +684760 +80843 +783680 +915251 +1620992 +7468 +7406 +2381912 +1154137 +47105 +1539206 +1181585 +1688456 +2778669 +1647577 +2293226 +915237 +1901175 +2778757 +2778623 +444104 +2319276 +2778717 +2308802 +144343 +2381913 +1369978 +1669506 +1083557 +1091167 +2574393 +2778652 +47107 +2778753 +1710580 +1136136 +2639750 +144407 +488313 +7414 +2529537 +2529557 +1420217 +1727454 +1239702 +1420202 +861634 +767592 +1494693 +861680 +1420197 +2778709 +2141323 +1999266 +684731 +1688463 +1467787 +426880 +2852873 +144358 +861682 +2141383 +522813 +462061 +2778759 +757058 +1517810 +2778726 +1621028 +1110113 +2639753 +2574314 +2778666 +2141259 +861644 +1420214 +2257590 +144379 +1494758 +1136137 +1539255 +1539232 +1420170 +1467796 +2867994 +2574326 +1123688 +2036128 +1027290 +2778677 +2778655 +1647584 +1539189 +666799 +1494716 +444103 +47137 +915235 +2778678 +462058 +1110117 +1420196 +1420206 +1494733 +2778687 +434377 +1251421 +1420192 +861663 +1539212 +2461117 +2141519 +1212194 +1858436 +47056 +2867991 +1727453 +1483430 +144351 +1858450 +2778662 +1517817 +47117 +740903 +2574301 +1239697 +522842 +684743 +915249 +47149 +2381909 +2141377 +1539249 +2574347 +1494694 +748783 +1365777 +2141298 +1420218 +1539244 +757052 +2081164 +2319284 +444112 +938883 +1660905 +2141295 +1517816 +999834 +606247 +2257596 +861607 +1858473 +1393881 +2141338 +7454 +1239692 +1110111 +2574343 +2141303 +522838 +1494702 +1688472 +1727427 +522797 +2778749 +2081170 +1212178 +2381937 +1858471 +1467768 +364088 +2574412 +861618 +2359321 +1494754 +1999267 +2257597 +783674 +144348 +1199759 +748787 +2778637 +2141464 +2359319 +606230 +861648 +2574380 +2257598 +2852872 +1077430 +2293243 +861642 +1110106 +1710567 +2141361 +955783 +1858465 +2141299 +47136 +2574409 +7473 +1669508 +606219 +7402 +861620 +1727424 +522791 +2432414 +354080 +1912059 +2381908 +1517803 +1539177 +47097 +2141258 +1539261 +2778635 +2141439 +2036150 +2461082 +2852857 +1123690 +1620991 +522832 +144347 +2778597 +2778735 +1027279 +2293232 +2141335 +1091172 +731264 +2778599 +47113 +1973952 +2778617 +2778625 +1077434 +144404 +444114 +2778710 +2778660 +2778694 +1858405 +2574325 +144403 +2036159 +2319252 +1757351 +2036139 +374741 +2061929 +1351167 +2141443 +1858444 +1381093 +2529556 +2141408 +684763 +1703818 +2141382 +2141362 +1858448 +47086 +1487512 +1159246 +1858430 +1181608 +999853 +144376 +2141327 +861678 +1539193 +1660904 +1171094 +2381927 +2081138 +1858469 +2275444 +2778615 +606268 +462053 +1621026 +290293 +2778714 +783706 +2293250 +2141483 +740902 +907381 +2319273 +1973955 +1063445 +1027287 +2319274 +47042 +434381 +2141504 +2036144 +2081165 +1901170 +144342 +1719274 +2778748 +1467783 +1302124 +1420231 +861675 +47072 +2529559 +2141294 +1351185 +1420248 +915273 +7501 +1827775 +2698878 +1539335 +1323508 +2461136 +783750 +1959485 +684810 +462068 +2574480 +1420257 +938885 +1323519 +2036170 +720935 +2529579 +2141565 +2529574 +1912081 +915269 +2141571 +684800 +1912086 +783738 +783749 +2574453 +1669527 +684803 +684802 +2461125 +606294 +2141616 +2141554 +1539349 +2639767 +1727485 +1727483 +783735 +2529568 +2141569 +720941 +80864 +1912087 +144413 +444120 +1858495 +1727488 +2141603 +298270 +2141575 +462065 +1539345 +2141567 +783733 +684780 +1077448 +2293256 +1494777 +748796 +364119 +1791466 +1959478 +2529566 +1539339 +2081191 +2574428 +1783429 +740907 +1783427 +2293257 +1858526 +861693 +2529576 +1110122 +1858527 +684792 +2293270 +522869 +1858516 +1959477 +1181628 +1827788 +915281 +1420266 +522881 +915274 +1973971 +2461138 +1420232 +1199770 +522857 +1660906 +2574486 +2081196 +2529572 +1539334 +1858534 +1858529 +1077444 +364113 +2141632 +1323495 +1669522 +444127 +1351189 +298269 +2529578 +80861 +364115 +1271947 +955810 +1791453 +7495 +1858503 +684777 +2141576 +1935208 +1858511 +1381098 +1420272 +1973970 +783744 +720942 +2574475 +2141599 +1827773 +1791456 +684790 +216035 +2141620 +1858506 +2381943 +1858528 +2293258 +1791460 +1351195 +901039 +1539352 +684775 +2574477 +2381942 +2574461 +1950854 +80869 +606311 +1912105 +1323547 +606346 +2691750 +1494800 +2141662 +1973989 +684836 +1844938 +1102762 +1323550 +606344 +2529627 +938893 +144481 +1467812 +1420284 +783794 +267797 +861732 +2036186 +1719279 +351671 +2574572 +1912099 +606338 +2257611 +2359349 +2529630 +731268 +2141673 +522917 +999870 +1467806 +462079 +2529629 +861739 +80875 +2004311 +2141647 +1791471 +47167 +1727492 +2574581 +1858543 +144440 +1039272 +731266 +80896 +783785 +861710 +1912104 +1351208 +2141690 +2141653 +2036174 +354097 +1539374 +2574535 +999890 +2382006 +501387 +606323 +1539379 +999892 +1973975 +2275453 +1083571 +462081 +1710596 +497179 +2574505 +2061950 +2381987 +2004312 +2257612 +2068495 +364128 +2574503 +2574511 +47178 +501385 +364134 +2141762 +2574532 +522926 +1539370 +861725 +1655581 +2141713 +2081220 +501388 +216038 +606321 +351675 +1688480 +1420294 +2574575 +1251444 +144417 +1091195 +2257617 +2257608 +497172 +192213 +1858550 +1959490 +2529643 +1827806 +2141702 +720946 +1351198 +144462 +2639792 +326645 +1858554 +2141732 +522933 +522938 +1621071 +522940 +333193 +310613 +354098 +2432434 +144477 +2068500 +955824 +2036183 +955834 +1973984 +1959493 +522927 +80881 +351673 +1647588 +2461165 +955819 +522906 +999893 +2141741 +2359355 +861743 +1251448 +1046066 +2574547 +938888 +783787 +2413247 +2461156 +1239710 +1323534 +1999273 +144483 +1086241 +2293298 +358323 +1145844 +1912102 +2574584 +2141677 +2141744 +144480 +2141737 +2141681 +1351206 +684818 +144484 +1653174 +1420287 +1212209 +462082 +1647594 +1323532 +955825 +1323542 +522923 +1123693 +2529609 +1351217 +216047 +2382052 +1145851 +2574653 +476235 +720982 +1293002 +1212227 +684854 +298273 +2036212 +2319325 +1539473 +2293329 +757083 +720990 +2735412 +2382059 +2141884 +2004319 +783839 +1844945 +2141800 +1827851 +1323583 +2319329 +1487519 +1813378 +1959505 +999902 +2141822 +1494846 +2319315 +1083575 +1271963 +216042 +2574654 +1660911 +1420330 +720987 +1727534 +80906 +2432456 +1827834 +2308811 +2257638 +1351229 +915314 +2574661 +684862 +330006 +999901 +2141859 +2529691 +2739583 +684864 +1954503 +1323567 +1145847 +2141778 +1539477 +2730854 +684845 +861797 +1323556 +606363 +783805 +1212212 +1791484 +1539474 +2308809 +2778769 +1132826 +1271966 +2745699 +1653180 +1494824 +1083579 +1844946 +2293322 +2778767 +1959498 +2639799 +2257640 +2745694 +1351240 +343027 +2081233 +2036213 +2529677 +426894 +384158 +1467854 +1827833 +2413250 +915304 +234824 +2036215 +2319319 +1145849 +1393887 +1171100 +2574622 +2382023 +2081236 +1710616 +1959506 +2308808 +861790 +216043 +2680564 +1239714 +1827817 +444155 +1404728 +2141844 +2735421 +1420361 +338728 +938913 +47184 +1212211 +2574636 +343025 +2574674 +1827823 +2036221 +2319300 +47197 +2141797 +216060 +192216 +2413254 +2359364 +915320 +1467853 +1827840 +1539437 +720973 +1539496 +720988 +1517831 +1271997 +1688483 +1351228 +1621109 +2698893 +2293339 +1669556 +2574669 +861803 +346771 +522968 +2574633 +606376 +757084 +2529664 +606367 +2574592 +1351232 +2529666 +1136144 +2382031 +2257632 +7522 +364136 +80908 +1858567 +1657621 +1323576 +346781 +684860 +2735423 +2529667 +2319318 +720970 +1973996 +606356 +861785 +2432445 +2141770 +2293320 +234825 +1385640 +2141805 +1517836 +2574635 +522973 +395089 +1494843 +1375315 +1212236 +216055 +1539448 +1323572 +2461187 +1539489 +144493 +938895 +1621084 +1710610 +144491 +757091 +2574656 +1710613 +2432455 +2308810 +2639800 +351679 +1752397 +1467857 +1271980 +783797 +1494819 +1621110 +2011503 +915313 +1077456 +1621107 +1539485 +1420367 +2461208 +2461205 +999904 +1351234 +2382039 +1145846 +1657616 +2574621 +2778772 +1657623 +2529669 +783812 +1063463 +2141837 +1517834 +1181657 +901044 +915295 +1827852 +2257633 +2735416 +1420364 +915318 +2141782 +2698897 +80948 +2061966 +1302137 +1487522 +2721495 +1420391 +2036234 +1912150 +2319367 +783896 +861831 +2293356 +1539635 +1181682 +861830 +1136163 +1727543 +1773054 +1669564 +684881 +1681942 +2382086 +1323646 +2709450 +1323640 +2432475 +1381123 +364147 +1136162 +1323598 +955863 +1351297 +2574780 +2293359 +907390 +2036238 +1351278 +523030 +1385641 +2574750 +2529729 +721022 +2081250 +2382097 +1727553 +2742548 +1827877 +1773066 +2639816 +1959551 +1621142 +783884 +721002 +1369994 +783900 +523024 +523070 +915333 +2141940 +7547 +1381127 +374764 +1323630 +2141948 +523076 +523121 +2574804 +523075 +1091228 +2319348 +721007 +1397858 +2698914 +2141975 +1539553 +783893 +783848 +1091221 +1660922 +1752403 +2293353 +2745706 +2574698 +1381116 +1710628 +721016 +684879 +757099 +1791494 +1959534 +737465 +2141896 +523044 +721004 +731275 +144509 +1858614 +1494888 +2257654 +2279527 +2574800 +2709449 +1027304 +1063469 +1539528 +1393893 +2698907 +2141893 +2745710 +2698898 +2574740 +1959540 +2432473 +2141947 +2021494 +2461227 +684908 +1727560 +523018 +1054013 +861828 +2574706 +523074 +2574745 +1487520 +1181698 +1381131 +684888 +2574760 +684889 +2068505 +606404 +2574680 +1959528 +1212243 +737469 +2068507 +2416550 +2319333 +1827890 +1494854 +1539650 +2142063 +2081261 +1343402 +2461258 +2574685 +1539554 +2735425 +606383 +901049 +721006 +1091230 +1539566 +2281843 +144514 +2423340 +2293378 +144532 +1420377 +1912158 +333218 +1539626 +1959530 +2574731 +2752229 +1091213 +1539651 +2382093 +1323596 +1323625 +1539641 +2698911 +1539627 +1091219 +1791505 +2141972 +2382079 +1145856 +684895 +2730865 +47201 +783908 +1858582 +1959525 +2141964 +2838731 +2529733 +1351255 +2432462 +1181687 +2141926 +1136171 +2413256 +1621126 +2141999 +2423337 +606398 +1381113 +1091220 +1181696 +2574687 +1858602 +901050 +1999296 +1351279 +1323616 +2461228 +1858604 +1539539 +1420369 +1912170 +737468 +1381117 +2574712 +1404731 +1086247 +1494872 +2319366 +2529709 +2432476 +1773070 +80922 +2141954 +1858579 +80945 +1773051 +1351292 +1660919 +1212245 +2752222 +721012 +783890 +2036230 +2461230 +1272007 +2742544 +2382091 +47202 +1483445 +2319345 +2461236 +1959548 +1351275 +2319332 +1420396 +2142012 +2141977 +1181710 +2081252 +2461264 +1494892 +1212253 +1323642 +523020 +2011509 +7558 +1539619 +7543 +1858581 +2319362 +2382088 +1539612 +2529725 +2141988 +1539608 +2461252 +2709453 +1791517 +2081263 +783869 +1688496 +2574871 +2529792 +2574883 +2574903 +523171 +2036244 +2142126 +1827916 +2529771 +955898 +1420452 +1858664 +2574899 +1063470 +1272028 +2574900 +81005 +2529765 +444161 +523192 +757102 +783943 +1386927 +721042 +2574855 +1420435 +2359402 +2281851 +1494926 +1323702 +2142186 +1420434 +1420400 +2838738 +1710652 +1827909 +1420418 +1272036 +1539709 +1351331 +1351334 +523293 +1323666 +2142148 +2081302 +1999308 +2574842 +2004333 +444195 +1764716 +2142195 +523216 +1539683 +2461287 +2142075 +1494915 +1420433 +1494907 +2529797 +2142168 +2382156 +7563 +2698920 +1710658 +2011513 +2142160 +444159 +523149 +1974021 +1091232 +1351349 +2142105 +2735456 +1494921 +7565 +1974025 +2432488 +684933 +2142104 +1393908 +2142116 +1996414 +2838734 +1621145 +650599 +523207 +1827917 +1688527 +1773072 +1858659 +523278 +1494927 +7564 +2061968 +1959560 +523249 +523292 +1727573 +523165 +1323681 +523236 +684934 +1974034 +2709474 +1351326 +523243 +1420436 +523232 +384163 +2257662 +2752235 +1420403 +444175 +1773076 +523242 +721031 +2142174 +2461286 +1420439 +1858667 +1351353 +2461294 +523294 +737480 +1386929 +2574890 +1351302 +2142097 +1323684 +409007 +1727574 +1494905 +2026751 +1539705 +1994806 +523173 +444169 +1351341 +1351337 +2752237 +2529763 +80995 +1974037 +1959571 +1351320 +2461295 +1323695 +2142102 +7562 +1323711 +81003 +2142197 +80992 +2709467 +1539698 +2081278 +684924 +80991 +2293391 +1272037 +2461292 +1974035 +783941 +1272026 +523244 +721059 +1773082 +2319389 +783968 +523238 +783972 +1494938 +2142092 +2004328 +1974032 +2730877 +2432485 +1494909 +1858686 +1181745 +2011532 +2142263 +333230 +2461312 +1272046 +2730890 +2529811 +1539762 +1420494 +2103192 +2382175 +523339 +783988 +1773095 +1323726 +2382188 +343033 +1323721 +2868054 +2142261 +1302163 +2745742 +2735467 +2142257 +1710671 +354120 +2868041 +1764719 +2868019 +2730887 +2293413 +783993 +1999333 +1181750 +2461308 +2142276 +2868039 +1351383 +2868052 +2081319 +2142234 +2142258 +1351373 +915351 +1912194 +1912197 +7584 +2036312 +1494948 +2081325 +1494976 +523400 +1959578 +2293411 +1272064 +757108 +1351374 +684992 +1974061 +2142259 +2868090 +1858718 +2461304 +2081329 +7580 +1420465 +2359422 +523370 +1323739 +2867997 +523346 +1351401 +1494963 +783986 +1420514 +2574940 +216085 +2868023 +783991 +2852885 +2275469 +523379 +1351356 +2036298 +721070 +523390 +2036288 +1272072 +915358 +2639847 +2730885 +1351385 +2852880 +1710670 +2142212 +1212266 +606413 +1272062 +1420535 +2142284 +650605 +2529813 +1858715 +1974072 +523317 +1351399 +2142217 +784003 +1323753 +1858706 +523323 +2293412 +721067 +1912193 +1323748 +2868014 +1494972 +2142279 +2868042 +2036307 +2142243 +1773091 +1858725 +1494969 +2574916 +1974076 +7576 +1351404 +2868028 +2142214 +1091249 +2698925 +1974057 +1063491 +2359429 +1181751 +81024 +1827926 +1494962 +2852874 +1323732 +684979 +1858716 +2142250 +1110159 +1420522 +1063477 +523405 +1351364 +1621160 +2319443 +2011541 +444227 +1091263 +1773102 +784039 +1272095 +1420628 +1420586 +2036316 +2281869 +2015154 +1974098 +1323801 +2529824 +955952 +2142360 +2142291 +784070 +1420604 +2319439 +2142412 +2293422 +418928 +2081338 +1539805 +2575059 +523465 +81058 +650613 +1727601 +523524 +784100 +2735475 +955920 +2036328 +685025 +1467871 +784081 +1351416 +2142464 +1272091 +523495 +2036338 +1420612 +1420576 +523509 +1539817 +2529828 +2081349 +2081355 +444231 +144539 +2739602 +1467875 +1420631 +1959599 +2142379 +2081395 +1181762 +523520 +2004361 +7612 +685010 +2382215 +2142306 +1773109 +685004 +1077460 +2432503 +523481 +915387 +1621152 +1858784 +364165 +2575026 +1539806 +2735477 +523510 +2423347 +1420644 +1959595 +523548 +784082 +784022 +1181761 +2423355 +784108 +1420606 +2142449 +1660934 +444219 +2575049 +2529881 +2730897 +2529885 +2142429 +1681946 +1858775 +784078 +1999341 +1539808 +2293427 +444215 +2721509 +1773105 +2359461 +523537 +784112 +2745745 +1420579 +606425 +2359442 +523489 +1912214 +2004349 +2275478 +2281861 +2432500 +7634 +2319442 +685053 +2004353 +2529834 +1539829 +47205 +606433 +523426 +2574995 +1323819 +248870 +1058934 +1054026 +2838740 +1420562 +2359487 +685066 +2382229 +685006 +685015 +7611 +1393914 +2529854 +2007572 +1351423 +1773112 +1467872 +2461324 +2461315 +1858762 +757113 +2423354 +2293437 +2575020 +2142300 +1420542 +1494990 +444223 +2142436 +1136192 +2142372 +2575008 +2142417 +1181759 +1999351 +1495012 +2639852 +784072 +2142435 +2461331 +1827961 +2142397 +606431 +2838743 +2529878 +497190 +523427 +1773114 +1669600 +784068 +685038 +1420554 +523512 +2359465 +2004358 +2142393 +1974102 +1539867 +2461322 +606426 +2359443 +2281859 +2142292 +2319438 +2359471 +2293435 +1420558 +1272078 +2142424 +2004347 +1539774 +1402052 +757112 +784069 +2423352 +1959600 +685040 +2529827 +1420627 +2281870 +7639 +1974086 +2319444 +1091255 +1827963 +2461330 +2574989 +523490 +1539828 +2142443 +1351428 +2142414 +2574993 +685044 +2575076 +523457 +1539859 +2575024 +2142315 +685059 +2081402 +144538 +2011548 +784054 +1791543 +999920 +915373 +1858786 +2382292 +1323820 +1773127 +267821 +1539971 +2382309 +2575156 +2382327 +606450 +144577 +1539974 +784222 +144575 +1710695 +1688544 +1181777 +2142632 +955971 +2709502 +2575123 +1621169 +2382245 +310636 +1540013 +1539875 +1827969 +2529967 +784170 +2081434 +1984924 +1540012 +2142536 +1539883 +7651 +2461351 +2026758 +955970 +2639857 +2529972 +1467883 +1323852 +955990 +523600 +1323821 +2382306 +1063502 +1517849 +1621178 +861931 +1974111 +444243 +2382304 +2575088 +1323880 +1539921 +2461338 +1540041 +2575125 +2351268 +488326 +2293456 +1343407 +2575115 +523657 +346795 +1091313 +2142556 +1912247 +2423358 +1539947 +333242 +2752254 +2257677 +523581 +267827 +2142530 +2036360 +2382257 +1959607 +1272106 +2275488 +2142508 +2461354 +144544 +2575147 +444251 +606461 +2359517 +2142550 +1727631 +1539962 +2575183 +1539966 +523583 +2382337 +2575093 +523635 +2081419 +523659 +1827985 +1302179 +384169 +1420657 +606471 +955980 +523617 +2081425 +523612 +1495020 +2142615 +2257680 +2081417 +1077471 +81074 +784232 +1171116 +861912 +1212290 +2359499 +2382273 +1323864 +685107 +1539949 +861886 +216103 +1539972 +915423 +2359501 +2319469 +915408 +2021500 +384172 +2461353 +1404757 +1181778 +721112 +1959615 +784209 +523623 +1181775 +2142496 +784203 +784192 +1420667 +2575129 +757127 +757130 +1351462 +2319497 +2142576 +685082 +1212286 +81096 +2382319 +1710684 +1959602 +248883 +1212299 +1351448 +2319471 +1540009 +1027312 +1539878 +2382332 +955989 +2142585 +606475 +81119 +1647618 +1381168 +1710690 +1540017 +956007 +2036385 +861909 +2529949 +523574 +955979 +2293449 +1181801 +2319472 +606464 +784155 +1077470 +2359506 +2142592 +1974118 +2142646 +1539973 +1039279 +47216 +523695 +685085 +956008 +1323832 +523604 +523680 +2036357 +523673 +523661 +7666 +1420677 +685112 +1539905 +784220 +2684659 +444252 +901071 +2142517 +861932 +1323842 +2639876 +1136196 +784126 +784174 +2529988 +1420653 +1110188 +1539965 +2575169 +721101 +248879 +861949 +523586 +861897 +2142485 +1323850 +144567 +2142578 +2575108 +2036374 +2639862 +384174 +523646 +1351466 +405378 +757129 +1495029 +1467893 +2529897 +1727626 +955972 +1409051 +784117 +523669 +1272119 +1827977 +2359488 +2529974 +721103 +523697 +364168 +1420671 +7673 +1954506 +2529918 +757120 +955997 +144568 +7646 +2142471 +1110189 +2529902 +476268 +757125 +2293451 +685099 +2359507 +7662 +2529991 +861887 +1181785 +2575107 +606469 +2529905 +2529996 +1540082 +1974136 +2275503 +907399 +47231 +1858820 +1199806 +1688561 +956017 +1199796 +144590 +2382390 +1404762 +1655599 +1086252 +1199807 +938941 +144605 +1467911 +1621277 +2382378 +1272145 +2081449 +861976 +1495065 +1123727 +2639902 +204814 +1110201 +2359549 +2036389 +2413274 +1844977 +523789 +144619 +1110214 +2036394 +1420781 +144613 +47247 +1517852 +1540090 +1420744 +1959651 +1323910 +2432522 +351687 +1375326 +2319513 +2142748 +1343410 +731283 +523720 +862059 +784239 +1540093 +1621201 +2319512 +1199797 +1181816 +1935225 +2838746 +290311 +938943 +523785 +1199814 +1083599 +1844958 +1027326 +1828019 +1844985 +861994 +523725 +2575234 +144601 +784281 +1688558 +1912265 +862050 +351682 +1681948 +2319517 +1083604 +2575257 +1483454 +1941247 +2081471 +1941248 +2684667 +956029 +1791557 +2257705 +1323899 +862045 +861980 +2530016 +1370045 +721128 +721125 +2838745 +1420788 +234847 +1409056 +1901185 +7695 +1719283 +144606 +1752426 +2257691 +1540113 +2423359 +784314 +267835 +862053 +2142668 +784242 +1621246 +721131 +1621257 +1467934 +1974129 +523775 +267848 +1323895 +1311115 +1083595 +2530005 +2142695 +7689 +2319514 +1272151 +2081451 +1420745 +2745755 +2257707 +1844962 +523732 +2575212 +523726 +1091321 +1858814 +2142687 +2461370 +2413285 +999975 +2257727 +2061986 +1688563 +2015164 +861985 +862060 +2382377 +1323897 +234845 +1540100 +915433 +1912266 +2511347 +1621242 +999956 +721132 +901074 +81136 +2142764 +2036430 +2036404 +1653186 +267842 +2061984 +2142719 +2142708 +523748 +1688568 +2081455 +204816 +2698931 +1994820 +1994815 +2036428 +606518 +1467904 +2684662 +2413268 +2575206 +2004365 +310646 +2142735 +523764 +7687 +1994816 +1621229 +1621243 +1272152 +1123742 +2142696 +2036416 +1272161 +2382379 +2142732 +1540117 +2275499 +501393 +861974 +2142731 +1385646 +351690 +862035 +462103 +2838755 +784276 +1123721 +1027328 +2529994 +7696 +784260 +757134 +1110204 +2257697 +1621227 +2293469 +1272137 +351685 +1727635 +2257693 +1621218 +1404766 +2530024 +2036393 +1123716 +462108 +418933 +1420773 +1621228 +784285 +267834 +2680578 +1647623 +2142740 +2639901 +938951 +1621273 +1621203 +1540055 +1719286 +606546 +2142771 +862033 +1517854 +1467932 +2443807 +1199804 +1467912 +1828017 +2838754 +1844984 +2142762 +1540053 +1385647 +757144 +2359559 +606592 +2036439 +2698944 +1954508 +2382401 +2730919 +2081499 +1351512 +2742566 +523805 +1954509 +1467987 +2575295 +2698948 +2709516 +956039 +1145868 +1495103 +2281882 +1467962 +862080 +1752434 +523814 +2142848 +2698949 +1420809 +2698956 +2698955 +1959659 +1495096 +1351517 +606552 +2575308 +2530044 +2689095 +1272171 +1420825 +2081489 +1828030 +144629 +2062020 +2575300 +1351496 +1102778 +1710724 +330012 +1727646 +721136 +2142860 +1351499 +1086257 +2530041 +721134 +2081498 +523802 +444273 +685146 +2382407 +1467981 +1323921 +2359562 +1381173 +2530085 +1054044 +2530048 +2530064 +523837 +523815 +444271 +938952 +1420802 +2142800 +2142799 +444272 +2575285 +1752435 +862079 +2530065 +1404781 +1054043 +784320 +1467995 +2281879 +1540146 +1703837 +216120 +901078 +1272182 +2359563 +1467978 +2530088 +2103212 +2015165 +2698960 +2142842 +2698945 +956045 +2530071 +1420801 +47260 +2142850 +685147 +1467953 +1063512 +144752 +999998 +606713 +1272204 +2143014 +2257750 +767654 +862283 +216131 +1621343 +1517880 +862117 +685163 +2142964 +938956 +1688594 +2745760 +1621295 +862229 +1621410 +2680587 +1959690 +862193 +784340 +606700 +606786 +606731 +1621361 +862367 +2142999 +1468118 +1000038 +204842 +1752441 +2142918 +1420865 +1468044 +2257806 +1468122 +1487537 +1621451 +2142920 +767652 +1621325 +1132011 +1540158 +1845006 +1681959 +2698979 +2351286 +1752452 +2680601 +462137 +862194 +2625043 +2575333 +2257854 +1102790 +862142 +2625048 +2575311 +2257802 +666827 +862268 +144750 +606753 +862334 +47351 +47344 +2698964 +144703 +1621424 +1688584 +2319535 +2319541 +862128 +2257777 +144675 +862306 +523845 +862260 +767657 +939015 +523866 +710297 +2257820 +144773 +1517866 +234874 +862430 +2511348 +2257815 +2625032 +606675 +938982 +1655601 +2530147 +862202 +862344 +907404 +862351 +1000030 +2575396 +1039319 +606643 +1621328 +938976 +1000034 +47299 +862199 +462126 +1293038 +2062027 +710301 +1844989 +1039306 +1845001 +1858843 +1123757 +862363 +234856 +2868101 +1727660 +1083616 +2142989 +2036470 +1487539 +2257800 +1621395 +290329 +2355082 +1901197 +1468029 +1239733 +938998 +2868108 +2575419 +144712 +862348 +2355083 +1468102 +784342 +862311 +2319547 +374794 +938965 +1487546 +374792 +1858841 +1959692 +2257827 +1420862 +2142970 +1959705 +862304 +144656 +1959700 +2257838 +144694 +862314 +81161 +2142975 +144817 +2575366 +144816 +1409065 +462144 +7728 +2142888 +1420882 +1420858 +1468115 +606679 +267875 +2319540 +2068525 +523852 +144707 +915467 +7732 +2013385 +2443809 +310709 +2142930 +523861 +2575373 +2142896 +1681961 +956060 +907417 +1468005 +1261881 +862136 +2062038 +1752464 +389444 +1752470 +862168 +144717 +1468024 +204839 +2698981 +1039318 +2103223 +1727665 +1420883 +2575363 +2142984 +462125 +862172 +2575395 +1199828 +2530158 +2142953 +2257831 +606770 +862401 +1984928 +1468130 +2530161 +47353 +144713 +1621298 +862296 +1487551 +2530119 +606718 +144723 +144738 +267863 +939006 +862274 +2530117 +1664885 +144829 +2279531 +1540228 +606761 +1540175 +2416568 +1621336 +606714 +767641 +1901191 +784356 +1703844 +523865 +2142893 +784339 +1703845 +2575409 +2530159 +1102786 +1468033 +862104 +1621414 +204844 +1941255 +2257789 +2142892 +2575338 +2575404 +2575383 +2081519 +1468046 +290335 +2698963 +389446 +523872 +1621332 +1468079 +2575349 +2257834 +1000058 +606701 +2081514 +1752459 +2293481 +1420871 +1621364 +1468089 +1251476 +1468124 +1621365 +1681962 +2868113 +862113 +938996 +1935232 +2680589 +2062024 +310708 +2103222 +2142907 +144779 +938964 +1039311 +47297 +907427 +862395 +2257774 +2625039 +606734 +2355072 +1468037 +606641 +2625026 +2062042 +1311119 +1621387 +1517875 +290336 +784330 +310662 +2575385 +938957 +523876 +2530155 +862252 +1027334 +1343414 +2530142 +1420867 +1858854 +862227 +1621318 +1483464 +907420 +2142899 +2355066 +523858 +862245 +1621402 +47331 +2530133 +862289 +1621403 +1110220 +1091339 +1540169 +1621367 +1039308 +606662 +862188 +862429 +2868214 +721149 +784390 +2868225 +1858864 +310723 +1420910 +721147 +939018 +2684675 +1000088 +310726 +2143020 +2511364 +685171 +2103243 +2752267 +2868190 +1063518 +2036497 +2575428 +2036487 +2575430 +2062072 +2852906 +2868172 +523898 +2143050 +234888 +2868221 +685179 +784383 +523912 +784389 +1653206 +1385650 +710311 +1110225 +2143033 +298297 +523901 +2511367 +1540265 +1239744 +757170 +784424 +1621473 +2257856 +1212323 +956061 +784387 +1621498 +374805 +2684673 +2143085 +81177 +7737 +1468163 +1655603 +2684672 +2081546 +374800 +290345 +2868198 +2680610 +1000082 +2257887 +784414 +47377 +523887 +523911 +1420934 +2143041 +1323942 +862492 +2143025 +757161 +1901210 +7755 +2026764 +81169 +2852907 +1420947 +2026765 +1420906 +144850 +2143029 +1110231 +2081534 +1517889 +1000080 +1323944 +1272237 +2257877 +2735490 +1000075 +1110224 +1420932 +2709530 +606819 +374803 +1468177 +1647633 +2143043 +1420954 +784427 +1974157 +1272222 +2413319 +2382443 +144875 +1199837 +2081548 +2416571 +1420902 +862447 +2036503 +1468172 +1212326 +2257865 +2257889 +2062078 +1468174 +1420938 +1123783 +739709 +1901214 +1110222 +1420896 +2036511 +2698984 +523915 +784399 +1621506 +2081543 +234885 +757169 +1420891 +310722 +7739 +523930 +1404795 +862466 +1858861 +606937 +523946 +739714 +1468245 +144938 +1343431 +2778827 +267946 +1540288 +2511381 +7759 +1783444 +1468263 +267918 +501403 +1468238 +1000103 +2257940 +606874 +1752531 +1621629 +1000159 +1621537 +488347 +1901226 +523939 +1935245 +523959 +939026 +2778904 +2062146 +1000101 +666845 +204864 +267921 +2368552 +2062142 +939076 +2575449 +606981 +731305 +144934 +2257973 +1752489 +1000111 +2062156 +1813399 +290354 +1000189 +2257964 +2778868 +1468217 +1719329 +1719319 +1664891 +606846 +204875 +739713 +2036534 +1621597 +2351296 +1468259 +915479 +1293058 +1621556 +2257926 +1000126 +606930 +2036531 +1669617 +710319 +1123809 +1000108 +907457 +523942 +1000184 +2368545 +1468249 +1773138 +2351302 +1468228 +1517914 +606909 +2257942 +2143139 +204879 +81192 +2778903 +1901240 +2778896 +606876 +2511375 +2143114 +1994841 +1540281 +750552 +1000183 +523951 +1752514 +144893 +2062160 +1468260 +1000123 +2838794 +1783446 +862667 +144903 +1752512 +501396 +2257923 +2257915 +606877 +2062116 +907445 +2351308 +2413329 +47405 +2081551 +915488 +2062117 +862600 +1145872 +216143 +2778889 +1901224 +47384 +523969 +1365815 +2062123 +1136201 +267907 +606992 +1621543 +330031 +2778876 +2062170 +606960 +607005 +1123806 +523966 +1102799 +2062162 +1681967 +1621534 +2143121 +1199855 +234909 +862613 +606965 +1621582 +1375333 +290349 +2680619 +2368563 +1239782 +939054 +2778873 +1199886 +290355 +606844 +1621594 +2359575 +607002 +862649 +1123796 +1540270 +1948045 +710338 +1000192 +1000203 +1681975 +685192 +2062100 +2062139 +606888 +310733 +1621586 +1752505 +1420964 +710347 +234911 +81191 +1468193 +2530172 +204873 +2257958 +144927 +2423371 +731301 +234905 +862672 +2285730 +234914 +606943 +606971 +1621525 +956074 +1621600 +1621573 +1858869 +606977 +267932 +2143119 +1495135 +2778888 +310741 +1072753 +1813409 +1199851 +739710 +81189 +606889 +606918 +1813411 +2275524 +1000167 +1261899 +2778908 +1039335 +862654 +144877 +1468267 +1703884 +1935234 +1752510 +1901222 +1468281 +606890 +523972 +2257936 +267903 +144908 +1845018 +606902 +267962 +1621564 +606942 +606883 +2308833 +2257911 +907451 +1495134 +267949 +862554 +685197 +1517904 +1293056 +1621553 +606967 +1141829 +7762 +1199857 +1495138 +2368547 +1621616 +2351309 +1621561 +267915 +1261898 +1813396 +1495133 +2511371 +2368557 +2530188 +1858871 +330042 +1703892 +1681973 +216141 +234894 +862546 +2062098 +310744 +1813401 +462183 +606858 +2143174 +81196 +47458 +2257990 +1141835 +1540354 +2036561 +2684678 +1912278 +939104 +2709531 +1000293 +2549019 +2511403 +710361 +685200 +2530207 +607044 +862716 +1110237 +267966 +2868246 +434426 +907461 +2427665 +862700 +2511425 +1540308 +1167170 +389452 +1688608 +1000212 +1087668 +1621700 +607024 +2143196 +1261905 +2689099 +862696 +1400883 +1621656 +862733 +1123821 +267977 +1000280 +2143154 +2852916 +1621684 +2778948 +1762956 +1000307 +862701 +2423376 +145011 +1540301 +1083625 +2258031 +1813438 +1845048 +939102 +1487560 +1495153 +2423385 +862702 +1171122 +1791571 +1468296 +721172 +956083 +2036562 +2258019 +1540342 +1517918 +2735492 +1102832 +2423373 +2530199 +1239807 +1102824 +1239809 +333250 +1141836 +939101 +1000241 +2143162 +358398 +1783458 +1813434 +434427 +2036551 +1858879 +607047 +2036578 +144971 +47442 +2143225 +1323982 +1540347 +2143169 +2852946 +488355 +476292 +2258013 +2778954 +1703897 +2257974 +1063526 +290359 +2258015 +1375337 +409013 +2143200 +2143176 +862695 +330047 +476296 +2143207 +1688613 +374828 +1343432 +267979 +1409085 +1858888 +1239806 +145002 +1845033 +1167171 +2689101 +2423377 +862742 +939096 +2062197 +1621680 +1072786 +2143156 +1901250 +1703909 +767682 +7773 +1495147 +862725 +2461417 +1540355 +2028422 +1351547 +1773145 +145018 +1540305 +2143232 +81198 +2423374 +1727680 +2852936 +1791567 +488358 +1783465 +2062184 +192267 +2575459 +1000275 +862685 +2081576 +1682014 +2143204 +1682013 +1396639 +2036563 +607036 +1397884 +1199895 +607032 +907468 +1540353 +1994842 +1999375 +862740 +1783481 +2778979 +2698994 +216146 +1323975 +2778926 +2275527 +2319573 +1000208 +1167167 +2511396 +2036553 +1468288 +47408 +374832 +862718 +204887 +1420995 +1710744 +1261908 +1181834 +2852951 +1845043 +2639945 +2368565 +2257991 +2852922 +901093 +1935246 +1773150 +2868247 +2143165 +2778920 +1791574 +2258014 +1719356 +2868243 +1773140 +144977 +2103289 +2308836 +2511409 +2081578 +2868242 +1621697 +1000291 +1540326 +2143202 +2351314 +721171 +1323968 +1000252 +346811 +1682006 +915498 +1621651 +1682001 +1159272 +47460 +1858900 +145007 +1621674 +2852924 +2062178 +413732 +1669628 +144995 +144997 +333254 +1199894 +2319572 +462193 +1540297 +523985 +358399 +1845053 +145048 +1540374 +1517935 +1159276 +267995 +145040 +1396641 +1000348 +2427673 +145074 +2143276 +2258074 +2852958 +2752278 +2575480 +2852960 +2319604 +607081 +1000320 +1404819 +607093 +2639953 +1540410 +1239834 +47465 +524016 +1845062 +333256 +666852 +81211 +862826 +2778994 +1540398 +939118 +1974186 +1000338 +1703913 +2549030 +1323996 +1495186 +784501 +1421012 +784518 +784514 +862793 +1468307 +524006 +1375339 +2028438 +1994846 +343046 +2319591 +351699 +2258060 +731312 +1660964 +767699 +2004374 +298302 +2351336 +1420997 +784477 +1783492 +47467 +1999392 +1719363 +2575464 +862758 +1540421 +710386 +1540397 +2530208 +81229 +1517945 +607099 +1110240 +2258056 +1621744 +2699030 +1762959 +1540376 +2868276 +784487 +2143298 +81213 +1083628 +1495169 +737498 +1540390 +2423401 +1999397 +2530229 +524004 +1540414 +1935255 +1400887 +2359590 +650634 +1974170 +354134 +2382476 +784511 +2143327 +1621796 +2575468 +1845058 +2427674 +2530209 +1000321 +2852962 +2258101 +2759699 +2735497 +1621768 +1495196 +607117 +1540415 +47487 +1710750 +2778983 +2351333 +1540375 +145052 +524011 +2143326 +1323991 +2549026 +7787 +1393928 +2293515 +216152 +1495183 +1000325 +1688619 +1239838 +2143279 +862819 +2639951 +607085 +2281890 +1540419 +1409088 +1123838 +444306 +2868259 +2258054 +710378 +2143267 +915513 +2721525 +2461440 +1239839 +862749 +2143253 +1703917 +524025 +784488 +2004377 +1828069 +2036596 +7790 +2143263 +1540400 +524008 +2143265 +2028442 +1682018 +1762961 +1421013 +2143284 +1727693 +1136208 +1621748 +1351558 +1351550 +2721524 +81243 +1719366 +2852984 +2752277 +1495182 +862751 +2081628 +862757 +234931 +2143271 +7789 +2852980 +1540429 +1912286 +364237 +364221 +2511445 +2293528 +862866 +81247 +1039350 +145114 +358408 +1421039 +1024633 +1935264 +2382500 +1212360 +1468322 +1239853 +1653238 +1385662 +488373 +1110243 +1828071 +374864 +1828070 +862837 +956125 +1495226 +1974196 +1495227 +7817 +2853000 +607159 +784526 +1123842 +413752 +364227 +2081637 +907476 +1727709 +7797 +47511 +1102849 +607138 +1468341 +145109 +216168 +2575501 +607161 +1027353 +1752559 +476297 +607130 +1421021 +2308844 +2382486 +192292 +81253 +2319610 +1102854 +216161 +1091357 +607133 +1912295 +1483484 +1669650 +1027351 +1212372 +1468335 +1752565 +685215 +2640000 +284961 +488376 +1000382 +784549 +364228 +1858978 +488385 +1858966 +757189 +284953 +524062 +524056 +1302202 +1752566 +374850 +81272 +1710759 +2258135 +1495200 +2575504 +1858946 +862862 +145099 +915531 +939150 +2640008 +2258134 +145087 +284962 +2062204 +2081657 +2258132 +1261918 +607149 +2432545 +2143348 +2143346 +524047 +358409 +358407 +1393929 +434441 +2143367 +488388 +915522 +2639987 +2461467 +384181 +192282 +1091358 +81266 +2036610 +1468321 +757190 +1212376 +298312 +298309 +956128 +462225 +1251485 +7803 +524040 +2575534 +284957 +1669652 +2103304 +290361 +1621801 +2575543 +81244 +1858981 +2081640 +2382492 +1912297 +2143351 +1858984 +145096 +1421059 +47524 +374873 +607136 +364217 +1540468 +1707710 +2639998 +1540441 +1212362 +1024626 +1421025 +2351344 +310763 +444320 +915519 +1102850 +1901285 +1621852 +426918 +389486 +145148 +2143442 +248905 +1083641 +1752572 +2517026 +2351352 +1752579 +1540500 +1199956 +1175273 +1621856 +434453 +1621859 +607196 +2511453 +524091 +1752591 +757198 +343049 +216194 +1027379 +374889 +234950 +1901291 +1540482 +1199969 +310785 +1351575 +2368571 +2518429 +268016 +268043 +405404 +1669656 +389467 +1901295 +757199 +434464 +462267 +434454 +1102879 +444358 +7826 +346824 +145161 +1727729 +1251493 +248907 +204909 +145178 +939159 +47550 +268069 +710400 +234943 +1669654 +81283 +1935272 +1621857 +901104 +1212380 +488429 +1773165 +1212384 +1821649 +1072799 +1212388 +1199967 +462262 +862882 +1935267 +1912299 +1159282 +2640009 +488438 +2511452 +413755 +1393931 +2575564 +915555 +2081674 +2081675 +2143468 +1212382 +524097 +1054055 +1181873 +1171130 +767713 +1752581 +1540515 +2143429 +234956 +1621849 +1000398 +710401 +1102870 +2036624 +268070 +358431 +476327 +1682029 +462310 +2351362 +462279 +1351571 +358433 +2081682 +462319 +1901296 +1181885 +145184 +358429 +862890 +1351574 +862893 +1540486 +1974197 +862883 +2015180 +268010 +476336 +216188 +192293 +1199965 +298318 +1912301 +1199963 +81304 +2143464 +462246 +2258165 +1239861 +1181878 +2779012 +401888 +2368575 +1302203 +1621842 +2258136 +389480 +145183 +939157 +1682026 +685220 +2461475 +145147 +488417 +1102871 +2351349 +1261930 +1621825 +1912311 +462250 +434468 +145157 +1421079 +607195 +462272 +268020 +462298 +2779021 +488406 +488404 +1024635 +2461476 +607191 +1727727 +216173 +488398 +81305 +145154 +358425 +2258137 +81295 +1102874 +1845082 +1123888 +47539 +216174 +374881 +607335 +47563 +2062214 +607234 +2359624 +462388 +398955 +607240 +1200007 +862907 +462344 +1381187 +1000438 +1239901 +81320 +607297 +1517983 +784585 +2028444 +462340 +2036639 +145356 +2143513 +462339 +205004 +145401 +2028453 +204984 +2359625 +290387 +2143505 +1682037 +2258209 +145250 +145361 +326661 +145210 +1703923 +862931 +2382514 +1468395 +607277 +2779032 +310827 +235017 +2511464 +1181886 +1087695 +488450 +1091389 +737505 +462325 +1984945 +1154163 +268080 +47565 +1468354 +2351374 +2368577 +2258332 +862967 +234966 +710503 +434513 +1621955 +1072814 +234968 +2258237 +1154162 +1468390 +268140 +145374 +607311 +863049 +2028473 +1200009 +607243 +2036638 +2062220 +939192 +354142 +462357 +1468364 +607268 +1175286 +710416 +401894 +710529 +2143484 +710434 +47684 +862952 +1901299 +145382 +939206 +81323 +205022 +1518006 +710499 +731318 +1421089 +862960 +2575574 +1984952 +607220 +81309 +607357 +915561 +939193 +2359627 +1727732 +1669660 +607218 +666864 +862922 +2258262 +338780 +1984955 +767729 +462382 +1175288 +862924 +1682035 +346825 +145388 +710537 +2382512 +444367 +2258313 +145225 +1621945 +235025 +939190 +145275 +1984954 +2015185 +2359617 +2258324 +1517988 +205018 +374904 +310819 +1719379 +767723 +1935281 +1468352 +862976 +1123896 +2359621 +298320 +862980 +145319 +1381184 +1199984 +862911 +1054059 +2511462 +2258308 +145301 +739732 +204970 +607217 +145217 +192316 +2015187 +145290 +710433 +1409110 +1540529 +1621936 +1518009 +145233 +862943 +1404830 +2004381 +1518000 +1974205 +1379160 +462401 +338787 +1087699 +1688624 +1974200 +204954 +145336 +2036642 +268085 +1621921 +1813465 +145373 +863037 +47651 +862906 +607374 +358441 +1518018 +268112 +47569 +710536 +1703924 +1239880 +2258178 +145211 +145405 +1199973 +1200000 +784580 +204946 +1468365 +2062253 +1813460 +1783506 +1000409 +47677 +1912313 +462376 +145240 +1518001 +1141856 +710414 +1999422 +2461483 +268071 +47670 +1783515 +145216 +401893 +524102 +1621933 +1000417 +2062232 +784577 +710439 +1102918 +145387 +204945 +234978 +2036631 +607365 +1200019 +389492 +462360 +1000423 +863009 +710506 +1159283 +2258248 +2511460 +1091392 +1813467 +310803 +310828 +1141858 +235007 +2062244 +145243 +47583 +145367 +607212 +607298 +1621872 +1517974 +204940 +607291 +413782 +1468404 +1727731 +1385666 +1175287 +338801 +434502 +1141852 +7837 +1311149 +607264 +47639 +1091394 +1409098 +862918 +1859025 +607325 +862997 +2432550 +358444 +2511461 +1518010 +2062241 +47599 +2779038 +607355 +862901 +338796 +607369 +1518008 +2511474 +47627 +1063554 +47667 +1102888 +145363 +145386 +47581 +2258291 +330086 +2838799 +145192 +216196 +338789 +1783514 +81313 +2062254 +2382526 +145429 +2382519 +2036662 +1791604 +1404845 +2779105 +2143533 +326663 +488464 +1141862 +235039 +364255 +81341 +1404840 +2382531 +1404849 +2062256 +2853018 +939233 +2413344 +915576 +863094 +81336 +2461487 +1468408 +2838825 +784622 +2461490 +401895 +2868283 +1000467 +1000463 +488478 +7850 +1239905 +145445 +2779050 +784625 +2143536 +2143576 +326664 +1621973 +7844 +1540551 +81359 +863067 +2293540 +488469 +1540544 +310834 +2838807 +2779114 +145468 +2143562 +739736 +145437 +488476 +1404851 +1000454 +607403 +81353 +2143558 +2779092 +444376 +2081685 +1483499 +1540562 +863083 +2143584 +767733 +1110268 +1727743 +863078 +1047993 +343050 +338803 +1404846 +1540569 +1063557 +2779110 +863090 +409024 +2779074 +1083647 +939235 +2143555 +1540576 +47708 +1091399 +1540571 +2779119 +2779045 +2779080 +1999431 +145460 +1540546 +1487579 +1669669 +2838808 +2825548 +2779083 +2143553 +767731 +145442 +1136222 +1421111 +488468 +1621966 +863080 +2062255 +1669668 +1783521 +2640033 +1727745 +145439 +2779081 +2838818 +145462 +2143585 +1381189 +145461 +1727744 +939236 +145447 +2143560 +2779131 +1404847 +607402 +1102928 +7846 +1409114 +1540549 +2853014 +2382528 +1540565 +1710770 +7858 +47720 +1324038 +81371 +2382540 +2779238 +2143596 +2779233 +2779243 +2779231 +47719 +1912325 +863098 +1487582 +2779244 +2779194 +1251504 +2779220 +1000468 +47722 +2779218 +2779200 +2319636 +384188 +310838 +2779179 +1024645 +81372 +1828106 +145613 +1239908 +364268 +310848 +145594 +338804 +1773172 +145556 +666871 +145634 +47724 +2853030 +2143686 +1540621 +2143677 +2081705 +2143632 +145645 +1540657 +607434 +1752621 +145537 +2258433 +607456 +2143687 +1999435 +145651 +145589 +2461492 +235046 +216231 +2575589 +145542 +145487 +2853055 +1239912 +956173 +1819533 +2575643 +607464 +145681 +1518025 +607470 +524150 +310852 +1483502 +757210 +7866 +2413349 +290410 +2382567 +1375344 +863133 +863140 +235051 +1791611 +1145881 +524151 +915581 +2382588 +1123903 +767747 +1468427 +81440 +2293555 +1727759 +1994861 +1540606 +284968 +235054 +1859052 +939253 +1719394 +1261942 +1000536 +1622040 +192335 +607422 +2432551 +1859040 +444379 +1621996 +1540631 +1959747 +607431 +81434 +2368585 +607433 +290404 +81422 +374936 +2143616 +2143654 +1000479 +145524 +1063562 +1468432 +2853085 +2853074 +330094 +1828108 +650664 +2258388 +685251 +2036688 +666870 +1653257 +1912337 +145523 +1540633 +863100 +607447 +81437 +1293078 +2853041 +47798 +1311151 +145492 +1540599 +145670 +47778 +1123907 +1000505 +2853049 +1421143 +607457 +1123900 +462425 +956163 +145580 +81376 +2143706 +310843 +2351402 +2382579 +145485 +192343 +2640069 +310845 +374920 +2143648 +1791610 +2258426 +524186 +145558 +81424 +1974215 +1000493 +1912330 +145521 +434524 +863144 +145679 +284972 +1622024 +863134 +145512 +1540659 +1994862 +2853077 +863115 +338808 +145632 +216237 +1828107 +2258404 +145530 +2143669 +1999432 +2853073 +1819537 +81411 +145686 +2143647 +145539 +81403 +1110272 +374924 +310855 +290407 +2853053 +2868288 +1719396 +1000482 +1828122 +1540658 +1719391 +2143703 +2258379 +47759 +2143675 +2275545 +2461499 +1212406 +1540638 +145543 +863154 +2575623 +607481 +607488 +685241 +81374 +310876 +915584 +2640041 +2382565 +650665 +1540664 +1540675 +2511484 +81383 +290408 +145509 +1000510 +1622025 +2258396 +216238 +863181 +284969 +739738 +2036693 +607459 +607445 +1988005 +1251505 +374932 +47758 +1024649 +298330 +374922 +145676 +2640047 +1974211 +2461496 +1622029 +268158 +607466 +2351395 +2868454 +1999451 +2853100 +1421162 +2143770 +2081729 +2868385 +784682 +2868457 +901110 +2868304 +1669688 +607536 +1540695 +1999444 +145702 +2575673 +2319674 +1063567 +2143829 +2026786 +2575710 +216272 +2143819 +1912342 +2868459 +1688638 +2868434 +524255 +2868361 +2461518 +524263 +1540689 +298338 +1773179 +2575649 +1404857 +1959750 +216268 +1324060 +47810 +2868408 +1381199 +939259 +2868407 +2359664 +1000552 +426927 +524212 +216263 +2752288 +1159293 +2680645 +1102936 +1167201 +1859089 +192355 +956187 +2293572 +2319676 +2575709 +784714 +2699050 +395108 +1495285 +1077499 +939261 +2359669 +915597 +1351602 +2853113 +1302215 +2745781 +2359665 +1381195 +1935292 +192350 +757215 +2143760 +607534 +2081719 +863208 +2868489 +1859112 +1381197 +1212442 +1710778 +2868384 +2530275 +784702 +1710782 +2868330 +145707 +81454 +1859095 +7898 +395105 +1859114 +2081716 +939264 +1959757 +2382606 +784709 +81461 +205050 +1386948 +2721530 +1999457 +1495274 +145693 +1324048 +2382612 +2015191 +2868435 +2511490 +607528 +2530256 +1212432 +1688634 +364282 +1421178 +2721531 +685256 +2868315 +1974237 +2143751 +145695 +1483510 +2853101 +2275548 +1950872 +524258 +1351603 +863220 +1710783 +81469 +1311159 +2530267 +2868363 +2868332 +2699049 +81462 +2143806 +1540712 +2530265 +2868409 +2081741 +1421181 +1351601 +47814 +2143822 +284979 +2143828 +1773183 +462429 +2382599 +7907 +2549032 +2081732 +444393 +757220 +2382610 +1959759 +1622046 +2868496 +1999449 +2530260 +1828137 +216284 +1959756 +2575678 +1311156 +145701 +1791617 +1710777 +2868453 +1669685 +1764760 +81451 +1239916 +607511 +2143778 +1091409 +1859070 +1054070 +2868398 +2004389 +1540703 +1404858 +607517 +1293082 +2004390 +524216 +1421165 +434530 +2575682 +1773184 +192364 +2868468 +2382613 +2143808 +2036705 +685268 +1959755 +863214 +650669 +1468474 +1622058 +1540726 +2062277 +1540763 +2825567 +2825595 +1622055 +1381210 +1123925 +145748 +2825624 +1072823 +863260 +1421194 +2081773 +2143864 +284982 +784753 +462433 +1719406 +2062281 +2640108 +1239924 +2825615 +145743 +1622068 +2825558 +650674 +216293 +2847304 +2575716 +710592 +1091435 +462439 +1421205 +1660990 +268170 +863266 +2575720 +268176 +1540721 +145711 +2427694 +216289 +2640112 +685283 +1123931 +1351644 +710598 +2825596 +330098 +1123926 +524273 +462440 +81473 +1540742 +1421199 +1622070 +784755 +863249 +1468467 +1072827 +2258458 +2825621 +2258451 +2575729 +1381208 +1540746 +2081754 +2432566 +2103330 +145724 +1622069 +1351643 +1261947 +1167203 +2825601 +607541 +1540717 +2275551 +607542 +462438 +2143863 +1622075 +2680646 +863269 +1123935 +2081768 +47840 +956212 +1239925 +462442 +1669690 +216294 +2258492 +1083680 +2780398 +2143952 +2640146 +2416628 +501433 +268201 +2780208 +2779322 +2780577 +2779860 +2779682 +2779680 +607589 +1655651 +2779592 +2779331 +2779533 +607590 +1655684 +2640283 +1251546 +2779312 +2640265 +2780406 +298350 +2779832 +2416579 +1655759 +2640233 +351738 +757231 +2143937 +2780171 +2779252 +2779632 +863290 +1077527 +2780350 +1655605 +2780143 +2780444 +2779997 +784764 +2779985 +1540777 +2640127 +1251535 +2780094 +1027413 +1251532 +2416609 +1077515 +1077520 +2780245 +1077535 +351736 +1083692 +2780122 +1622104 +2779635 +2640251 +524313 +2780037 +1251547 +1083686 +2416607 +2779712 +2779586 +2779916 +2779473 +2780207 +2780488 +2779904 +2640282 +1261971 +1077503 +2036766 +2779828 +268188 +1000592 +2640239 +2779981 +1251534 +2780227 +2779778 +1935317 +2680650 +2036753 +2143933 +2779776 +351713 +2780278 +1251524 +2780126 +2780059 +1622095 +2036749 +1083669 +1655714 +2780031 +2780490 +524291 +2779540 +863299 +1468478 +1540809 +1272291 +501437 +2416650 +2779946 +2780087 +2779945 +2780030 +2779491 +2780482 +268191 +2779831 +1655750 +2779305 +2780377 +2780441 +2779422 +2780133 +2779839 +2780374 +2780548 +1655753 +2779678 +2779992 +1083694 +2779465 +2780021 +607580 +2779570 +2779642 +2779899 +1083695 +2780534 +2780027 +1251540 +1083683 +2779971 +2780378 +863289 +248915 +290422 +2640270 +2640126 +248917 +2780114 +1655763 +524315 +1261974 +2640195 +767764 +2143913 +2780595 +2780643 +1272293 +2779514 +2779993 +268207 +2780647 +2779933 +2780124 +524297 +2780035 +2779639 +310895 +2779657 +2143889 +2143908 +2780267 +2640120 +2779342 +2780187 +2779873 +2640235 +2779504 +2319707 +1655613 +2780672 +2461534 +2779321 +2640193 +863304 +2779927 +2640280 +863309 +2779948 +2780182 +2779664 +2779969 +1655705 +2779892 +2780358 +2780015 +2319713 +2780130 +2143935 +1791619 +2780008 +2780323 +2780148 +351708 +2062293 +2779379 +2779902 +2779697 +524292 +1039381 +1468485 +524316 +7930 +2779702 +2779377 +2780502 +1935299 +310897 +2416590 +784776 +7938 +2780257 +2640208 +2779812 +1655721 +1912371 +2780017 +2258480 +2640294 +1083684 +2780597 +1655768 +2258477 +351728 +1540806 +2780155 +2780255 +2780367 +2416626 +1622082 +2780054 +2780412 +2036745 +2779799 +2640274 +2779759 +767762 +2036748 +2143890 +2779917 +2779498 +7927 +2779987 +268233 +1935321 +2780471 +2780676 +7940 +2780346 +2779827 +2780235 +524296 +2779686 +2779944 +2779584 +351783 +2780480 +268192 +1083698 +2780434 +145771 +2780221 +2780050 +2779736 +2779625 +2779502 +2416595 +2779990 +2780654 +1077511 +2416656 +351751 +2779284 +2779925 +2780658 +1912385 +2780283 +735309 +1390984 +863296 +2780220 +2640271 +2779327 +2779249 +607574 +1083672 +524287 +2640227 +2779886 +1077510 +2779869 +1083689 +1622092 +2258491 +2780626 +2640237 +2779418 +2745801 +1622129 +47880 +501448 +607634 +2258552 +1351654 +145843 +2530299 +2258570 +2382669 +1518062 +374941 +47875 +145851 +1518058 +1682056 +1996433 +1994865 +767772 +2640307 +1468506 +784826 +2368587 +235088 +1495318 +1000616 +721209 +1212448 +1622164 +784820 +2258497 +1669691 +710612 +488485 +685298 +1912402 +1821652 +685310 +1239946 +524360 +1622179 +2258579 +338810 +145820 +1421241 +2780699 +1181922 +145789 +607608 +2081787 +2015202 +2258516 +2143975 +2103350 +216295 +863406 +1761543 +1272316 +2680660 +2081782 +524334 +1063576 +1000623 +2258526 +418947 +413791 +2847308 +290427 +524377 +235109 +47893 +1181933 +2382666 +1669699 +2103340 +145785 +1181934 +1752642 +1622123 +863410 +81533 +939294 +2293600 +7963 +1791630 +2351423 +268258 +2461547 +607604 +47881 +2258560 +1000651 +205065 +1421251 +710611 +1622143 +1791628 +524350 +863404 +145794 +81506 +1159311 +524355 +1819541 +1200046 +1102963 +2308862 +1239943 +1518063 +524340 +1540813 +47902 +2144030 +1996428 +145849 +1682068 +1000644 +2144005 +1159310 +2319723 +784821 +235089 +2625086 +2575771 +268256 +1518059 +401903 +434545 +2293590 +2143974 +1764765 +405427 +2432574 +2143993 +1468521 +2036774 +1518065 +757238 +1828160 +216304 +2293596 +1791639 +1669705 +1935332 +863397 +1994867 +7955 +216308 +731332 +2735526 +235096 +145806 +607638 +1622152 +863401 +488486 +298358 +2319727 +1540830 +145811 +268246 +145814 +1324088 +784837 +524381 +2293587 +863366 +1518056 +1901327 +2721536 +2575740 +607592 +409026 +2036775 +2258523 +1251557 +1145887 +939292 +1421257 +2011560 +1518031 +1682055 +1421237 +1351665 +915638 +1468546 +1000614 +1813480 +956244 +2258558 +1181926 +192381 +310905 +1495312 +710620 +1773192 +2293609 +2036777 +863393 +1988011 +1000647 +524336 +1495313 +422099 +1145889 +1773193 +462453 +1154168 +2258514 +2825627 +1159298 +1468517 +2575765 +145823 +524352 +310911 +1682060 +784831 +413790 +1912404 +1468504 +1518039 +1518061 +1063573 +374949 +1167214 +863370 +2838836 +2752293 +1324071 +1324087 +2103342 +956250 +1102957 +1381211 +1518041 +754606 +607617 +1682059 +2258503 +2308875 +524345 +1682063 +1901329 +1518037 +145841 +1324095 +1859131 +2780715 +863400 +1251568 +1719426 +2825855 +2258624 +2781017 +2780816 +2781386 +2781113 +47951 +2825665 +2781221 +1212462 +2781209 +2825719 +488503 +2853123 +2781182 +2781340 +1123958 +1468582 +863435 +1468555 +2781409 +2825756 +1622207 +2781420 +1239951 +2825828 +2781291 +710625 +1653260 +2825744 +47959 +1540876 +2382701 +2780903 +607662 +2781337 +2781258 +1091449 +1727819 +607646 +290457 +2781093 +145902 +731342 +2825900 +1251565 +81553 +1039396 +2036785 +2780756 +2781038 +2825696 +2781339 +2781384 +2825884 +2825635 +2103353 +2825681 +2781412 +2781169 +205074 +290437 +2825712 +1421267 +1752652 +2781092 +1540865 +1468550 +413793 +2781286 +145939 +235112 +607654 +956264 +1102978 +2825634 +2781307 +2781289 +2781433 +2781505 +2780988 +2780774 +205070 +2781478 +1027423 +2258592 +1859159 +2781283 +1912417 +2780765 +2258613 +1000669 +2781381 +2062323 +290441 +607660 +235115 +2825814 +2781310 +2780759 +2359690 +2780999 +2781481 +2081791 +2144077 +2780779 +2062321 +2144069 +863432 +389501 +2781159 +2780931 +7968 +2781388 +1123948 +2825853 +2780884 +1262003 +1468574 +2825743 +2781279 +2781439 +2780935 +2258608 +2825717 +863415 +2825762 +524406 +290448 +145899 +2781354 +476400 +607661 +1039404 +524402 +1102973 +1000683 +145952 +2825845 +1381227 +268303 +2781401 +2825704 +2780950 +2575775 +524401 +2781181 +1845107 +2036782 +2368592 +2780780 +2781155 +2781393 +2825640 +47952 +2781361 +2825746 +2640311 +2781172 +607644 +2640313 +2825858 +1251559 +2780971 +384197 +2781292 +2359683 +2825695 +2825883 +2780867 +1655772 +2825745 +1727816 +2781171 +2780815 +607687 +47963 +2781116 +2781072 +2781346 +2781054 +2258618 +1468565 +1540866 +1262001 +2781405 +2781210 +1262012 +2825860 +1000673 +2825770 +863438 +1262009 +2780850 +1039402 +488499 +956262 +290451 +2781424 +1468557 +2781351 +2278171 +2781518 +2781120 +2825684 +2780892 +1251563 +2781063 +2781100 +1828169 +2780929 +1783531 +2825818 +524400 +310916 +2781326 +1912415 +2781378 +863461 +2781440 +1262018 +310921 +2036779 +310922 +2461553 +268296 +956268 +2780806 +2825852 +2781355 +2781065 +2780730 +863439 +2781296 +2781156 +2825692 +524397 +1468591 +268409 +1487604 +1039426 +47986 +146168 +784855 +1653264 +216331 +2853137 +48077 +146118 +358494 +863513 +2028481 +2640340 +2258641 +358513 +2359694 +607721 +145983 +146043 +47967 +607715 +2853198 +1518083 +1175307 +1421293 +268364 +1703953 +310979 +205125 +863572 +81595 +2853177 +1072839 +2853141 +1682072 +1859181 +2258658 +1200060 +915671 +146072 +2382717 +2062358 +374983 +2838843 +290487 +2062338 +310981 +2062341 +1719461 +863500 +426944 +1901354 +1239963 +146151 +146147 +268329 +1039432 +863606 +358522 +358504 +374978 +685337 +784856 +2062355 +205111 +146091 +1483519 +863562 +1404893 +2036833 +1212472 +2081815 +2062349 +2853225 +290460 +146054 +1103009 +146086 +1102993 +290469 +2853204 +2575792 +2853179 +2258653 +48101 +1653267 +1622259 +939374 +192408 +192415 +145986 +205106 +2838841 +7991 +1487612 +939358 +2853217 +1212467 +1102999 +1421289 +146009 +2423424 +216316 +863555 +2081803 +146071 +1487598 +1999465 +607703 +710629 +268336 +863564 +1622281 +1000711 +1000710 +1000736 +607713 +1540888 +338818 +7997 +146056 +1404896 +1707744 +784859 +81602 +607716 +2461556 +863567 +524432 +81607 +81621 +1540891 +1495333 +2103363 +1622246 +2575791 +235155 +1495342 +1171145 +146136 +863614 +2062337 +1171142 +1421334 +81587 +338816 +2036818 +426936 +48055 +146133 +2258676 +1959782 +81616 +2103366 +47966 +1622243 +268358 +146014 +426947 +1622290 +290467 +48110 +2062340 +434591 +1495337 +2258690 +2081800 +1707743 +192428 +939368 +47994 +81560 +268347 +1622261 +47971 +863603 +47996 +298368 +434583 +784874 +146061 +81570 +1468610 +2853216 +1752673 +8001 +1495324 +48018 +1200067 +1212468 +863535 +426940 +476403 +2847314 +2258650 +1622286 +2036787 +47988 +426956 +2144089 +1487611 +81568 +146148 +2103373 +81601 +1251573 +607743 +1421339 +863578 +1000725 +235123 +2825948 +1483522 +47974 +1468592 +2036840 +330113 +146062 +1518097 +81582 +81561 +284992 +907507 +298373 +1200068 +863538 +216326 +1200065 +1622257 +939360 +205123 +2036828 +2684702 +939345 +1468645 +310990 +2308877 +1421307 +205095 +146100 +2036819 +330123 +374989 +784863 +48000 +324075 +1653283 +374975 +145966 +462470 +1468609 +939361 +268415 +1622262 +268410 +434606 +358523 +2853209 +192405 +48011 +434646 +1974252 +1752664 +1773196 +146096 +1622254 +7993 +374985 +2036820 +434620 +434584 +2847313 +192411 +1707745 +389505 +310989 +607740 +146158 +2853239 +81569 +863568 +2549046 +2144115 +290458 +863557 +2689110 +901120 +863528 +1421323 +81608 +358534 +81600 +354153 +915663 +863494 +1859176 +784870 +434630 +939343 +2026796 +2575796 +1000760 +426967 +444437 +1912428 +146234 +1123992 +205145 +2640365 +192446 +1495376 +1087722 +434689 +2825953 +1000781 +915685 +426968 +1468657 +2838844 +1859216 +146213 +1239982 +2258759 +915673 +524458 +956286 +1688669 +205143 +1381229 +2258736 +1110308 +311010 +710658 +216399 +1710815 +1110313 +1240002 +1000788 +1200090 +1324112 +1000812 +1240007 +375000 +488541 +488520 +298379 +1703956 +405439 +2144208 +2382723 +2144223 +1901358 +1054079 +524453 +2359707 +1000771 +2144239 +384203 +235163 +1000802 +413801 +444419 +268450 +488540 +1518108 +2062363 +374994 +2511526 +2530318 +2461573 +2036864 +1200077 +298380 +462508 +1000811 +476413 +434696 +956305 +2144194 +81633 +1181959 +413804 +235174 +1669722 +216346 +1783541 +268466 +364331 +1540928 +8087 +2781530 +2144267 +524480 +1212503 +268446 +1000772 +1935351 +146201 +1000800 +907511 +2293632 +268485 +1134648 +488511 +298381 +1727847 +1912444 +757256 +462556 +1703958 +1027440 +1859205 +405434 +1703966 +8059 +784926 +2144155 +434669 +1703963 +2015204 +1000769 +8088 +462532 +2423431 +405431 +268489 +2258723 +1212475 +48155 +1171149 +1912435 +1039439 +2144195 +409033 +1901365 +488549 +1181951 +721215 +81643 +1813495 +1159319 +216358 +1540936 +216382 +1200084 +216357 +268472 +2144245 +1752691 +1239980 +1901363 +1540938 +81631 +1171153 +1935359 +1859194 +488526 +374999 +462522 +2144187 +956289 +1251581 +2021512 +1540913 +1710822 +1813492 +146228 +462499 +1063592 +1239987 +2359701 +2258737 +1103019 +330127 +1912427 +939386 +444416 +434659 +1622301 +1495378 +81654 +1859199 +462546 +364319 +1540932 +401907 +146226 +2144241 +1239975 +81650 +939380 +524472 +444448 +2258744 +2036868 +2144237 +1212519 +1901362 +1091469 +326679 +330125 +462552 +476427 +784923 +1239983 +2432581 +1791659 +1719468 +1669730 +2781546 +268475 +1212495 +2144213 +2036869 +2144263 +1421367 +216388 +2293637 +1752682 +333293 +2781540 +268478 +146238 +2825956 +81632 +1123990 +1912426 +216379 +2640366 +2575805 +48153 +1727848 +1200093 +2640364 +395120 +488519 +1293086 +2781734 +1212526 +2781809 +476488 +285000 +2382839 +1468680 +290506 +192471 +863674 +607847 +1262051 +721234 +2781801 +2781704 +2258805 +488596 +413814 +81695 +290508 +2382832 +488580 +2781834 +2382765 +488585 +1935374 +743596 +2144315 +2640425 +1054080 +2575816 +1091482 +2359739 +2004400 +939414 +2781813 +2144360 +2258778 +1688684 +2281910 +324080 +146354 +2781650 +2258795 +863673 +1212609 +2511541 +2258819 +426985 +2461600 +1859233 +146298 +1212558 +1912480 +607848 +607883 +1240078 +1845140 +146337 +444463 +384209 +476451 +939400 +2382817 +146278 +1974277 +2144328 +735321 +607885 +2781767 +1000841 +1653302 +1988018 +2511535 +1240068 +268539 +2359712 +2781660 +956318 +2062365 +2144368 +650690 +2028499 +1091490 +863707 +1311172 +2004397 +290515 +666901 +2781673 +81708 +1984970 +2062371 +192458 +524534 +1912475 +2382759 +1251597 +1727855 +751721 +1175337 +1212626 +501459 +488601 +1703971 +81692 +2781718 +476462 +2144397 +1540977 +2036899 +2293650 +1935372 +710738 +2781739 +685359 +1181986 +205154 +2382837 +364378 +1110345 +1540975 +1540976 +1959790 +1653306 +2081830 +1669735 +1167230 +1381234 +2640400 +1404899 +2144387 +268523 +1054081 +192461 +1212578 +1175333 +434717 +1027450 +939409 +2689114 +1727904 +607841 +364384 +146339 +2144290 +2258800 +1048007 +1495385 +2382828 +146326 +685356 +2781803 +1091478 +2368600 +1181987 +476489 +216434 +1622332 +146316 +1622324 +2382781 +2781605 +1154177 +1393948 +1123994 +1091500 +1024677 +1859226 +2258768 +444487 +1988025 +1622334 +1262052 +2144334 +1027444 +1540993 +666897 +1912468 +2781727 +2359729 +1752698 +216423 +1752692 +2036889 +2258806 +1845139 +364379 +710674 +2781657 +524499 +1727893 +364360 +364366 +607870 +1110328 +685354 +290513 +2382787 +1468676 +2319734 +1757372 +685350 +192464 +2781792 +1688679 +311039 +1935384 +2781706 +2640396 +1727914 +81713 +1404900 +1912477 +1091473 +146290 +2640431 +1039448 +2680668 +268514 +1103030 +2640427 +216420 +1859231 +607822 +524497 +1845134 +1240023 +2781717 +1110353 +1688695 +462581 +2781722 +939401 +146240 +2461594 +1984968 +311047 +2144285 +915710 +2359713 +1110354 +476458 +298398 +81711 +1912473 +2461601 +2144279 +311027 +1622352 +863687 +2781670 +1727898 +1950882 +2293642 +146338 +1087725 +2575815 +462563 +2781824 +146313 +146289 +1063600 +607872 +488584 +364359 +737525 +2781648 +358549 +146268 +409035 +524521 +2781746 +2781636 +476477 +1175336 +1688691 +1495407 +1167231 +364383 +1682084 +2258807 +364369 +524485 +784957 +1828203 +2781762 +1212572 +426982 +311040 +268517 +1159326 +1421383 +1077553 +311076 +1845123 +1819552 +1859245 +607871 +1495381 +1421397 +1324116 +444471 +375022 +863689 +1027443 +1622331 +2640434 +2781847 +2781595 +375028 +1974278 +721229 +146321 +2382776 +1622348 +476469 +607794 +2781624 +1123998 +146342 +146274 +685393 +1828210 +1110327 +1622364 +2275565 +2640409 +2359714 +2036887 +2144322 +607874 +2382826 +2838881 +608039 +1262066 +608085 +358553 +1048022 +607937 +2382885 +1311208 +290527 +1653321 +2351433 +1200129 +1039520 +863724 +488617 +608044 +2838854 +311161 +608077 +666914 +1752715 +607986 +1421405 +1103052 +608079 +2640468 +1845170 +666913 +1103038 +1468740 +2838878 +2413416 +1103047 +1468714 +1468742 +1845164 +1901380 +1262069 +2382861 +2036905 +2382891 +1240097 +2413428 +2640485 +2640471 +608050 +2413434 +1845178 +1468736 +1103051 +608033 +488607 +608092 +1240116 +1311211 +1039547 +1653345 +608038 +608061 +2382917 +2258881 +375053 +1622408 +2575839 +1935408 +1039557 +311183 +2413441 +462611 +524557 +1048027 +1103042 +1653348 +311140 +1124015 +311221 +608171 +1039497 +2258824 +608134 +1110371 +1293100 +2413403 +1468725 +1200132 +311081 +710775 +311213 +1901398 +608090 +311178 +2258855 +2413425 +607964 +608175 +608027 +1901387 +1653360 +290519 +2781863 +1653400 +608119 +2838917 +389528 +608016 +608153 +2062391 +434725 +2382921 +1039459 +2413394 +907516 +2258868 +1039476 +311108 +1039555 +1752723 +608028 +1039460 +1935409 +2575832 +608057 +2382865 +1935415 +311168 +607972 +1293090 +607934 +1487621 +1935393 +1468692 +2062386 +608020 +2413451 +2640467 +311116 +1212637 +311162 +462616 +2838920 +2781861 +1240115 +311230 +1845152 +1048016 +2838910 +2413448 +1653407 +311151 +2382922 +1653350 +1262070 +2382914 +1994886 +2838928 +739747 +1845177 +1468741 +1272327 +608120 +2062376 +1103057 +2640466 +311217 +2575835 +2258832 +2258872 +1124025 +1375350 +389524 +1240102 +863762 +48220 +1935406 +1845160 +311127 +1024685 +1935390 +1468717 +311215 +1727920 +311094 +2781857 +608142 +608131 +2258853 +1048011 +1653390 +311096 +1048030 +608007 +1421404 +2351432 +863733 +311099 +608121 +311150 +311166 +1653363 +2413408 +863767 +1935397 +2413433 +1653313 +731353 +1653374 +8113 +1622431 +192482 +1212674 +1622438 +2382941 +1091508 +1124052 +608198 +2781884 +2781919 +1859290 +915721 +1950885 +444499 +1039567 +384215 +1324128 +2640520 +1669752 +1200149 +1622436 +48252 +1324129 +1212642 +731360 +1859275 +48240 +1912522 +1912502 +685397 +2640535 +2258919 +1710838 +2781907 +2258918 +863779 +1324127 +2640523 +2781868 +1791701 +1124048 +216435 +1622416 +268557 +2640529 +757266 +146417 +2461610 +2640517 +1110375 +2461609 +2144429 +1000884 +48239 +1727926 +1063609 +1251605 +1935424 +1110383 +608192 +1182000 +915723 +1110381 +1182014 +343066 +956330 +1212660 +81736 +685399 +650711 +1167235 +1212684 +192475 +8107 +1859281 +524582 +1703982 +48250 +1182003 +2781894 +268551 +1124060 +1175343 +2781878 +346837 +1145897 +2781929 +1159331 +2036911 +1859282 +1063611 +1541092 +1541088 +268556 +1682089 +476497 +1468750 +146399 +2575869 +1182013 +1707752 +2144441 +2461627 +1262076 +146403 +2575872 +1110382 +1136238 +1688707 +501464 +710795 +2461616 +2781926 +1752745 +956329 +192489 +650717 +427003 +2752323 +1240190 +1200167 +1136243 +2461634 +2293663 +444525 +1791708 +462638 +358561 +427008 +608227 +1212720 +2838933 +1087732 +710808 +248959 +1653421 +1752755 +290546 +1212697 +1901415 +2351439 +330134 +2319755 +1175357 +1124066 +248958 +1182036 +48258 +395136 +1541129 +1859323 +434745 +1495432 +2838973 +205169 +915738 +81756 +434747 +2319759 +1063618 +1171173 +1240184 +2781934 +1859321 +409042 +2575906 +434736 +1000930 +81765 +1421416 +1518137 +422113 +1974293 +757268 +1251627 +784974 +1773213 +2036939 +1859302 +462643 +1541126 +2319765 +2838963 +1719488 +81768 +1175352 +1240179 +146428 +1212709 +1828249 +1845199 +956333 +1901420 +1000911 +8124 +434760 +462654 +488639 +685415 +2625105 +1212714 +524602 +1813534 +1072862 +1091516 +2838944 +1495451 +1379164 +650714 +1669757 +434773 +1495446 +2575907 +1791705 +750558 +476519 +2351441 +146438 +1541120 +81746 +1541121 +1859338 +268619 +2258925 +205166 +1935446 +409039 +784973 +1200159 +1386954 +1240152 +462636 +1000891 +330136 +48260 +2144485 +1487629 +427007 +462676 +395132 +2351436 +939442 +1200188 +434786 +1397898 +2511547 +1622443 +710811 +1212694 +739751 +2735547 +426998 +462634 +2036948 +1124078 +731363 +462673 +462660 +2735550 +1182026 +1063620 +608234 +1124082 +2781933 +2351440 +434791 +2680694 +476509 +1783546 +1669758 +2699058 +1212696 +488649 +1351712 +1935436 +2036943 +426999 +501468 +2781943 +248962 +1901408 +1688717 +1669755 +685412 +462635 +1110399 +1421411 +1110396 +1707754 +1200163 +1773216 +1773214 +784987 +1212725 +1935440 +48262 +863795 +2144491 +1935435 +2081835 +1175353 +1688718 +268589 +956346 +1072863 +1262090 +2319762 +338857 +1719499 +1103074 +939443 +650719 +1351713 +413828 +2461657 +2640560 +1182047 +2745832 +375086 +2461660 +1293101 +462688 +1912546 +338849 +2354334 +1240223 +476531 +268657 +1167244 +235225 +2144498 +1175362 +333313 +1200204 +462704 +1212785 +1764774 +2144502 +476525 +1421421 +1212757 +2530347 +1212771 +389543 +462699 +2575929 +2699068 +1710855 +48273 +1240208 +1212752 +1240227 +1212748 +956355 +444550 +333314 +2752330 +710823 +1859356 +338859 +1175369 +2575914 +1935453 +1240217 +192499 +1110407 +1154181 +375089 +488671 +488659 +1000956 +216469 +1000948 +2461645 +268647 +2575925 +1000959 +2144507 +384219 +1240218 +1000954 +1783554 +1791732 +1000936 +338854 +1719500 +2699076 +1719496 +488664 +1212742 +2144495 +205170 +1175367 +434804 +375101 +48268 +1000960 +1859341 +476535 +1845211 +1182065 +1182046 +338853 +1791730 +146457 +1212737 +1212749 +375099 +146465 +427013 +1200190 +434796 +1175374 +2461646 +1182048 +81772 +2745834 +81795 +395143 +1200209 +333323 +1110410 +146497 +1495469 +488678 +1154200 +1669763 +1764778 +1240240 +1669767 +1134658 +1859376 +1762983 +146501 +1657672 +1403321 +146505 +1154197 +2461707 +2432595 +956367 +1167261 +401935 +2461686 +1072878 +1386955 +1783558 +338862 +1791769 +398967 +1974297 +2144563 +1054088 +1324140 +1859377 +1791749 +1072880 +48291 +2461670 +8133 +1773231 +462723 +2511591 +248969 +2511594 +1393956 +1912555 +2081837 +413870 +1212797 +1000976 +1167249 +2752333 +216480 +1136267 +1077560 +2144546 +1054089 +1859378 +1669764 +1091524 +2511585 +1212799 +2839010 +1240243 +751739 +2293675 +1773246 +1669762 +1083741 +413854 +1136271 +248970 +2511589 +418968 +413851 +413863 +326689 +413842 +418966 +1773247 +434813 +915742 +784992 +1154189 +1141881 +2432594 +1134653 +1727964 +1154188 +1134654 +1791740 +1783568 +409057 +1791747 +2144553 +1773239 +1063641 +1682097 +1212798 +1063638 +1764777 +1240247 +743604 +422117 +413836 +2745836 +751736 +1783575 +751738 +2511597 +2825992 +146529 +2144566 +685424 +343086 +1541193 +863834 +956391 +146526 +1541185 +1813579 +2782394 +863837 +2782196 +2081862 +462727 +1421430 +1859385 +2782077 +2782223 +2839081 +2782084 +915759 +915757 +2782389 +2081851 +1468765 +1959808 +2782372 +2081863 +2062421 +1622480 +1682100 +1468770 +48310 +1669781 +1495477 +939449 +939451 +462728 +2782322 +1764779 +2839103 +608279 +8148 +710826 +2839124 +268684 +1001011 +2144608 +863828 +2782378 +2839059 +1000995 +2782241 +785001 +2782371 +268696 +2319771 +785008 +2826016 +2293682 +1212800 +2782264 +2782362 +2826025 +2782121 +2781982 +2782182 +2351450 +901130 +757281 +2782215 +501475 +2782382 +2839055 +1813580 +2382972 +146524 +2825987 +2782148 +608289 +2782097 +2144611 +1001010 +863855 +48307 +2319773 +422119 +863838 +2782055 +2782250 +2530352 +1468762 +1704005 +2511629 +330143 +2782105 +2839182 +2461716 +1000980 +2826075 +2826070 +1791779 +1421422 +2847338 +785017 +1727968 +1901430 +2782136 +2853251 +650721 +2782006 +8147 +2839171 +1403327 +2782180 +384221 +1783580 +2382974 +2144629 +2511625 +1483534 +785002 +2839189 +2826022 +2081855 +2825986 +2144590 +2839201 +2782399 +2839129 +2432600 +2258965 +1682101 +2839204 +1622482 +2839102 +2839105 +2144570 +2782400 +2782020 +754830 +2782032 +1393961 +1324142 +2782335 +2782368 +405465 +524640 +216482 +2782216 +767814 +2461720 +784998 +2781986 +2782345 +81816 +405466 +2826038 +2782246 +2782323 +1468766 +2839078 +745175 +2782261 +1541182 +1688738 +146523 +2839088 +2839162 +2144639 +751745 +1159364 +48308 +2782130 +2839139 +1159361 +1072886 +2839186 +1000985 +751746 +1541164 +2782236 +2826057 +2782201 +767813 +1845218 +2782015 +2144640 +939463 +268741 +608296 +434858 +1483539 +2640596 +939464 +2281916 +1001095 +501483 +1001031 +1859435 +1001084 +2782424 +2782439 +1622592 +2036974 +956398 +863890 +1622538 +2281914 +2868510 +1001082 +48384 +1027479 +710832 +1622524 +1001091 +146672 +1791784 +2853343 +2853310 +434840 +524650 +1212808 +1200233 +1200228 +939474 +48396 +434848 +1813597 +311297 +1124108 +1175406 +1622523 +1468776 +1200229 +1901466 +1487639 +1240257 +1001035 +1077571 +1935474 +1200230 +81847 +1487644 +2383008 +462743 +1859434 +1541220 +2868504 +1103108 +434838 +358575 +2518439 +785025 +268791 +444565 +767841 +462773 +48361 +2258996 +1974305 +2782491 +2782457 +1791789 +2640603 +2511643 +2259014 +1653440 +1518187 +863878 +1518174 +1859423 +268714 +48395 +1171199 +2413475 +1653427 +1495509 +863870 +2036978 +1541216 +1859427 +488700 +290560 +81867 +146651 +1622544 +268733 +434820 +1124130 +427025 +48367 +2259001 +785031 +1468778 +462786 +785042 +2741525 +608312 +785034 +1063653 +146623 +1495514 +915771 +349767 +1039572 +2511633 +650724 +1845222 +863921 +146718 +2640617 +1487647 +48352 +235238 +1541231 +2839211 +427021 +2028515 +2782519 +146607 +48383 +1622562 +1704018 +863876 +1103093 +192510 +2782445 +146604 +1175388 +1974307 +1495489 +2308894 +2308893 +268753 +1622542 +2026806 +1175391 +2036973 +338881 +268707 +2735558 +351818 +785046 +146641 +1901442 +1783600 +2293700 +2511650 +2028512 +1859421 +1495495 +608303 +2144672 +146608 +364436 +146612 +1124120 +2575956 +863895 +2259008 +863896 +81839 +1072898 +2782452 +205186 +1001088 +1063651 +146688 +1175401 +939477 +2721555 +146635 +2826088 +1001044 +524648 +1518163 +2383022 +2518444 +146599 +1653439 +216499 +1154202 +146660 +364439 +1541218 +1901460 +863889 +1167303 +2640602 +1783594 +462735 +1175387 +608306 +205179 +1495503 +2258999 +268757 +298423 +2868507 +205193 +146596 +1622600 +146591 +2853325 +364438 +268789 +939489 +2853333 +48358 +1859415 +1240278 +462754 +956396 +1103107 +1622512 +1495513 +1001043 +1001096 +2782479 +1087737 +1001099 +311298 +1167304 +338883 +2784006 +2783681 +2783309 +2783653 +1039592 +2784604 +2826960 +2826424 +2783834 +1124138 +1124142 +2784588 +2783464 +2782970 +2784048 +2784350 +2783692 +2784546 +2826749 +2826689 +2826255 +2826501 +2782954 +2784017 +2826594 +2782993 +2826680 +2826504 +863972 +1039591 +2782871 +434866 +2783779 +2783598 +2782945 +2783773 +2826951 +2783414 +2783610 +1001108 +2783132 +2783231 +2782893 +2826783 +2784082 +2784467 +2782967 +2826838 +2783193 +2826997 +2783864 +2783724 +2826967 +2783141 +2783366 +2826199 +1311236 +2784247 +2783038 +2783607 +2784580 +2782850 +2783522 +2783473 +2826650 +2826886 +863944 +2826787 +2826238 +2680717 +2783795 +2784647 +1024711 +2783253 +2782891 +2783144 +2784236 +2826531 +2784593 +2784209 +2784230 +2783595 +2784092 +1124146 +2826499 +2783050 +2784238 +2782712 +2826793 +2826738 +2826968 +2826402 +2259051 +2782972 +2783395 +2826643 +2782671 +2784188 +2826821 +2782607 +1024712 +2259093 +2783745 +2259107 +2680720 +2783659 +2826832 +2784222 +2783202 +2783536 +2783833 +434884 +2826340 +2783338 +2784425 +2826150 +2784337 +2826755 +2782676 +2826129 +2511673 +2826509 +2783270 +2782721 +2783803 +2782718 +2826733 +1752794 +2783428 +48402 +863964 +2826442 +2782828 +2826701 +2783381 +2826556 +2826840 +2826535 +2783501 +2784664 +2782919 +488710 +2783091 +2783355 +2826241 +2783784 +2784742 +2782740 +2783667 +2784311 +2784676 +2783497 +2782808 +1103114 +1752783 +2784639 +311321 +2783081 +2783042 +2826392 +1752786 +2784690 +358580 +434882 +2826994 +2783837 +2826266 +2783485 +2782556 +2784360 +2782863 +2783159 +2784437 +2783617 +2783927 +2826315 +2259056 +2783599 +2784307 +2784571 +2827012 +2782796 +2783971 +146755 +2784275 +2259102 +2826981 +2826448 +2826769 +863940 +2782563 +2826364 +1622614 +939493 +2783988 +2826635 +2782928 +2783591 +2782752 +2826856 +2826467 +1175417 +2784005 +1468798 +2782957 +2783247 +2826247 +2782914 +2784594 +939490 +1001109 +2784552 +2783499 +2784456 +1124148 +2783306 +2784577 +2783554 +2783367 +2511666 +2782610 +2826142 +2784646 +2782971 +2784245 +2783854 +2782711 +2826265 +2782754 +1103113 +2782620 +375149 +2826119 +2783005 +2784591 +2826230 +2784027 +2259052 +2784733 +2826847 +2826773 +2784526 +2783478 +2783727 +2784294 +2826745 +2784369 +2783387 +2826979 +2826969 +2782976 +2826373 +2782854 +2783686 +2783889 +2782744 +2782881 +2783095 +2784383 +939492 +2784264 +2826860 +524655 +2783568 +2784661 +2783756 +2783451 +2783941 +2783826 +2783858 +290565 +2826399 +2783181 +2782528 +2783156 +2783824 +2783929 +2782582 +2782840 +2784461 +2784242 +2783360 +2783115 +2826525 +863971 +2826511 +2784119 +2826587 +2783026 +488712 +2784382 +2784059 +2784706 +1468787 +2783121 +2826382 +2782753 +146753 +2826576 +2783946 +2784719 +2784008 +2826487 +2782553 +2783661 +1200249 +2783077 +2784681 +2782557 +2783582 +2784117 +2784039 +2783828 +2783650 +1039586 +2784765 +2784101 +2782890 +2784768 +2826161 +2784615 +1024709 +2826330 +2826157 +2784296 +2782839 +2826224 +434879 +2782694 +2826685 +2826724 +2782611 +2783098 +2782600 +2826926 +863948 +2783675 +2826417 +2826461 +2782602 +2782551 +2783899 +2783936 +2784763 +2783476 +2782540 +2826601 +2826623 +2826691 +2783633 +1752817 +863970 +2783469 +2826328 +1468782 +2826462 +2784761 +2826493 +2784445 +2826379 +1468806 +2782853 +1468788 +1622619 +146733 +2062497 +235278 +1375359 +2259159 +2827061 +1622645 +1518190 +146983 +48464 +1468816 +2827043 +395176 +146886 +863993 +2062495 +235262 +1001183 +147014 +147097 +48691 +48686 +375166 +146946 +1819566 +2062503 +48593 +524657 +147064 +1518207 +146907 +2103547 +205253 +1409154 +1072911 +48513 +2062483 +48458 +235312 +146901 +146858 +268821 +147241 +147167 +2259186 +216507 +147046 +710912 +268808 +1001159 +146807 +1468890 +2103502 +2103418 +1468849 +2259198 +1262130 +2827099 +147152 +1518271 +146945 +338934 +147061 +398981 +146882 +1240293 +147158 +375156 +147211 +147102 +434905 +2081898 +147227 +375159 +1518269 +1001202 +2103517 +338948 +235289 +268859 +2827054 +268825 +235279 +2103437 +147171 +375165 +338937 +710914 +2103470 +1791795 +1468887 +338960 +608422 +338917 +1518229 +338912 +146804 +2368616 +2259167 +147242 +1409158 +338942 +1518261 +48512 +48677 +147215 +205213 +1622679 +205233 +1518244 +48527 +864029 +1704022 +1518230 +1001165 +235325 +1001182 +2827024 +608357 +2081899 +235270 +338902 +205207 +434919 +338908 +2081904 +48466 +48712 +434911 +48551 +48416 +375160 +192519 +1072924 +48462 +147238 +147181 +2827090 +1103135 +2259166 +1468845 +147015 +351823 +1001161 +48713 +375171 +147236 +2103450 +2103441 +2081919 +767855 +2103489 +1518201 +2103454 +2827017 +710876 +235282 +2259140 +2062493 +1762998 +48423 +268824 +710907 +2827049 +2827039 +146939 +268803 +147135 +147204 +147047 +2103469 +330167 +147166 +2259163 +147133 +434922 +2062489 +2259136 +1072936 +235319 +146916 +268818 +2062449 +2827035 +48599 +147080 +767905 +710919 +2081905 +939499 +48542 +338958 +147096 +863997 +864022 +2827074 +1167315 +1001131 +710895 +338909 +757292 +205273 +147036 +146780 +81875 +2103468 +1468881 +1468837 +1001198 +710869 +1813621 +146918 +2259150 +235301 +2827058 +48578 +1762986 +147119 +2103429 +1001241 +864013 +1761559 +2103486 +146837 +1773275 +608353 +666938 +338943 +147175 +1468821 +2103444 +2036988 +1518196 +268878 +1762996 +2827038 +2827103 +2062482 +1622676 +710870 +235333 +205219 +48598 +2103474 +146847 +146902 +2259179 +2103505 +1001214 +2062431 +146841 +147131 +1001207 +2062451 +1622641 +1761557 +1167320 +205240 +235309 +147129 +2103487 +235335 +1072931 +146908 +767857 +235315 +147148 +375174 +147127 +666939 +1167321 +2062469 +235291 +2103422 +1763010 +2259134 +146786 +338894 +2144687 +146857 +48507 +1001211 +147008 +1001163 +338953 +767885 +2103421 +2259145 +710859 +1072944 +1468855 +48505 +488732 +147973 +235342 +205288 +1159372 +1791804 +147711 +147855 +147606 +147303 +2293726 +147610 +1622788 +608466 +710965 +608449 +205333 +338987 +2259363 +1200256 +711061 +147752 +235406 +2259341 +413916 +147527 +1761561 +147641 +147245 +1622732 +1083767 +2259242 +268913 +147731 +2827119 +608607 +346873 +1901479 +427033 +147467 +147852 +608588 +711001 +864106 +147842 +147961 +147785 +751751 +147443 +685435 +1541267 +2259270 +739767 +269016 +268969 +148067 +750564 +147825 +2745840 +748820 +608452 +711071 +608492 +434941 +1001378 +2275572 +148019 +864127 +147883 +462800 +235391 +405478 +147493 +268886 +1001272 +2259338 +147604 +2259384 +710951 +269060 +731381 +248985 +147656 +1159382 +608514 +488728 +1622887 +48729 +148129 +1622820 +147919 +147699 +147721 +216518 +147515 +147737 +235340 +608562 +8188 +147958 +710974 +147814 +147950 +413910 +1240301 +147897 +48766 +48922 +147744 +2259365 +1541299 +147874 +351829 +2062536 +2062538 +1001353 +2259347 +147450 +147844 +864128 +2259280 +710969 +710972 +147970 +401944 +2827122 +608463 +1421451 +147279 +608596 +147348 +462814 +148073 +147337 +147332 +330203 +192529 +48916 +147862 +268881 +864060 +147856 +1783634 +608429 +711067 +216510 +608589 +148087 +1167334 +743637 +48853 +147756 +2511693 +147652 +147635 +147464 +147501 +1001338 +608435 +338984 +1495527 +330198 +147412 +710955 +147994 +1622684 +147967 +216513 +148018 +147366 +148029 +1468915 +710991 +2461774 +147863 +147833 +666964 +2259251 +608593 +2827131 +2319801 +354171 +268977 +434942 +48927 +864072 +268879 +2351477 +147885 +2853354 +1622831 +1072953 +1182089 +2351466 +2259350 +1682115 +2144697 +666961 +384224 +608438 +375193 +1622864 +147349 +147437 +1669793 +710999 +2259328 +147494 +767910 +147372 +147555 +364455 +1154207 +1001320 +1912567 +268947 +48734 +462828 +147559 +339006 +48904 +48850 +147940 +1682117 +147508 +1622738 +330192 +346865 +608543 +48797 +1001283 +339009 +608455 +2351483 +1622804 +147677 +2144726 +608604 +2511688 +939542 +413921 +608441 +939524 +666947 +2062529 +339008 +2259250 +1859448 +147496 +147376 +1001326 +1622700 +338977 +2259310 +1622810 +147394 +81909 +346862 +147329 +192528 +48767 +147296 +269037 +268931 +235398 +710988 +147758 +147848 +147624 +743635 +1001327 +147554 +608499 +1994894 +147623 +147808 +205301 +205330 +147988 +1622913 +409073 +48912 +711023 +1622900 +147275 +711000 +1159371 +235387 +864052 +147424 +48826 +147280 +444581 +1622822 +48878 +148131 +2511692 +2259354 +147906 +608446 +434948 +268888 +2319796 +864075 +147409 +147700 +148030 +462816 +608568 +939504 +1813633 +745180 +1167350 +48777 +2259364 +608614 +1622911 +205311 +147720 +1622710 +48809 +939543 +743631 +147658 +1159374 +148071 +268993 +1622812 +48784 +1541264 +147714 +147861 +147797 +608570 +1212813 +147626 +235403 +147900 +147433 +608467 +1124167 +1001329 +711006 +147939 +333339 +710937 +147564 +956404 +2680725 +81890 +608552 +608601 +395181 +205297 +205303 +1622818 +608506 +147668 +444587 +147966 +147270 +330191 +148027 +1669800 +2259304 +1763023 +1001300 +235361 +2259356 +434945 +147403 +2383033 +235356 +413908 +269055 +2144714 +389572 +1622833 +147611 +147930 +147724 +743632 +1773287 +1136299 +1351733 +2575959 +2037024 +326727 +216535 +192534 +1791814 +2827137 +2511697 +1167355 +248995 +1421477 +326716 +1182091 +1813644 +2144785 +1541382 +2144805 +1054094 +1541326 +395215 +1763035 +81913 +395213 +413935 +1783641 +409092 +326715 +395207 +330221 +1813635 +757295 +326720 +524672 +1773318 +1541353 +1136280 +1167360 +2144794 +1541372 +1541318 +2144797 +2432628 +785110 +785090 +409077 +524675 +326743 +939572 +2319835 +2827139 +1397912 +1483544 +409085 +1182093 +2461814 +1072971 +2081932 +524676 +1763031 +1974310 +737564 +1541386 +956441 +1773304 +785074 +1541355 +1159396 +2259400 +48942 +2037027 +2293733 +409090 +2432617 +767912 +2144731 +1054102 +2827136 +2144780 +8205 +915809 +1154208 +1159392 +2423447 +1791844 +1421455 +1622940 +81931 +1001393 +2575958 +1136295 +248993 +2015212 +409087 +751758 +748823 +1393965 +413930 +2461811 +2144743 +2423464 +1001412 +2037017 +2037016 +1791824 +2037025 +956424 +1541356 +1541348 +1145922 +2752341 +2530359 +956447 +1167354 +343109 +1421482 +1421462 +1912569 +2144753 +1541344 +192547 +2511694 +1859459 +326708 +192536 +2427713 +739770 +1541345 +1791831 +1167357 +1145917 +326718 +2144752 +2293746 +1773309 +326724 +1063679 +81920 +2684716 +330206 +1783642 +1791813 +395197 +1145921 +2037019 +192537 +2461816 +1351736 +422137 +2144756 +1541367 +1773290 +1783645 +1077580 +1773301 +1688746 +248998 +1145919 +915843 +192540 +2144801 +1200260 +1541379 +2461815 +1688745 +216555 +1669817 +330213 +1761562 +2144768 +2461813 +1262143 +1773321 +2839297 +405494 +427045 +1212836 +1212854 +148168 +785124 +2511737 +1167371 +1240309 +1727987 +1063702 +48960 +462928 +2784884 +269084 +2037032 +2461844 +1541391 +1994895 +1393966 +1845243 +1240348 +2461837 +2511728 +48970 +1859485 +2784849 +1200267 +269128 +1240350 +1912575 +2640655 +205338 +1783659 +2383044 +1063704 +1763041 +1682134 +235433 +216586 +750567 +1791861 +2839255 +1783664 +1773331 +2839226 +444593 +358606 +1859482 +1783656 +1813673 +864175 +269133 +1212829 +81936 +2640640 +2062551 +864162 +1752832 +476565 +1752836 +346887 +2839308 +462842 +1622952 +216562 +2741528 +501494 +148164 +1541403 +1901493 +1072981 +422139 +1212852 +269101 +1001449 +1240325 +427046 +346882 +269085 +1240334 +248999 +1001421 +434974 +524685 +2351503 +434968 +1682137 +2461873 +434984 +2037037 +711084 +2839277 +2839252 +2839293 +413966 +462915 +434996 +1813655 +462898 +1935495 +462852 +1001441 +1124181 +1212850 +235411 +1063701 +2839298 +148169 +269086 +269102 +2839237 +2784775 +1001436 +343114 +2293756 +1791860 +1752833 +2784925 +235423 +2461861 +2518455 +2784802 +2839244 +413970 +148163 +785125 +1783661 +2383042 +2839266 +434972 +1727986 +2784840 +192548 +148187 +1262146 +148158 +444604 +939581 +434992 +413964 +389591 +1912570 +1091541 +1240354 +462934 +785121 +2839251 +1813680 +608647 +216577 +435007 +1669823 +2784894 +1072987 +711078 +1124182 +2839272 +1682142 +1182097 +1541388 +476570 +269103 +488755 +1813658 +1935487 +488766 +216579 +462911 +1859474 +462880 +269083 +2351494 +1167372 +1212848 +1541389 +2461854 +148166 +2839307 +1791852 +2784906 +401963 +2839262 +346892 +1212847 +427039 +148175 +192557 +751764 +148156 +435005 +2839225 +488761 +216567 +1791864 +462885 +1001425 +1001424 +2784918 +48975 +444609 +864170 +269099 +192551 +395224 +2144887 +2259408 +915850 +2259415 +269151 +524714 +235453 +216601 +1727991 +2640688 +1541461 +148202 +1365848 +1935506 +1212871 +1262182 +364485 +375210 +488784 +346906 +1251671 +524719 +1251682 +8243 +2461910 +48996 +956463 +375240 +81964 +2144837 +8222 +375249 +2144849 +864189 +148208 +2259414 +1813683 +2144850 +2461927 +939588 +2081958 +384230 +864190 +375211 +1083817 +49013 +2461904 +1251681 +1622995 +48995 +346901 +1132014 +785133 +2144853 +2144894 +939589 +216600 +48998 +757320 +1791877 +1262189 +339039 +1935503 +1251675 +49004 +8227 +2144903 +1623002 +1682146 +488770 +311383 +49019 +2640662 +1813684 +1262162 +333359 +1935502 +2461900 +8256 +343129 +8238 +1046095 +364472 +2640680 +757319 +1541457 +2081956 +1251686 +311381 +1132020 +2259416 +476580 +49011 +1046096 +1375362 +767915 +956476 +1212858 +488779 +1262171 +2081951 +524698 +1912583 +608653 +2144905 +269167 +1262160 +269158 +2640691 +2461905 +2680735 +375222 +757309 +8258 +8240 +364473 +375243 +81962 +2640663 +2004407 +1054106 +2081945 +81965 +524702 +2461891 +269155 +2640670 +1421504 +1813705 +351858 +462947 +1240381 +1240376 +1154230 +8303 +2144927 +1773355 +290609 +1103140 +1091545 +358608 +2293787 +1154233 +1541509 +2461966 +1541552 +1240379 +1154239 +375284 +339052 +785136 +1136321 +2293771 +2530371 +2293774 +1240388 +864204 +2511783 +1791893 +1541541 +49037 +205360 +608667 +2461953 +2383073 +1974314 +364487 +1262212 +956490 +1175442 +1773352 +1182116 +216619 +148251 +2293789 +1495556 +1859511 +1262198 +915873 +2530375 +1154238 +351856 +1212882 +2293769 +1752854 +1541521 +8300 +1682150 +1763042 +435031 +1132839 +358611 +462960 +8291 +2680742 +1132842 +1541523 +1240374 +2735568 +375275 +1136313 +1083822 +418989 +2308934 +1783683 +2062555 +1240372 +2461960 +2144926 +1623035 +1058981 +444635 +1901501 +2308932 +2752355 +1813697 +49035 +1167388 +685460 +462952 +1541529 +2383056 +864203 +330229 +339051 +1054108 +1541537 +216611 +1935509 +1541530 +1054109 +1167396 +488792 +435040 +1262207 +1773354 +1623042 +1171205 +8289 +1773357 +939602 +2144912 +1212888 +1623039 +375289 +488799 +1541526 +1132838 +339046 +1783684 +1212875 +1240386 +864197 +364491 +1182121 +8296 +49020 +1859504 +711100 +2413508 +1623053 +2784936 +497279 +2785243 +1859523 +2462010 +501501 +939636 +2785266 +939669 +269271 +2037053 +750572 +2853623 +1518292 +1518315 +1136341 +1175444 +235500 +2785161 +1623158 +2383082 +1240413 +524736 +2784942 +2081968 +743674 +907579 +650732 +2319851 +1859527 +2785091 +2785149 +939632 +148710 +216630 +148269 +2853372 +2785027 +2576009 +148393 +1783689 +939655 +1791908 +1791914 +375362 +148259 +1813733 +358635 +148508 +413990 +2853367 +1059002 +1182127 +2785132 +750595 +2853673 +1103143 +148634 +339140 +2785135 +2785268 +608695 +2853532 +1813724 +435116 +1200306 +1623112 +524742 +2785062 +2785361 +2853471 +389608 +1468974 +346957 +1262216 +409123 +1710869 +1541600 +1813717 +2853610 +339062 +375382 +2785237 +1623179 +2259466 +1182151 +49167 +743672 +435069 +864238 +1001538 +2853514 +205446 +1001595 +1518290 +1167416 +1901504 +2853494 +2259454 +711117 +2853387 +346945 +1541562 +1154248 +488825 +269176 +1200291 +1959824 +1623127 +346918 +148365 +915889 +1001533 +1136333 +148352 +427057 +2785030 +1682155 +731391 +1487673 +1773368 +413991 +501498 +1365854 +2784999 +2853562 +235493 +1001508 +1682156 +1623087 +2421022 +1136334 +269282 +413992 +346917 +1154252 +444652 +907564 +476600 +2432636 +339064 +148565 +235519 +2081967 +216624 +375333 +2785207 +2853547 +2081977 +1001562 +148590 +148350 +1468950 +1001580 +2461980 +148533 +148409 +148606 +49108 +269233 +311415 +1901520 +375334 +375327 +711153 +2785043 +2293797 +2081972 +685477 +346933 +148317 +2259427 +2359795 +2640703 +785142 +269247 +435066 +1704048 +2853672 +2144994 +444643 +956502 +148669 +148515 +750571 +148581 +235476 +2853505 +2785256 +1468947 +864302 +1813746 +8312 +1623195 +2785001 +205400 +2785270 +49139 +1495562 +2383076 +743665 +1262217 +1682164 +405546 +269269 +1001582 +488854 +608745 +2259462 +463048 +49047 +148469 +311416 +1110432 +608707 +148441 +343131 +463049 +1343466 +1136337 +2785109 +311419 +444660 +148692 +2103575 +2259445 +864226 +1773390 +148584 +1623208 +1001641 +249022 +2103580 +1468984 +1262222 +1495585 +148596 +1845252 +269208 +1468952 +339142 +148716 +2785022 +939614 +721290 +711146 +915879 +2853607 +339137 +1001675 +2145021 +330287 +205398 +235512 +1058984 +2853573 +49162 +2785343 +1132850 +2785088 +148610 +375342 +2853529 +405547 +235492 +395251 +148379 +2785151 +148320 +1773382 +1182149 +148424 +2461994 +2853604 +1212913 +767922 +1845257 +2853671 +2351508 +413996 +435062 +148708 +2259441 +956521 +463038 +1901519 +269268 +463010 +269245 +2784957 +1103158 +346950 +346964 +1240419 +2432638 +524748 +463013 +2853567 +330244 +1375364 +358641 +1421536 +330299 +82011 +743656 +1487674 +1145947 +2259513 +1773364 +2785140 +488830 +711113 +1483550 +49170 +269204 +235468 +1001671 +2853642 +2853516 +346975 +2853453 +2259516 +269180 +2145027 +375364 +711126 +608769 +1719511 +463046 +907567 +49059 +235483 +2784982 +81989 +2785217 +1541575 +2853442 +685496 +608689 +2785250 +1773380 +290620 +148656 +269211 +907569 +608705 +148526 +375322 +399006 +1001598 +2785156 +339102 +1783685 +864285 +864290 +1859542 +1623198 +463074 +2383079 +2785095 +375341 +444645 +427055 +1154253 +1001522 +1468976 +2853633 +81987 +2259450 +339144 +2785097 +2785058 +2784964 +1541576 +743660 +435120 +1001633 +148678 +375383 +1664903 +463037 +907593 +2062578 +608783 +1136332 +1182144 +2784939 +339106 +907586 +148458 +435102 +346970 +463015 +1050140 +148562 +269253 +1623176 +939662 +2576003 +269181 +2081983 +148609 +2144961 +608692 +739790 +2103594 +608693 +2853585 +685468 +2853637 +8309 +435112 +148472 +333398 +427062 +1821668 +2144987 +1623075 +1001583 +148558 +2785299 +2062563 +1664901 +956505 +2145018 +375366 +148348 +1541577 +148322 +1704040 +427064 +2144995 +2037048 +608727 +435100 +2081965 +399000 +1764795 +2853476 +1001546 +1167420 +435067 +2081978 +148389 +488836 +1623088 +2144984 +1623091 +2785131 +2853660 +753264 +148483 +488841 +2625110 +864293 +1773363 +2853583 +2739618 +2853394 +721287 +1495572 +750591 +2081964 +427056 +339089 +435096 +2785031 +1182146 +1001616 +1200293 +346981 +488817 +2062572 +750586 +148273 +235479 +2145016 +743647 +1623213 +49135 +235534 +711155 +2853420 +148323 +148399 +2421047 +346925 +1421533 +49132 +235532 +269257 +346972 +2144962 +711119 +721283 +2853462 +2853606 +1669836 +915886 +2853369 +1518285 +82001 +395242 +864222 +711103 +1859533 +2259482 +2785355 +330300 +1623096 +375317 +339069 +49090 +1182137 +290615 +1240403 +737570 +864212 +148521 +148546 +249027 +2461996 +939608 +1145952 +1682154 +2421032 +731403 +721292 +339074 +1001663 +346962 +444664 +864373 +711168 +2259530 +524764 +1541654 +650733 +488865 +907602 +666981 +1469034 +2082004 +1421565 +2443823 +2145175 +269289 +1623249 +524760 +1682176 +864368 +339220 +435125 +2511837 +82031 +2511822 +1541657 +1688776 +347022 +1175455 +2259517 +1773441 +1623255 +939709 +1469013 +2062596 +1132859 +1421559 +711169 +2462021 +414021 +399014 +1154266 +49178 +1001684 +347010 +148805 +1469038 +395261 +2145064 +2432644 +1469044 +608820 +2145096 +148755 +2423479 +1001683 +1959829 +405593 +148744 +1495590 +148731 +2145068 +2145156 +2319891 +939688 +939717 +1392757 +864384 +235549 +235550 +2145061 +269334 +409136 +2462020 +2145058 +1682193 +2351532 +2432653 +721308 +2279536 +2432657 +463092 +1623242 +395263 +1763057 +1154278 +2145080 +1773416 +1421545 +915896 +339172 +2730921 +148783 +1141960 +2145051 +2853695 +148832 +939692 +269306 +2281926 +608816 +405558 +269301 +339165 +269286 +1469033 +488858 +907614 +1141933 +347032 +395284 +2145118 +395259 +148788 +864335 +2145095 +2351522 +2462052 +405567 +414030 +608831 +666980 +427067 +785162 +1272346 +1901524 +1763090 +343137 +347037 +1783738 +731416 +2259558 +235565 +2462048 +2319855 +488864 +767927 +956525 +347021 +2013390 +915923 +2259552 +463089 +608838 +2068546 +608826 +339217 +1682168 +409133 +347027 +2145155 +1773402 +1688770 +1682206 +339184 +414001 +249028 +2259535 +1773432 +2462060 +405589 +1764805 +785158 +330305 +1669843 +333409 +2293810 +1141953 +2259548 +249031 +1688771 +148730 +2081997 +347029 +1682180 +1682191 +1704056 +864378 +333411 +1073005 +1073006 +2462063 +1623220 +2853697 +205479 +1421549 +1783731 +235555 +339213 +1141947 +1763061 +2432664 +2037074 +148736 +269309 +1813760 +8326 +1773406 +405605 +2680750 +405596 +82021 +414027 +2293821 +347065 +721304 +2383085 +1001682 +939704 +333415 +666988 +2145150 +939735 +608796 +1124204 +1421564 +2145144 +269328 +1059022 +750599 +399048 +2319890 +216649 +650735 +524761 +524765 +333412 +939697 +608801 +1469029 +1813770 +2319875 +2351526 +405561 +148743 +1974319 +395283 +1783721 +2511806 +1469020 +1783727 +2351523 +1623216 +1145965 +2511813 +915904 +2308950 +414043 +269331 +864392 +1773417 +2037061 +915920 +2355084 +2259523 +2511841 +2259565 +339187 +347013 +1763066 +608853 +1773415 +1813764 +235562 +375415 +907611 +148824 +2279533 +1623257 +2423480 +148816 +216666 +1469040 +2351529 +2145120 +2062598 +347006 +399044 +2576019 +685510 +1791923 +608854 +2081987 +1541642 +2511807 +939683 +1623234 +1154281 +339200 +1103165 +2680754 +148844 +1669855 +1001728 +1001761 +2351549 +1421584 +2511882 +1845303 +2259629 +1469067 +711179 +2259605 +269337 +463106 +1421581 +1541672 +2625117 +2413514 +1974323 +2383092 +915935 +235608 +2293840 +1392763 +2308960 +1518385 +939744 +435143 +2511862 +1518405 +333424 +1495632 +1059059 +2279542 +2576052 +2413520 +435150 +1623349 +1001775 +1623329 +1541678 +2013392 +864454 +235600 +2462088 +205496 +1469078 +1200363 +2259603 +269357 +205502 +216679 +2082030 +864460 +2576024 +864444 +666991 +2145234 +864436 +1059070 +956546 +956551 +2145274 +2259595 +1783763 +864521 +1469089 +148871 +956549 +2082022 +743680 +1302245 +864515 +2145216 +1623351 +364500 +49234 +1845279 +608900 +864431 +2145242 +1623285 +1293113 +148852 +1001772 +2413523 +711177 +864485 +1623321 +375430 +1518403 +1623352 +2576041 +2145276 +1103179 +1752879 +1103169 +2355086 +2383098 +1200355 +1469076 +1623336 +1175467 +1623333 +1845285 +864502 +205500 +1828297 +2576025 +2259604 +1994906 +2383097 +915931 +524808 +1421577 +2259660 +2145279 +49221 +1623356 +1396660 +864421 +864497 +2293846 +1483551 +1001758 +608886 +1783775 +1845278 +2511874 +1752873 +1623353 +2293845 +1385704 +2432689 +2062633 +2285752 +1518352 +1828295 +1541666 +711191 +731419 +2319902 +864420 +1469074 +1664907 +1001777 +1396655 +864455 +2259621 +1518355 +608884 +608907 +405611 +1469056 +767930 +1623292 +1541662 +915929 +2145202 +1518379 +1845271 +2259590 +2082033 +2145278 +1175468 +2145251 +2351538 +375446 +269356 +2319896 +2037077 +1404935 +1518371 +1495629 +524798 +2259586 +1728011 +864490 +435142 +49215 +2308971 +864471 +1175464 +956548 +2443856 +1518384 +1623320 +1935521 +2145200 +901168 +1541673 +148880 +864505 +2293841 +2145248 +1845288 +192593 +608915 +2259607 +2103633 +864504 +864492 +608885 +1175458 +2462074 +524786 +2259591 +269339 +711183 +1845280 +339237 +2511864 +2145280 +1653461 +1495618 +1324206 +1495628 +785169 +1845301 +907617 +1728012 +1623283 +1001786 +2003200 +939836 +488928 +609169 +609223 +399072 +2013401 +488897 +750629 +1240438 +609342 +2443876 +1518480 +488879 +609412 +731509 +149218 +2259672 +1103191 +731461 +2443875 +399087 +939888 +235736 +2259745 +2259752 +711231 +235732 +1039616 +395291 +711352 +1783811 +1103206 +149184 +939789 +609191 +463193 +1682233 +235618 +1343494 +711386 +2145283 +609256 +2003230 +149217 +1001869 +609168 +1200367 +750694 +750620 +750695 +753327 +731504 +1664916 +435178 +49312 +731468 +767954 +435171 +609416 +753308 +49361 +864592 +1783796 +609166 +1103192 +235681 +1704092 +2259700 +235646 +750624 +49330 +1469098 +2309001 +149077 +1664915 +2259761 +235775 +49329 +711388 +435257 +49364 +488908 +1240461 +864571 +1365897 +609280 +2062645 +2413528 +1623393 +711200 +1901545 +731492 +149207 +609094 +2103693 +939822 +731513 +2003224 +2259753 +49350 +609383 +1001789 +149057 +1518441 +2103686 +463197 +1001912 +463172 +750618 +1240453 +1682236 +609043 +148969 +235641 +1001783 +235766 +463187 +1710884 +1103180 +2103713 +609344 +2103676 +1719529 +149014 +269370 +149163 +609034 +235637 +2103679 +49338 +269374 +488899 +435302 +2003210 +435290 +399088 +609019 +49319 +1001871 +235672 +49326 +49271 +864544 +609299 +1999529 +2103670 +1073017 +609348 +609004 +1124220 +939842 +939860 +1343516 +721322 +149172 +149139 +731550 +609297 +1783804 +399079 +1487694 +463117 +235696 +1054129 +2576060 +435265 +235644 +1653463 +205528 +2103657 +609359 +1469108 +731511 +1999512 +149196 +2103700 +1059128 +731512 +2003226 +711314 +2003279 +939871 +1385733 +609110 +2319926 +753305 +2309002 +463126 +148971 +435167 +1381265 +235616 +235769 +1518436 +711289 +2003262 +1141981 +864602 +609116 +939780 +2003245 +907649 +235728 +463116 +1154313 +1167428 +1365885 +8352 +311435 +1124213 +750701 +711336 +609066 +1682241 +2293851 +609206 +235626 +609150 +1059106 +1124221 +463140 +49408 +609146 +939768 +1752887 +290629 +1343519 +2259736 +269367 +2259780 +939777 +609333 +1487686 +148889 +2103737 +767946 +609295 +1293126 +731545 +2007603 +609109 +750674 +1518435 +711215 +1469123 +1999517 +711219 +1385729 +311455 +414064 +1518490 +205537 +1240445 +1392779 +1103207 +463108 +1392780 +609036 +1783778 +609238 +311427 +609205 +2625136 +269378 +2103720 +2719300 +711282 +149138 +149088 +609310 +939844 +1487699 +1001850 +667005 +1059127 +1469135 +731428 +609330 +2309004 +1661047 +435258 +939875 +405647 +435289 +1469116 +1001864 +149222 +1262230 +750683 +608971 +711272 +235709 +149170 +1054126 +1664939 +49383 +609165 +2383109 +2319939 +49402 +1001820 +205510 +2007599 +609071 +414056 +939792 +1365864 +1124207 +2003170 +731543 +148985 +939838 +8348 +1343517 +435174 +2003172 +711238 +609431 +2259676 +864530 +609163 +939870 +1103189 +1518422 +767955 +2351592 +1293121 +2013397 +148919 +1385734 +1141977 +1001841 +1813798 +311432 +750613 +49306 +1001887 +1392786 +235642 +609080 +608982 +609308 +235693 +1752903 +1518493 +2319917 +1704091 +2015224 +148996 +235688 +1984991 +939833 +1396662 +1175469 +2103757 +1001795 +235620 +1001863 +49315 +148974 +435201 +435217 +49262 +1518412 +2103674 +609175 +609213 +750672 +711290 +711338 +235684 +269410 +608958 +750660 +2351570 +2259686 +2003232 +711375 +49370 +1103194 +435256 +311441 +609193 +1343485 +235634 +1623401 +2293854 +2003201 +414055 +2259699 +2007623 +205569 +463201 +608990 +149065 +149089 +463167 +205544 +149020 +1409175 +609337 +1110434 +435294 +149102 +1682226 +711268 +205580 +2003265 +1001861 +1968992 +1518444 +235645 +753285 +1623399 +2103684 +1365883 +1001905 +1059131 +1365901 +667011 +609127 +753331 +311454 +2351606 +1469115 +731537 +1343512 +1001909 +1752885 +711387 +609406 +269399 +1175474 +235610 +463188 +235743 +2259710 +750696 +399066 +2319929 +2680761 +435253 +1704082 +235730 +731431 +1124206 +939824 +1001814 +311436 +609366 +864570 +609274 +427068 +1154311 +1752898 +435187 +609182 +2383108 +667014 +667004 +2062636 +2351577 +235701 +609139 +609405 +1404941 +1351763 +609021 +864549 +148901 +1385759 +1240442 +235659 +1999533 +2003248 +1212952 +488941 +1752905 +1145971 +864623 +1063731 +1182158 +1541708 +1167434 +476623 +2530404 +2511909 +1375385 +476614 +1124253 +2752369 +1623437 +2421052 +907665 +2511920 +1623443 +2576065 +1623419 +1200377 +375486 +711409 +311474 +444689 +405668 +2462101 +2285754 +399095 +1845341 +1240470 +463281 +2680764 +1541703 +1154319 +49416 +1623412 +389621 +1154328 +1828303 +405656 +2625144 +1001955 +2576074 +731552 +2785422 +389626 +1073037 +389620 +750717 +1764819 +488954 +149370 +1083828 +907661 +427069 +1001993 +149332 +1001989 +347128 +347120 +2576080 +2462109 +1791935 +915938 +1001986 +1154322 +743700 +463255 +347159 +2785472 +1623493 +192597 +405676 +269474 +711400 +1999535 +2145293 +1813831 +1212933 +149283 +1682268 +205612 +375450 +463272 +1240485 +1764824 +1240520 +1124251 +1845329 +753354 +235796 +1240471 +49444 +2680770 +1669860 +269429 +2421055 +235777 +2785403 +463266 +463226 +1001978 +864627 +1001922 +1813803 +1001975 +375458 +149282 +1240468 +269432 +476617 +2015225 +205598 +375460 +347117 +739797 +2462128 +149350 +330345 +347126 +1212943 +2511924 +149375 +1167430 +149342 +351866 +269430 +235817 +149365 +1813805 +1397917 +269457 +269467 +1541698 +1728017 +1001990 +2462137 +2576105 +395297 +347112 +463271 +205605 +2785485 +419005 +205625 +1912643 +711414 +1704098 +1240489 +1821671 +1912636 +269439 +1240490 +2511914 +205628 +1623455 +1813800 +1262234 +609470 +339262 +2432701 +956554 +463262 +2259793 +2462107 +1763097 +1845334 +2752370 +1154317 +49434 +49424 +1136383 +1001949 +354181 +1124249 +414085 +2462094 +939909 +269446 +1240507 +1001996 +1001984 +405661 +488991 +2576087 +1657675 +1623434 +2640719 +1145983 +1124234 +2745861 +269472 +2511921 +358656 +375479 +1669861 +685535 +235807 +2785440 +1935525 +2785407 +1541709 +1912653 +1001941 +149301 +1063725 +347149 +750711 +1124245 +1623483 +2785406 +435366 +1182159 +1001923 +1343541 +1381272 +463275 +2640718 +375449 +149297 +269469 +2145295 +2785443 +347077 +1813853 +864613 +1859592 +1002007 +333439 +235836 +249047 +711423 +1146004 +1773485 +939916 +395320 +419014 +2259795 +1764827 +1182171 +2293862 +1212967 +2293876 +2742573 +785221 +864676 +347186 +351874 +1136434 +2432714 +419012 +2462269 +2145304 +1212972 +1813885 +1773535 +737580 +2462242 +753357 +395302 +330353 +1141999 +685540 +347197 +463289 +711426 +216707 +1212986 +343149 +2709571 +463298 +488997 +1791967 +347203 +1669870 +2462177 +1859595 +1813878 +721329 +395330 +2145347 +1240526 +685557 +347206 +685546 +82059 +347166 +1773468 +1002008 +2462218 +739800 +269504 +419040 +2293875 +1145997 +1002011 +269488 +235832 +939918 +2462251 +235839 +1764829 +1773565 +767959 +753361 +330356 +1136416 +414096 +1136431 +1495658 +333436 +2443883 +956571 +419010 +864650 +2145321 +2015240 +2462217 +2785504 +2293873 +419024 +1212975 +1761583 +1212966 +347201 +1783815 +405686 +1623521 +2462213 +1141994 +347205 +2462171 +2293874 +1002016 +1773517 +750730 +2145327 +785200 +235829 +1385762 +2462254 +1763106 +2145339 +2293863 +405702 +767958 +2145345 +685542 +409158 +1182182 +685550 +757340 +1212983 +711421 +395314 +731561 +1773495 +2082048 +750729 +1404943 +785213 +1791969 +2752381 +405708 +1145990 +1623515 +757341 +343143 +405703 +1397924 +1764831 +419038 +1136395 +339297 +1091572 +1212971 +1859599 +1132889 +1159441 +205647 +1518508 +1791977 +2145329 +1063746 +524859 +347173 +2511950 +1773576 +2511942 +2015237 +1073042 +489002 +2011571 +1182172 +2259812 +864668 +956580 +49454 +419035 +1063745 +1136398 +2462178 +1773569 +721343 +1141996 +2259807 +1146001 +8357 +750735 +2011575 +1063735 +1783827 +1728019 +1145987 +864660 +2462199 +343161 +269489 +463310 +409168 +1002034 +2462312 +476641 +8388 +1251713 +1773585 +1541742 +1351773 +8387 +347221 +1859638 +435405 +2462316 +49470 +409204 +1351771 +1213003 +405714 +401979 +347233 +2462285 +427086 +409186 +1792065 +1159454 +2576156 +414107 +384242 +1541744 +1761586 +444752 +1845349 +1167461 +476642 +489008 +956585 +1901583 +8392 +1240541 +2462276 +1764847 +1828334 +2576163 +2576135 +1912662 +1063788 +1146053 +414103 +1054137 +2530436 +956586 +401988 +1912667 +1859633 +1385763 +1912680 +1792036 +1792062 +2462297 +1240542 +1828319 +409188 +2462275 +1859625 +409185 +1159458 +1146052 +1146063 +939924 +737589 +1935541 +1792050 +463313 +2462293 +1213000 +1728022 +2462311 +1213008 +409203 +8384 +1985003 +463312 +1792024 +740916 +409174 +1343544 +1324221 +915950 +444750 +1240538 +8379 +1792044 +915968 +737583 +1159450 +1912681 +347257 +1792086 +347266 +1792090 +711444 +427098 +737617 +235872 +405745 +347301 +463328 +435421 +1764856 +205666 +1159466 +2443889 +915985 +1792092 +1828345 +347303 +2576166 +149422 +1146079 +2462364 +347237 +609527 +414115 +409252 +444755 +347273 +409213 +1146066 +2745902 +435422 +402001 +401999 +414119 +1487702 +1059172 +1159461 +402030 +1768753 +405725 +1764861 +1002061 +2462337 +149400 +735337 +1792091 +2576168 +347258 +1828343 +1792097 +748842 +1792105 +205665 +347291 +49477 +235859 +269508 +49476 +1146064 +1792107 +1063803 +1063809 +2752404 +409273 +347278 +347281 +149410 +1792096 +1154372 +269531 +721345 +748843 +1091574 +2752400 +1845353 +1110452 +49489 +409270 +1912682 +1146070 +2745880 +737612 +1146067 +8398 +1773608 +1182215 +435409 +402009 +409281 +269520 +409217 +269532 +1792114 +409275 +333460 +1792115 +748849 +347304 +1073049 +1518510 +1154373 +956602 +1792112 +401997 +2745875 +1764864 +409262 +269512 +1768770 +1813905 +1324233 +1159475 +748854 +1764876 +476649 +402036 +409313 +2145367 +737623 +409322 +2462400 +2462498 +444772 +1063818 +2293886 +1792196 +1773630 +1541753 +1541760 +1050156 +1773649 +1768772 +1351777 +269533 +2462410 +1859664 +409340 +1792171 +2462467 +1541762 +2462446 +2462475 +402064 +1792186 +1792158 +1146110 +1669886 +2037095 +2576189 +1792141 +414148 +1159480 +2462493 +2462450 +685567 +1054140 +2432732 +1146090 +1999539 +1792152 +409300 +427127 +748858 +409311 +405765 +2785515 +1773632 +409337 +402053 +409372 +1768773 +1764877 +2462382 +1213027 +1136473 +402046 +1792156 +414151 +2423506 +1272366 +2462399 +427122 +1764880 +1859665 +409362 +402071 +1171242 +1159473 +2462486 +1761608 +748857 +2462442 +2462484 +2293888 +333463 +1146104 +1792169 +1792190 +1182228 +1859652 +409403 +402086 +402111 +685577 +1792223 +1773669 +2462549 +737628 +2462628 +1792257 +402096 +2462571 +1146175 +2785520 +2462513 +216764 +685582 +82076 +384244 +444781 +1761623 +1146135 +1661066 +2785521 +1773683 +2462543 +216743 +1764890 +1792232 +1146170 +1792252 +409407 +409423 +1146133 +2462533 +1240551 +1912689 +1159511 +409428 +216741 +8420 +1761629 +1136502 +1146146 +1669910 +409401 +1159491 +1761636 +402121 +1136495 +2293898 +2462603 +1773704 +2576192 +2462534 +1159493 +1768774 +1859677 +1159518 +1773673 +1792202 +2462632 +2462631 +2462591 +1773718 +1859672 +1159492 +409399 +1761647 +402119 +2293892 +409426 +8418 +1859674 +2423510 +1146148 +2462616 +1773715 +2462620 +1159498 +1773694 +1792224 +1761649 +1146139 +216762 +1859676 +1381279 +2145400 +2785567 +2462679 +1421618 +1792270 +192623 +2462800 +2462701 +2462675 +2462708 +1136509 +2462705 +1483560 +2015247 +2462674 +1761682 +409439 +216782 +1773770 +2735581 +1669936 +8440 +409448 +216774 +1764906 +1159528 +1063865 +2752425 +1764900 +1761669 +2145399 +1063841 +409475 +8438 +2785562 +402137 +2462782 +2785558 +1146191 +409471 +1773740 +1159526 +2462712 +1541774 +192618 +2293904 +740926 +1272373 +2145406 +2752428 +2462687 +2145374 +409467 +2462832 +1063840 +2462657 +2785556 +1302248 +2145402 +1792288 +2145376 +2462810 +1063848 +1669915 +1773760 +1661070 +409478 +216777 +2745922 +1421613 +1541776 +2145398 +2037100 +2293912 +1541808 +2037107 +785246 +2462763 +2462750 +333477 +2145380 +1773758 +2462826 +2462661 +2145378 +2785537 +409435 +1421608 +1136510 +1393990 +1054160 +1146196 +1146207 +1783845 +2319981 +1773827 +149457 +1154397 +1813910 +405781 +2785615 +1469149 +1240558 +463356 +1773825 +864700 +1213061 +205700 +269544 +149439 +333485 +149427 +333488 +1059178 +2145416 +2145415 +463362 +2576201 +2785572 +1901591 +1495707 +1142020 +1764908 +405773 +2640740 +1073061 +399111 +427136 +2785580 +82082 +463344 +1059177 +333494 +205701 +2462873 +1002083 +149428 +1994917 +1324248 +1821680 +1469150 +82083 +326768 +1623538 +405780 +343170 +1495699 +1999548 +435434 +1083848 +2432760 +1182247 +1002079 +1167471 +956630 +2462849 +1792312 +1154386 +82088 +1669941 +2259821 +1495700 +1792310 +1763131 +711466 +2785578 +864709 +1136542 +333483 +2432744 +435436 +524889 +290643 +1773795 +444798 +1073064 +667025 +2511982 +1063876 +1124267 +2432764 +476652 +1821677 +192635 +1063883 +444797 +864705 +1200413 +956632 +2443895 +2785583 +1821676 +2462861 +2785593 +149469 +330367 +395359 +2259818 +326767 +2785581 +1154400 +2432756 +463352 +1487705 +2319982 +2421096 +2319987 +1421639 +2293923 +2319990 +1421628 +1541850 +2421103 +1773830 +2432778 +476657 +1421645 +2576234 +2640750 +1136590 +343175 +2752439 +2752438 +395388 +2463002 +1421647 +1110459 +1828360 +192642 +1669949 +1773863 +2432772 +1146238 +2741545 +444815 +2827157 +2462893 +1136579 +901207 +1541845 +192639 +1421654 +1773846 +2462926 +2530464 +1941265 +1773835 +2281939 +2421080 +2462888 +1859706 +1773859 +249070 +785266 +1773872 +2741550 +1136570 +2640745 +192641 +1063894 +524893 +1421655 +2015252 +192644 +82094 +216801 +1495721 +2319997 +2785624 +1773875 +1792336 +1728026 +343173 +2785638 +1764924 +2416665 +2462898 +916029 +2462953 +2752434 +2421084 +1302250 +1132907 +1728027 +2576224 +785264 +395375 +1669950 +427152 +901212 +8451 +2145473 +1251766 +1213087 +1351798 +2530475 +2015254 +1728033 +2576296 +524913 +1159581 +1251734 +476678 +524901 +444825 +1272380 +1728035 +1541876 +1251764 +1110472 +1213083 +2640786 +1859778 +1792376 +2576292 +1859789 +956655 +1792381 +1251733 +354187 +395397 +1859745 +2463103 +2383129 +1251728 +916062 +956654 +1859728 +444822 +395390 +1859790 +2785662 +1859771 +1912721 +1688816 +1495728 +1251751 +1213089 +2640769 +1251768 +1054165 +524915 +2463053 +1859734 +1792367 +427189 +1393996 +916065 +1728034 +395405 +2576287 +1159576 +82101 +524902 +1688813 +427177 +956651 +2359803 +1091588 +2145437 +1251744 +2463081 +1859782 +2576272 +1828377 +2463036 +1688810 +427176 +2463068 +82112 +1859724 +1792378 +916066 +2463037 +1159570 +476667 +2839313 +1159564 +1688826 +2145451 +1251725 +1912708 +1091580 +1912706 +2640783 +2752451 +1251722 +1159566 +1541857 +1912747 +1213071 +1351795 +524906 +2785653 +2735585 +2576267 +785269 +1251743 +2359808 +785280 +1213117 +2463161 +1792382 +1146256 +2463170 +2752486 +1912812 +1213174 +1859802 +1182299 +1213135 +444885 +2082069 +2463180 +1859801 +1175498 +2463132 +1773914 +1912836 +2463187 +2752477 +2752483 +2082070 +1213168 +956668 +1912850 +2576299 +1792428 +192648 +1828382 +444902 +2145479 +339320 +82126 +2463141 +1182300 +2463128 +1421667 +1912838 +1046106 +2640810 +1912837 +463373 +1912845 +2640814 +1541893 +1912784 +2463137 +2640804 +1495742 +476700 +216811 +1912846 +1764936 +476688 +1251775 +427191 +1764937 +444860 +1324269 +1402060 +444856 +1213128 +2752482 +82116 +2463118 +427194 +2463158 +427209 +2839356 +489025 +1262253 +384253 +2839347 +427208 +956690 +2839349 +2463133 +476709 +1688839 +1912761 +1213159 +956675 +956674 +2640816 +1393997 +1351803 +1251798 +1828386 +364518 +444872 +2463155 +2463127 +395423 +444886 +1146250 +444895 +8458 +1792392 +82134 +1912840 +1996444 +1828389 +1792409 +2640797 +1828381 +1182295 +1792412 +1912805 +1159585 +444854 +1912801 +2785684 +343197 +901216 +1251781 +476703 +1541884 +2752491 +1518537 +1783869 +2259836 +1495748 +1783889 +409501 +489048 +330417 +463400 +2145519 +347355 +1859825 +907683 +205716 +1688856 +864782 +956710 +1688848 +1002145 +1974343 +2259850 +444915 +1773939 +358666 +1541936 +1773920 +1764941 +347367 +2512028 +395425 +1813930 +1688860 +1773930 +2741555 +2145508 +864817 +2512005 +1763168 +1469174 +2103775 +1518557 +1136611 +1704107 +269566 +1487710 +463392 +235900 +2443908 +1728038 +326775 +864749 +1792446 +8459 +864713 +1142049 +2512031 +1773981 +405847 +1136613 +343199 +1773958 +2421115 +1688841 +2259845 +1901601 +347373 +405823 +1132929 +414183 +205717 +347362 +347402 +2432794 +1495753 +1167481 +2259852 +1063933 +1154435 +1661084 +1487709 +2511989 +1073073 +1002149 +1783873 +2259833 +149511 +2259824 +1763154 +1773944 +1002165 +354200 +1773954 +2383131 +1136612 +2145523 +205719 +339338 +2062657 +1773979 +497294 +435472 +1063932 +1167483 +2463208 +2293939 +1783891 +1773927 +347356 +1623565 +347350 +2145498 +1623556 +269580 +1541926 +1682291 +2013409 +1773926 +901217 +1623618 +1469176 +326777 +1783865 +2421131 +1704110 +2511996 +1146271 +463415 +1154426 +149519 +463406 +399123 +463412 +2145511 +409508 +1469155 +1783871 +1783861 +444910 +205712 +1146275 +1136618 +1002122 +2145513 +2512000 +1213178 +82141 +2576324 +2512048 +1682285 +1783893 +2512026 +399121 +907699 +1469169 +1154408 +1792460 +330413 +2463243 +2443905 +1792451 +435456 +1132922 +609548 +939954 +489052 +1813978 +269577 +2068547 +1154418 +269552 +2037120 +351881 +2432802 +1002153 +2432801 +1859811 +1518540 +2421138 +1171259 +2421134 +2463233 +1623597 +1421675 +2279550 +2512004 +2511995 +1200430 +1623566 +1773940 +2512038 +864813 +1002120 +1623626 +1783862 +1182310 +1819599 +2279549 +330397 +463404 +1541913 +1541919 +2463235 +1901600 +1136628 +1682284 +864768 +2463271 +1083864 +2421136 +864741 +347361 +1167489 +750749 +347401 +2421149 +1132931 +269561 +1764945 +419069 +785331 +205739 +205724 +1773990 +463426 +2785714 +1200437 +1859834 +2293946 +2082083 +1859832 +1541954 +2463315 +1541949 +343204 +419063 +333528 +192663 +956714 +339344 +149560 +330434 +405854 +2145538 +721356 +216823 +1154449 +524924 +1783911 +330446 +2293949 +1792474 +1213189 +2259856 +711472 +149543 +2293941 +192657 +414201 +192654 +685614 +149533 +347418 +82145 +235915 +1813999 +333527 +2463304 +2463305 +1159613 +463429 +1773988 +1213190 +1159610 +2853704 +2463298 +2145540 +1404966 +1763170 +149563 +339347 +916080 +1002174 +1774000 +501517 +2432808 +2463296 +2576339 +1213184 +1002171 +8460 +216824 +2259861 +333534 +2785704 +330438 +1813998 +1146276 +1091600 +330443 +2785699 +1495763 +1935554 +358672 +1146292 +409515 +2145534 +2640836 +1167542 +2259867 +333540 +2512069 +2423547 +414220 +1146295 +1136651 +2752495 +1142070 +2463327 +1814047 +347440 +1154481 +1167532 +750756 +1495770 +753369 +409525 +489097 +2752497 +339363 +1792481 +1132936 +1200438 +1146314 +1200441 +2512061 +2103783 +750761 +347454 +750764 +2463344 +1154480 +1159618 +1132944 +1154487 +2752496 +1814038 +1792486 +1154501 +149566 +1146313 +347446 +1935557 +1002191 +339364 +149570 +333541 +1167525 +739809 +1213196 +49567 +1159617 +347424 +435485 +2752501 +347441 +743706 +347436 +2709579 +2103791 +2463336 +149568 +1814024 +2512067 +1487716 +711477 +149576 +1814049 +1213200 +1792495 +1764954 +463446 +956721 +149575 +2103789 +2463348 +2752500 +1154469 +753385 +49541 +939967 +1774006 +435491 +1792491 +1002194 +2432810 +1240616 +2103792 +1154490 +414238 +1774008 +1814011 +399138 +1774002 +1792487 +750779 +1063944 +1912865 +2103794 +1240623 +49575 +2103781 +1146299 +1002203 +476782 +2576351 +489106 +750807 +2019899 +2423553 +1859839 +414257 +489104 +2011584 +1240643 +1251819 +1213207 +1159620 +216834 +463462 +750809 +476774 +476779 +2752546 +444934 +2625154 +721363 +1400907 +192668 +2530487 +1213223 +2752556 +339376 +497310 +1159622 +489151 +1396672 +476803 +414261 +1213217 +2463370 +2759712 +1240651 +1146324 +463477 +2463406 +216835 +149579 +2640850 +1792503 +216831 +476751 +2752523 +685622 +1213216 +2512100 +414259 +2021545 +422158 +750793 +2463366 +216836 +1324278 +743711 +685648 +743726 +1792501 +1213218 +685631 +1859846 +2752521 +405913 +501518 +711498 +1495773 +489149 +750795 +1213228 +1167547 +476769 +463476 +476786 +721375 +489108 +463489 +444940 +740928 +489156 +685629 +743719 +1381299 +685617 +1704126 +1935559 +489127 +1999556 +2752534 +2640844 +489132 +339375 +731572 +1240649 +476792 +1213214 +269615 +2752514 +1901615 +235924 +414264 +2640846 +2752539 +476816 +501521 +402161 +1392794 +476807 +463488 +524927 +476771 +740932 +1397953 +216833 +1774032 +1389828 +1200453 +685662 +82160 +2785815 +2785783 +609642 +711529 +1845387 +354204 +740950 +1159639 +2145558 +1859874 +916089 +1073097 +1783935 +757365 +1154526 +2640858 +375529 +2785730 +864849 +1087757 +489163 +444945 +333555 +1146341 +1124286 +1954522 +2785749 +2463468 +1240676 +2015295 +2785741 +1124285 +1394010 +1110494 +2785822 +149583 +489187 +1912889 +2021560 +1859890 +2512113 +2853727 +939977 +1999560 +2015288 +2853729 +2423556 +1365922 +1623665 +956733 +414273 +1623673 +2463476 +740951 +1272384 +1091607 +489162 +2463459 +785343 +489182 +2015292 +2640874 +205756 +1154528 +422163 +1859891 +1783942 +864859 +2853738 +2699122 +1200461 +2293955 +1251828 +375530 +2145556 +1845386 +149593 +489167 +2145554 +1240677 +2463455 +2463471 +1774051 +2463489 +1541962 +395464 +463508 +2512112 +748871 +1728040 +1050177 +1200460 +463523 +2015290 +711511 +740948 +2785791 +1859902 +1728043 +916085 +1400910 +2512116 +1073094 +740940 +1912890 +956736 +1623668 +358680 +956742 +1365921 +489174 +1783937 +2640878 +1901626 +2785763 +711526 +1783953 +750825 +1365924 +1213263 +2015298 +1200451 +476846 +939973 +1859882 +667036 +149588 +2785817 +2021563 +2015305 +1213255 +463515 +149584 +1063952 +1054185 +1240678 +1091608 +235929 +1774059 +1063958 +2463474 +731581 +384261 +326789 +1389819 +1213256 +1391547 +1240668 +2015312 +2015323 +785342 +2785794 +2010104 +1130025 +2019903 +1103235 +1381312 +1859857 +2853740 +864853 +49591 +2853718 +249085 +444968 +326791 +2021586 +2512118 +476918 +1912963 +1828416 +1397963 +2640894 +1110503 +2145580 +1859921 +2640908 +333566 +2640911 +2463569 +1381316 +2463564 +2576368 +2423569 +667046 +1159646 +364539 +216861 +1213291 +2463560 +2463517 +2463525 +2432832 +1912937 +2463527 +731584 +427224 +1792612 +740956 +1792587 +2752617 +1213313 +2752634 +2025685 +2021574 +1495784 +49600 +216867 +609657 +364544 +489188 +2752576 +2432830 +711569 +1240681 +1262284 +8477 +2463516 +1859931 +333564 +2752629 +405928 +149613 +375537 +2145581 +1774080 +2752615 +149603 +1213304 +2640933 +1394020 +2015334 +1541980 +1213277 +1814097 +2576390 +2004427 +1912958 +463541 +743743 +2463562 +2785831 +1912935 +1146354 +1623680 +1213319 +1859911 +2021573 +2752619 +2735593 +2463541 +1136662 +2752583 +49601 +1213330 +1213317 +1389830 +1859943 +2640907 +524949 +743750 +1381317 +1912946 +609651 +2576377 +1774089 +743744 +2752618 +358689 +956763 +1240690 +1213311 +1394021 +1792578 +1792573 +49598 +685691 +2021578 +463540 +2019913 +1912920 +2463513 +711557 +1495782 +2640899 +2640895 +1912918 +1167564 +2640914 +476909 +395471 +1397965 +1912964 +2752604 +1774075 +1912915 +2463519 +1859926 +489197 +785346 +476874 +1063975 +1912932 +1213292 +1397972 +1213335 +1386970 +740970 +2853757 +2421170 +463560 +2785835 +2463661 +2423570 +463561 +1774097 +1792625 +1167567 +1859964 +192678 +1171266 +1394038 +1394035 +750839 +1394033 +1063978 +476932 +1783969 +2752664 +731593 +414285 +2463638 +1381323 +2752659 +235943 +1828427 +1912974 +740968 +2640945 +216879 +399148 +747706 +1050182 +1792628 +939984 +2463626 +2463671 +750833 +1774098 +405939 +2785834 +2785839 +2517057 +1392799 +1402084 +489203 +2015348 +1240699 +1251863 +2463620 +2752663 +2463656 +2463665 +2576413 +1213333 +1901645 +609674 +1394030 +1728057 +2021590 +414288 +2752658 +1213339 +2463686 +2463663 +1394026 +2463675 +1396677 +1396680 +1901646 +1483565 +435507 +2432847 +1146403 +1146498 +1146512 +1669985 +1792727 +1774139 +2463793 +2432863 +1213354 +1146478 +1159711 +216884 +1146431 +916099 +1159706 +1136675 +216908 +235946 +1146407 +2463824 +1146467 +333587 +405947 +2463813 +2463711 +2463718 +1146402 +1792676 +395484 +333583 +1159703 +1146437 +1159681 +1159732 +8483 +8488 +2463742 +1146501 +1792696 +2463830 +1792711 +1792663 +395525 +1792664 +1146469 +2463838 +1132956 +395491 +2463839 +192680 +1159714 +395502 +395531 +1792647 +2463786 +1792721 +2463752 +2463809 +1146450 +2463847 +1159708 +333584 +1146444 +1146453 +1146470 +2463779 +2853759 +1774181 +1136669 +1159696 +1814110 +1774168 +216910 +205764 +2463790 +2785844 +1159716 +2463761 +1154571 +216914 +1792747 +2432862 +1495789 +354210 +1391797 +2463957 +2463971 +2011606 +2576440 +2432871 +1394059 +524959 +2576429 +2015367 +427246 +2463873 +1146569 +1397994 +216920 +476960 +748920 +748900 +1146535 +1159744 +1792824 +2463965 +2463951 +1774226 +2463956 +445012 +2463987 +1402112 +1159737 +1774200 +1761703 +721415 +2463869 +1146552 +1402113 +395567 +1132962 +1251884 +2423589 +1182350 +685708 +2463934 +2463960 +419096 +395578 +2463925 +2463950 +2463976 +2021613 +1859977 +1819611 +2463955 +192685 +1159770 +1774196 +740974 +2463908 +476969 +1774221 +1774192 +2463876 +1774246 +395539 +402209 +1913006 +427242 +1774224 +1792779 +2576418 +2432868 +216924 +2463906 +402202 +2021601 +1774251 +326800 +1859984 +1913000 +2432884 +748915 +1146547 +1159760 +2463885 +1774204 +2463977 +1397993 +1792759 +1912991 +395575 +2463943 +2752695 +1792790 +2015360 +1213384 +427240 +1136680 +2432891 +1495792 +427235 +2464023 +82187 +1792883 +2464028 +685711 +1792836 +2464034 +2464058 +1402117 +1792845 +1394088 +1159781 +2464059 +1792832 +2464044 +2464042 +1792887 +419111 +476989 +2464012 +395596 +1792864 +445018 +497326 +1774258 +419108 +1774260 +2785846 +419112 +395584 +1792833 +405995 +1774300 +405998 +2464135 +402227 +1146657 +1154577 +1792946 +1792933 +2432909 +1792929 +489217 +1688895 +435510 +395613 +2464138 +414295 +1774343 +1774280 +2432923 +1054220 +339402 +427255 +216934 +1774339 +216936 +405974 +2464126 +1146620 +1913020 +405973 +1792935 +2464183 +1167583 +1213413 +956773 +476993 +2464082 +685712 +395615 +2432929 +419113 +463582 +339399 +2464105 +1154580 +2464161 +1213424 +1159823 +216929 +1774315 +2145585 +2145591 +2752730 +1146627 +2464096 +216938 +1792936 +49604 +1159809 +1845399 +419118 +477022 +216943 +1054215 +1764984 +2421177 +1792967 +1774349 +235949 +2640987 +339397 +405994 +1159816 +2752719 +476996 +1142091 +1146655 +419119 +1262288 +1159813 +1146615 +1860023 +1774291 +330470 +2464151 +2464164 +2464155 +1146649 +339396 +405981 +339395 +2576445 +2423608 +1764990 +2785860 +2464132 +1814118 +82188 +2752713 +333605 +476994 +326808 +2576455 +2432940 +1814122 +463583 +1774328 +1774282 +477027 +1774313 +1146654 +395616 +750844 +1774331 +1251894 +2432911 +2464141 +1154589 +1154576 +1240709 +1182360 +419139 +2464249 +422170 +1901651 +1901650 +2640996 +1136725 +489237 +477045 +2464229 +1159838 +326811 +2432951 +1251902 +2464339 +956807 +2464293 +1860056 +1213437 +1682320 +269635 +2464245 +216948 +1814135 +8504 +1213448 +1132980 +685730 +1159854 +1913056 +249118 +419159 +2464353 +422187 +1913050 +2464301 +1792985 +2464287 +2752743 +1688898 +82194 +1774365 +2512159 +1251905 +916112 +2464235 +1541996 +2464253 +2464285 +477067 +2464281 +2641029 +2641014 +427264 +956792 +2464248 +2025689 +1784001 +8509 +1063994 +1913041 +249094 +2432949 +1167587 +422188 +1002230 +419165 +395668 +477041 +497334 +477068 +1792991 +8508 +2576473 +2576464 +740987 +2464341 +1146676 +1002233 +2464265 +1200477 +1814136 +1091619 +489227 +1901652 +497369 +1167586 +249108 +2464347 +1793036 +685724 +685725 +1159833 +395671 +1783995 +333613 +685739 +2320033 +2421184 +269642 +8512 +1251901 +2641031 +497348 +1793008 +1171272 +477078 +1793029 +82198 +497377 +477070 +406009 +2576463 +2464221 +2432954 +1793033 +497362 +269641 +1688914 +1251898 +477066 +1783997 +2464247 +1154624 +1999564 +750847 +1913071 +956811 +463594 +1154611 +1154623 +384280 +1913070 +399157 +1262293 +1793081 +1623702 +2464430 +82231 +1774393 +463591 +216966 +1774376 +1784004 +1167600 +414335 +2530546 +1167598 +1091620 +406048 +2432962 +1213463 +1064004 +2464369 +216963 +1146697 +414336 +1063999 +1136726 +1064007 +235954 +747712 +419180 +422212 +1793104 +216955 +414325 +1142096 +1793046 +489238 +422208 +685741 +1154618 +406035 +747711 +2464396 +330475 +1054238 +1793077 +249124 +1542011 +1064008 +1774394 +1728068 +1146678 +290655 +2464379 +1073121 +205773 +1167601 +192699 +2432967 +422214 +1073118 +149625 +445055 +333621 +1154619 +269647 +1159859 +1669999 +2464426 +916124 +216954 +750849 +1251927 +1860095 +435521 +49636 +1124289 +489278 +395708 +2433004 +2320064 +445094 +1213477 +757373 +1132991 +216986 +2576503 +217015 +1073138 +414352 +1146734 +721442 +711631 +1913074 +1728071 +1200487 +477152 +1146718 +1793136 +205776 +2011610 +149632 +339411 +2432990 +330479 +445090 +1793173 +82238 +445063 +1054243 +406070 +1213488 +2464485 +685758 +2785879 +1159875 +1860090 +1064016 +1159897 +1793152 +609691 +2464552 +1142101 +1793143 +402259 +445113 +2785872 +2423640 +2464518 +1213483 +609714 +864867 +402276 +2785935 +2464533 +1050199 +750857 +1136744 +609705 +2530555 +1146730 +402273 +1159902 +2464507 +2464496 +767965 +2785934 +956819 +2576506 +463647 +1167617 +1064011 +1774440 +406066 +477114 +1182385 +1774449 +1623707 +2464551 +445109 +1784020 +477212 +1860087 +49629 +2464493 +406059 +1146721 +1240751 +1860081 +1784031 +2145619 +2641052 +217030 +2785869 +249134 +2432993 +445110 +2464475 +1793134 +1661098 +399163 +333630 +2785915 +49625 +1913091 +406087 +477198 +2680804 +1167616 +1083891 +2512184 +1059198 +333629 +402270 +1159905 +1064023 +217014 +2464472 +1240745 +217007 +2464508 +1784028 +1136743 +1828448 +2785890 +1213472 +489282 +395691 +477182 +956830 +1784023 +2293984 +743758 +1251938 +1159886 +2512177 +1251935 +427273 +1146723 +1073132 +2464511 +463619 +748942 +463663 +721445 +1146749 +1251932 +750855 +2432981 +477208 +1402122 +1050198 +1901660 +445071 +2464538 +2464450 +1394102 +477161 +524973 +463610 +395714 +463642 +192723 +49628 +1159907 +395722 +2576491 +2433006 +192712 +2433001 +2785893 +192711 +1793159 +2103803 +1860070 +414360 +2464495 +2464448 +1087759 +1365933 +2464553 +956816 +2530550 +2576507 +2145616 +1110519 +1774423 +477178 +333624 +463622 +2785864 +1860086 +1200486 +2015423 +1154644 +1050192 +2785927 +477132 +609696 +2320058 +609724 +524977 +2785878 +445099 +489264 +721444 +2464476 +1213495 +2145629 +1661111 +1913112 +1784042 +1495843 +1670021 +1200498 +2464607 +1396685 +747715 +1132998 +414369 +1661119 +1050204 +1495831 +1146774 +741000 +463697 +1421703 +149651 +1793201 +326829 +767966 +1421692 +1159918 +1146777 +445125 +2530559 +406101 +1774463 +2423648 +864873 +1860112 +2641068 +384289 +8547 +477272 +290658 +741006 +1136750 +414382 +1784043 +384287 +49648 +721450 +463690 +477245 +1159913 +326823 +750861 +463699 +395732 +1136745 +82252 +2464571 +1073141 +414376 +956836 +445123 +1623716 +956839 +1901662 +956845 +711641 +2145658 +463695 +1146758 +477237 +49653 +445126 +721456 +384286 +2320085 +477247 +445116 +2464570 +2464581 +384285 +2320076 +354218 +1077599 +1240769 +1154658 +49649 +149656 +1213545 +8544 +1495848 +1394108 +731605 +414381 +785360 +609732 +1136748 +1159911 +711638 +1784035 +1913115 +217035 +1784039 +1774474 +524985 +1793202 +1182398 +916134 +8550 +1351842 +463698 +1154657 +524978 +1421697 +1828462 +463683 +1774476 +1182395 +82246 +2145626 +1213538 +1213530 +1200501 +864871 +2320077 +2320067 +463689 +333646 +1793203 +1064027 +1200503 +8536 +1661115 +249148 +956834 +2145621 +326831 +463705 +1240782 +2735614 +864883 +1142108 +2752768 +489316 +1623729 +864903 +1828470 +1728086 +1392804 +785373 +2785979 +2625162 +2641088 +524988 +2293992 +269674 +2785968 +685776 +1073155 +1124294 +1793214 +1495855 +339421 +956887 +2752769 +427292 +1719563 +1064043 +1793213 +2839405 +2839418 +249160 +609751 +1828471 +2827196 +249159 +2735617 +2421197 +785377 +489319 +1272393 +1860136 +269669 +1213554 +192731 +916140 +1200505 +2517085 +1182413 +1159921 +2293991 +1142107 +1146780 +2785950 +785385 +901244 +1175534 +2641081 +609760 +2785981 +2839394 +1860138 +864890 +249163 +1774496 +463706 +2576536 +2786012 +711646 +864902 +249152 +524990 +463722 +1200514 +1124292 +2680808 +82258 +1901672 +1073149 +1175528 +235970 +427295 +1171287 +1159919 +1828474 +2464618 +1171289 +1860143 +1901671 +1845421 +1784056 +2103815 +1110531 +395747 +1110534 +2464677 +1050211 +1542082 +1064053 +2752773 +1774515 +477320 +1142111 +1159930 +1059201 +2464667 +864918 +1262303 +2530575 +489349 +2641120 +1110536 +1670027 +956906 +1670029 +375559 +399171 +2464640 +2464639 +1670025 +1159936 +489346 +956912 +757390 +1213567 +2421199 +1154678 +2464646 +956903 +2641131 +1073165 +1200535 +8566 +1251964 +1719569 +1213594 +609762 +1860149 +1064050 +1054275 +1901681 +2464668 +1398010 +956893 +916146 +1623755 +1542067 +2641109 +2464713 +2512199 +463750 +1133008 +1728091 +269696 +864912 +1251961 +1054280 +2320089 +2464638 +2320088 +1159924 +1901684 +1136760 +1146783 +1710918 +1661127 +785392 +477328 +721461 +235976 +489332 +1765014 +1774510 +2433024 +1251962 +1828488 +1142112 +1542080 +685781 +1091630 +743763 +1860170 +1765013 +939998 +1002259 +192732 +489328 +685782 +445135 +1828482 +1240784 +1154670 +785398 +916152 +1213575 +1728095 +743764 +864923 +249174 +427309 +1793224 +1213585 +435559 +435552 +1860161 +1365936 +1793236 +1213590 +1821695 +1054268 +1793222 +1002268 +1103242 +1774520 +149672 +2464708 +445140 +1064051 +785394 +1623731 +1182428 +1682347 +217094 +1623869 +236067 +269711 +785419 +192735 +2576565 +1901721 +311546 +1670032 +2383159 +269729 +1002284 +2293998 +1828493 +1002287 +1002290 +1935620 +1860182 +435588 +2853796 +149771 +1845431 +2423663 +2530635 +2868542 +269709 +1542089 +1175556 +1623832 +1623830 +1073196 +1240861 +1845451 +864953 +1200539 +82281 +2530667 +406131 +1262316 +864958 +290674 +2293995 +1828496 +2464734 +2786148 +1073204 +1073186 +609777 +463799 +2853784 +236087 +1124323 +2512209 +2680821 +149778 +2853830 +2868550 +2853791 +358738 +1495883 +2641148 +2680819 +463787 +2868546 +2853831 +2576550 +1351848 +358736 +2868530 +2853785 +2530686 +1901706 +1707759 +1774523 +1719576 +2786104 +2383200 +358769 +149794 +358774 +1845463 +1845464 +1845438 +1682352 +609794 +236071 +940080 +1719592 +2786095 +49784 +82272 +2868560 +1073173 +1039629 +916159 +406135 +2786065 +864966 +269706 +907753 +1623795 +1200564 +1707761 +2530669 +236027 +2868558 +149735 +864992 +907739 +2530596 +2530626 +2383170 +1845433 +49789 +463758 +1200541 +375564 +1167640 +2383210 +1200548 +2294014 +1495882 +49727 +2512214 +2853846 +235997 +290679 +236011 +940013 +1146795 +2530611 +2423676 +767971 +1623815 +358727 +477352 +1240856 +1784071 +1845475 +1719577 +1845457 +2868531 +501545 +2530654 +1935617 +1682362 +358730 +235986 +1240835 +290695 +2641153 +2786089 +477348 +358772 +236013 +2786020 +1240825 +1784067 +1483569 +489392 +1142114 +940096 +49765 +49703 +205821 +2530690 +463779 +1845481 +358748 +2433027 +489373 +49729 +1167637 +2423667 +205819 +2530707 +785422 +2576566 +2786120 +2423677 +435586 +1103258 +49788 +2576562 +1262315 +1073185 +236032 +1819627 +1002294 +609780 +236095 +1901699 +2625169 +2853806 +864980 +358735 +1087781 +269708 +1154688 +2383209 +2853833 +1421712 +1623845 +2530685 +864989 +1240846 +2423672 +235995 +2868548 +1623808 +2786017 +311506 +2530613 +2641146 +907746 +1495880 +1845474 +2383208 +2853790 +864977 +2530680 +205822 +1251972 +1719593 +311545 +235989 +609779 +1039630 +2853822 +2853777 +1073171 +2464765 +2517094 +864997 +785434 +2576569 +1240874 +389711 +2145671 +217125 +489403 +1154692 +435601 +330499 +1901730 +2464749 +1213616 +217128 +1136763 +389709 +865003 +1050218 +667064 +477405 +916171 +1251973 +1860191 +489404 +1913159 +1213608 +395763 +2530712 +205861 +1213619 +1213612 +1542099 +1774536 +414397 +1774532 +1860199 +2294034 +384305 +2294037 +236102 +1200581 +2294029 +1913162 +1774529 +2464763 +2641174 +2464771 +395762 +384303 +956947 +358784 +149805 +2464760 +2680829 +406137 +2145672 +489396 +477402 +1860194 +2464743 +2464761 +1182444 +1124348 +477379 +82291 +384308 +1483573 +1644516 +785428 +339441 +1845484 +489566 +489443 +1901744 +1240930 +1073238 +489554 +49849 +865023 +1200590 +463869 +358809 +49892 +1154705 +464033 +414400 +489433 +358807 +489584 +1240880 +1167650 +2512238 +463927 +464004 +1103265 +1200602 +389727 +422225 +389760 +414404 +2530723 +464017 +1814207 +489505 +149833 +2145719 +463991 +330500 +1623901 +236113 +2145709 +463866 +2625201 +1935626 +249195 +489473 +49890 +205886 +1142118 +217145 +489421 +489574 +1262320 +1845491 +269738 +375585 +290727 +435643 +311563 +1901738 +406165 +205876 +49908 +1073224 +489449 +463949 +236125 +489494 +1002311 +2145697 +1124350 +1240925 +1002309 +1704154 +2145727 +389721 +2641178 +497391 +865015 +489567 +1240890 +290725 +1719603 +463950 +1901757 +1814215 +2145734 +1901735 +1901762 +489516 +269743 +489525 +49856 +269748 +406152 +1860221 +49843 +1901759 +1901747 +2145721 +236153 +402287 +489509 +463911 +463859 +2145694 +149828 +435641 +414427 +1175561 +49882 +463839 +2625192 +1240898 +1039640 +464008 +711677 +489562 +422233 +463891 +463929 +435622 +217148 +406151 +217137 +916173 +389728 +464023 +1154698 +2145733 +205911 +463907 +463893 +489503 +49813 +2145677 +1542102 +2464782 +236146 +389755 +269763 +49891 +489451 +49847 +489506 +1110547 +1240910 +1073225 +501556 +865021 +269759 +49906 +1469205 +406147 +1213632 +489548 +389763 +333663 +865014 +1159940 +217142 +464028 +489416 +149831 +1719606 +1110562 +49998 +364604 +2512358 +406198 +1542137 +236253 +464087 +464193 +464120 +2145791 +2680940 +464225 +1241057 +2512304 +2320168 +2641223 +2294082 +2680917 +1913264 +2512312 +50180 +149964 +1262402 +1262374 +1624176 +2680863 +1542155 +2641247 +1793309 +2641373 +1624060 +1167699 +217243 +2641357 +1262344 +1913257 +1814272 +464139 +2464943 +406175 +1262335 +2320293 +149864 +2512342 +2641321 +1814305 +2512363 +1624039 +1262381 +2641215 +236289 +464154 +1814294 +1213635 +2512408 +1110609 +2145764 +217214 +1814248 +1901788 +236221 +50151 +731618 +236235 +311621 +1624075 +1935784 +2512271 +1814227 +1793308 +1252026 +1241096 +1935806 +1110548 +2294105 +1154723 +217241 +1814267 +2145820 +1670038 +50118 +149976 +236196 +464040 +2680933 +2320134 +2641206 +82316 +149901 +1814313 +2839420 +1251985 +149890 +2464931 +464048 +1262359 +2320329 +1240999 +1110674 +464074 +1252019 +2294111 +1110569 +149998 +2512422 +1814241 +435672 +1624243 +1167718 +1624114 +1110689 +1064099 +1110665 +290730 +2145793 +50042 +1624145 +2294073 +435664 +2294087 +2512403 +2464864 +50154 +2512394 +192760 +2512407 +1624080 +2320147 +205963 +1167691 +50050 +1913246 +2576593 +1624108 +464079 +2464796 +2641199 +8613 +217226 +236171 +2680911 +2641254 +149877 +1167665 +1624010 +1241020 +2320131 +1935644 +50002 +49999 +464192 +1240943 +1542108 +217233 +205960 +2383345 +236203 +1623973 +50142 +49939 +1860246 +2464895 +149974 +1935728 +236287 +1167659 +1913295 +1624088 +464115 +1901799 +2680856 +2641351 +2512392 +2576588 +149860 +1159946 +2320245 +2641364 +1110597 +2464805 +311625 +8601 +2320322 +2512297 +236200 +2145762 +1110624 +150066 +149914 +2383300 +149928 +1241052 +1262412 +435691 +1262365 +149999 +1860238 +2320152 +1252032 +50130 +1624161 +464190 +1784108 +1814243 +1793283 +2320191 +1110671 +2512273 +150062 +2464861 +2145783 +721468 +82302 +1624185 +1624041 +1159957 +1262360 +50035 +1064084 +2641347 +82304 +2464897 +236186 +1814226 +2383291 +1624184 +50051 +1241003 +1110637 +2641327 +50000 +2512321 +217204 +1901778 +1935735 +1913202 +149894 +236163 +1064104 +1624274 +49927 +1624018 +2145761 +236328 +2320185 +2383278 +2320129 +2320136 +1064066 +1167721 +1624196 +1542158 +1167682 +205925 +311571 +1793299 +2853850 +149920 +2320240 +464118 +464140 +311572 +236161 +217180 +1167729 +2145826 +2320119 +1110694 +1240985 +217183 +1146804 +2145841 +364597 +1064073 +2680937 +150029 +1262375 +1624207 +1624042 +50171 +1064076 +236339 +1623986 +236178 +1252027 +1935816 +1793266 +464038 +2294093 +1935654 +1935676 +2464936 +2145839 +290774 +2320328 +2320325 +1542141 +2145774 +236330 +2512396 +2641287 +149966 +2464812 +1064098 +1624166 +49928 +2641300 +1167717 +1542115 +2383270 +2786195 +1624171 +1784120 +2294048 +1240973 +1624129 +2641285 +236315 +2320348 +1154731 +2145823 +236195 +1110549 +50177 +150053 +364593 +1901773 +1901813 +333677 +149992 +1241080 +49942 +1913279 +2294056 +217182 +1623968 +150059 +609805 +236227 +2680849 +399179 +50167 +1167669 +1624216 +1241103 +49955 +205923 +1623981 +2641191 +311620 +50157 +2145740 +406187 +1793318 +2383241 +1110611 +50174 +205943 +464121 +49958 +149916 +2464932 +2786176 +1262342 +464157 +217215 +1624132 +311595 +1814262 +1241013 +1262416 +2512353 +464218 +1241037 +2735619 +435663 +435677 +1167697 +2320290 +2680923 +2320265 +50048 +464201 +1793280 +1167684 +1814255 +2294053 +290759 +149891 +50022 +311633 +464065 +1542136 +2145800 +2752779 +1159961 +1167695 +50084 +2320170 +311569 +50038 +149958 +1167660 +1814325 +1110682 +1623961 +2464860 +2464808 +1814302 +464085 +2294043 +236162 +236194 +464122 +1935738 +50120 +1935822 +2464858 +1935824 +150024 +1935757 +354229 +2680885 +464187 +311613 +236321 +2641272 +1262332 +236169 +1213654 +1167674 +2512424 +2383277 +1110692 +311575 +1793306 +1251995 +1542169 +1935737 +1241040 +2320330 +1624218 +1241118 +1064100 +1241084 +1860227 +217235 +1784116 +311587 +1240992 +1623962 +1814331 +1542167 +2641356 +236338 +1913220 +1159953 +1262373 +435679 +1913192 +2512325 +8599 +1624095 +464045 +1793305 +217237 +1901795 +2680868 +1167662 +1064105 +1064121 +2383255 +1110617 +1146807 +49953 +464066 +2641322 +1935772 +2853849 +1262395 +217203 +2464867 +50172 +1167704 +1624109 +1793289 +1241050 +1167675 +2512366 +2145831 +1064136 +435661 +2680896 +2320337 +1935695 +236331 +1240994 +1913234 +217230 +1935715 +50053 +2512423 +1624002 +2512410 +2512400 +82295 +1064126 +290772 +2464893 +2641355 +2465035 +1421735 +1774558 +2279551 +525008 +1252052 +1793330 +757399 +326851 +1159977 +2464972 +427342 +2464985 +1688945 +1860285 +2145887 +1819648 +2464971 +2383350 +1159964 +1542198 +192771 +347459 +354232 +2145844 +1252046 +1159986 +1495910 +2530746 +1670052 +1252050 +1542176 +1819635 +865030 +2465088 +2145886 +1793356 +2145847 +1421737 +2576623 +2745941 +1542193 +2294133 +2433049 +2530745 +333682 +326859 +1159988 +1213721 +916185 +1213682 +395768 +1002320 +1182458 +2294128 +1136767 +2145871 +2465012 +2423697 +2037138 +2383368 +1495898 +1159987 +2752788 +1670050 +2294130 +1542219 +192776 +2465020 +384319 +1793363 +364616 +1213718 +2465048 +192778 +1828511 +358822 +1542190 +865025 +2037141 +2641412 +1688946 +427340 +384313 +1647649 +1774551 +1252064 +2464980 +785454 +2145879 +2465030 +2383362 +1974367 +192769 +956961 +685792 +525013 +1495902 +956971 +1624301 +685794 +2294121 +384321 +685802 +711693 +2464981 +82320 +2465016 +609823 +2145865 +751769 +2465017 +956966 +347461 +2465068 +2021647 +2576618 +2021639 +1182453 +2530734 +785463 +1398012 +1670056 +1542257 +1774573 +1324333 +2423701 +384326 +364619 +1761726 +1819656 +1793377 +1064164 +751778 +2641431 +650781 +1182470 +1136773 +1159997 +2021655 +1064185 +384332 +2576652 +1828518 +1110703 +1860340 +1483584 +1819653 +2465131 +1793419 +1793431 +1091647 +2576670 +1793370 +2294138 +2320408 +2320394 +384338 +1913313 +1793418 +1793383 +1860307 +2465133 +2576649 +1959860 +2641438 +2465154 +1136774 +2320385 +82366 +2465203 +1860344 +2465161 +384335 +2530756 +1793380 +1542263 +1728145 +1542273 +1136776 +2465166 +1819652 +785487 +2465147 +1793416 +916219 +2145934 +2576647 +1774576 +1542267 +2465206 +916229 +1351861 +2641447 +2465137 +1064181 +525039 +916207 +1793420 +1793403 +1793435 +1213740 +2576664 +326863 +1064188 +1774582 +1860302 +1110718 +1213743 +1064187 +2465218 +1136777 +525033 +1793423 +2465140 +82339 +916203 +2752801 +685822 +2465106 +1793381 +1860312 +1996445 +1386979 +1027493 +2465109 +217275 +785495 +1542277 +2465169 +2465226 +650778 +1159990 +2037144 +1027495 +1386982 +1542260 +1064184 +2145928 +2752817 +375648 +406209 +1103273 +1704163 +685895 +1793491 +8655 +2641496 +354236 +8686 +1421794 +956980 +2433073 +1793481 +2146103 +406202 +1542348 +2062670 +1689006 +711711 +1793492 +2465328 +1682382 +2576744 +525049 +1241135 +711719 +82393 +1039641 +865084 +150138 +2465296 +464269 +2320439 +1542313 +2146018 +1728161 +1381350 +1241148 +445235 +1860381 +1860404 +685888 +785518 +1860362 +685847 +746309 +2641499 +956985 +395776 +1860417 +1728160 +8650 +1146844 +2759725 +326898 +427349 +2576701 +2145944 +2576766 +2576693 +1542333 +1913341 +1542342 +1002384 +445224 +1765026 +2576748 +150145 +2145995 +2146123 +339463 +2320521 +2465324 +1793478 +685897 +1182480 +2641472 +711709 +785516 +1860360 +333698 +685866 +445248 +1421793 +1091649 +785538 +1002406 +1814359 +1901815 +1913362 +2259935 +2465388 +2259909 +2433092 +1688993 +402307 +2320515 +150144 +1860430 +1688983 +711738 +2259927 +957014 +326876 +333689 +1913352 +2146008 +2259913 +1814353 +2320474 +2320520 +1241147 +1913361 +1828537 +2576730 +1421789 +1213779 +2320463 +2530768 +685886 +685868 +2576732 +685875 +82414 +192809 +2465364 +364646 +1421775 +2576757 +395773 +2465389 +1860396 +1469238 +2146025 +1200611 +1793487 +865045 +2320477 +311648 +1860380 +2576715 +685843 +785534 +150124 +2576746 +1860346 +2512437 +333699 +2145972 +2146114 +311647 +2146115 +445215 +1146841 +445232 +916245 +1421795 +2383407 +711695 +205990 +1828526 +2680951 +2383419 +364627 +711697 +1182479 +406204 +1828527 +685885 +1200607 +685884 +609828 +445246 +2320476 +82410 +2259925 +685898 +339464 +1542284 +2383415 +746302 +2259910 +445203 +957026 +2383416 +1002347 +2145974 +1860442 +1002369 +1398021 +2259883 +82381 +1182484 +192791 +1421796 +1421785 +1793438 +2146007 +2146023 +8662 +1860397 +150107 +464261 +685894 +1793490 +1365941 +2281956 +2320416 +2320438 +445204 +1324344 +1913363 +1689005 +427366 +1241145 +2259905 +205989 +150092 +1002330 +2465354 +1421790 +2465380 +2146026 +8689 +464248 +1421786 +150139 +150120 +2259895 +865056 +2146095 +2259911 +650788 +2576725 +711704 +2259878 +957032 +2465373 +2145965 +2145939 +1002383 +1091656 +2320443 +1689010 +1860429 +205997 +427354 +1860398 +2320491 +2145940 +2351618 +1002426 +2576712 +741032 +402310 +2294149 +1860349 +1793469 +2641490 +1828533 +2320419 +746317 +1860368 +364632 +940125 +1200614 +1704173 +1994942 +1704183 +464287 +206000 +1814371 +2786297 +1175566 +1985010 +2786280 +865093 +489603 +1167740 +1784131 +489599 +2786293 +2019928 +8692 +2786269 +1241159 +2019933 +464282 +907766 +609864 +1200622 +2786214 +1860448 +1167739 +609858 +2786284 +236361 +2015453 +2786279 +206001 +2259968 +414431 +2309027 +1704181 +1814393 +2549063 +2786260 +375659 +865092 +1814383 +1039643 +1704174 +150164 +435705 +445255 +236358 +1343555 +1200623 +406218 +940139 +2309025 +1241163 +1704178 +2413558 +2259975 +1814389 +2259942 +1469253 +2413556 +1670086 +1241166 +1793520 +2786267 +2443918 +865086 +865115 +1704175 +339483 +2259969 +1689018 +1689020 +445269 +402313 +650794 +751779 +477461 +1689015 +1793522 +751782 +1002438 +477459 +1160005 +1146851 +2786309 +1002437 +206009 +269786 +402337 +82433 +236394 +269784 +1213806 +445263 +82423 +751790 +751788 +402321 +751785 +2786314 +477457 +1793523 +290783 +1200629 +2549077 +406224 +435710 +757410 +907790 +757408 +2013416 +757407 +865138 +1624339 +1134698 +609884 +2625234 +1469258 +2549103 +1752956 +2786423 +2786418 +907791 +1241176 +1682416 +2549084 +1469257 +150173 +489611 +2443945 +1901843 +1784133 +2309043 +2549123 +1704213 +311656 +1845504 +940154 +2786318 +2549097 +2786399 +1343573 +2443953 +1024726 +1343566 +2786352 +940155 +1624347 +768007 +2786356 +1704200 +2625236 +1103286 +2413574 +1241194 +435708 +236414 +1752962 +1670092 +1518637 +1421815 +2443942 +1814439 +206012 +711772 +2259995 +236416 +907784 +2625237 +2786343 +1073243 +940153 +940159 +8723 +2019936 +236417 +2013412 +609875 +414440 +865137 +2359831 +2433138 +269801 +2549155 +2465489 +2786445 +464305 +1073267 +2576787 +865250 +445290 +1469312 +609929 +435712 +1985027 +464301 +1200645 +2019941 +2294187 +609910 +1624455 +2512446 +1404978 +865167 +1421826 +1752976 +1624461 +2146156 +50223 +192829 +2146227 +1213820 +2576774 +2576806 +414445 +2021676 +1200641 +150204 +445283 +464299 +1124397 +1774626 +150237 +865211 +1661141 +2260070 +2037167 +2641525 +2641518 +1404987 +2146143 +2423710 +339507 +1469336 +609921 +1761741 +1054319 +2260055 +150259 +1002463 +395807 +150191 +1483592 +2730929 +1974381 +1073264 +1719613 +1682447 +1495974 +1469297 +2082128 +2641531 +1624428 +2320570 +236448 +1793576 +1518658 +1670127 +1469344 +2062694 +2422057 +1624373 +1241205 +865241 +2368622 +1774625 +150332 +2260208 +711821 +1064230 +2146234 +2576812 +1860460 +2530785 +2351622 +1469326 +2443960 +1213814 +1682436 +2260203 +414460 +957037 +1002519 +2433135 +1704235 +2641530 +2146185 +865194 +1985019 +1252091 +2146312 +711809 +1752977 +1913371 +269805 +2443964 +2827208 +2013426 +2422055 +236420 +1624438 +2351626 +2146308 +427386 +150270 +2260174 +1136787 +489626 +1661157 +1661159 +1728167 +667077 +364655 +1624448 +865148 +150216 +1828562 +1710939 +1110731 +206047 +1542370 +1624398 +326926 +1624413 +1073306 +2512448 +1518683 +609893 +2062699 +1518659 +1324346 +192820 +865234 +2576802 +82444 +2260163 +326915 +50214 +2260127 +2082150 +1124392 +1814460 +150325 +609927 +2260082 +269790 +1710942 +785559 +1913375 +865233 +1761730 +2530786 +82445 +1682430 +667076 +2062704 +1103294 +2146322 +2745947 +685912 +347479 +2146142 +1103301 +2423717 +1542377 +1542350 +1664964 +940186 +1421836 +1710940 +1689041 +2260200 +1134702 +192816 +1469285 +2853854 +1365961 +1064249 +395788 +2413581 +2260206 +1064239 +2576798 +1073272 +82440 +2062673 +609909 +150206 +150243 +406248 +1213823 +1542396 +395822 +1670111 +2625250 +2260060 +1542387 +217280 +8757 +746339 +1421841 +1765049 +1624442 +1091664 +1091665 +2026811 +1124382 +1624384 +1421848 +609890 +1624411 +1241224 +395819 +2465420 +525080 +2146274 +326907 +2260075 +1784145 +1469310 +2260173 +2786440 +2260087 +2320538 +50217 +2260158 +1400939 +1386986 +2146303 +2465518 +427391 +1002498 +1624380 +2260226 +1365962 +2068559 +1819662 +2465461 +2576785 +1689038 +2146184 +192825 +2423708 +1495964 +1073308 +2309051 +2422040 +1064243 +2146291 +1860463 +865214 +2465485 +206054 +1974378 +1661163 +2260031 +1073286 +2260235 +865156 +2512451 +2062675 +1518671 +2062700 +711805 +326924 +2512449 +150207 +489620 +1495961 +2146296 +2260069 +2294205 +236440 +2576782 +1624366 +1213821 +1689045 +1160022 +721495 +1124381 +1167748 +916254 +711781 +2530784 +150327 +2260040 +2004442 +1542408 +865182 +2465419 +395809 +1624386 +464302 +1935857 +1761729 +2443967 +1793566 +2709588 +1518675 +1073276 +1670116 +236450 +1763184 +1142137 +1002490 +2260139 +865166 +1542405 +1860455 +1421843 +1793569 +2037157 +192827 +2062684 +1542394 +82451 +150236 +1793549 +1901860 +2465455 +2433159 +192817 +150301 +1495971 +609913 +2260039 +1469282 +2383458 +150205 +1469315 +2576804 +2260077 +2279559 +2285766 +339508 +2465493 +192832 +1670106 +2260192 +2260095 +395833 +1774642 +311662 +1828550 +1077658 +667099 +269974 +1167758 +406282 +415254 +445309 +464328 +269929 +236610 +270281 +489800 +270039 +50236 +2465579 +414854 +1793636 +206142 +206093 +414615 +2320769 +2320744 +270045 +236670 +489722 +269965 +269890 +406636 +414868 +150443 +2320770 +269873 +150439 +236514 +150471 +415352 +2320821 +751802 +1400947 +610328 +415303 +406570 +1077782 +415323 +464323 +236755 +610047 +2465587 +406521 +2320738 +270274 +2465566 +270253 +464354 +489667 +236647 +2465524 +1077603 +1689224 +402373 +1077789 +269981 +236730 +406478 +150364 +406273 +206106 +1167795 +415043 +270148 +402382 +610019 +414949 +1689273 +414719 +236772 +2320643 +414704 +269952 +236763 +150334 +269878 +406286 +269875 +2465589 +406301 +489721 +414532 +415309 +270109 +236573 +610057 +236554 +415264 +50229 +2320632 +489762 +150441 +751797 +50251 +414763 +414793 +2320822 +2320741 +406288 +270307 +311670 +610096 +150396 +406340 +415122 +415111 +489791 +2320613 +150452 +1167780 +150362 +270010 +2512479 +711848 +1814572 +1814590 +236592 +406466 +2759733 +435741 +414987 +150384 +2320703 +406632 +249210 +406646 +489790 +414834 +1077613 +414588 +406251 +270245 +50250 +1814508 +1077722 +1077700 +414946 +414616 +406341 +2320792 +236589 +415314 +1689187 +610260 +610038 +414973 +1002548 +2465540 +711892 +236710 +206097 +236572 +414991 +269989 +269850 +489712 +150457 +414653 +415151 +1077630 +2465547 +406566 +414587 +477493 +236566 +711854 +269860 +414592 +489649 +1077711 +406592 +414672 +610212 +464418 +1167769 +402413 +236567 +269891 +610083 +406482 +406413 +1077728 +610121 +414986 +489841 +609986 +609965 +1689269 +1167766 +1398027 +406370 +1252093 +610277 +414462 +269830 +1814620 +414648 +414766 +1689072 +236746 +150335 +1935865 +415229 +1689261 +2320782 +2320648 +414780 +269932 +414528 +610037 +489797 +711874 +415171 +270051 +1077741 +1167789 +1077604 +236768 +406516 +610084 +489872 +406322 +746351 +269953 +711899 +269980 +711853 +415389 +2320712 +2279564 +236736 +711926 +414992 +2320720 +609987 +1077779 +1200646 +489685 +206073 +2641532 +269936 +269818 +610302 +270117 +415370 +610261 +406624 +711875 +1814513 +2320630 +270193 +2320644 +415358 +2019953 +1689185 +269921 +489692 +2512493 +270180 +2465569 +270143 +414686 +1134707 +415374 +1077615 +236782 +414833 +406522 +406323 +2320615 +1689066 +150397 +415106 +415059 +1077787 +489665 +270312 +406586 +435740 +414789 +610109 +489804 +1077650 +741051 +1793597 +236672 +415075 +406575 +435733 +464377 +236764 +1241236 +415356 +610104 +150448 +206107 +1814515 +414560 +2320666 +269838 +1400949 +2320585 +414984 +406614 +269886 +415384 +1167763 +489635 +414754 +1689063 +667087 +270011 +1670134 +1134705 +270306 +406253 +270265 +2320786 +415289 +711857 +270323 +206148 +150381 +206115 +489713 +414479 +711867 +2465551 +406662 +464357 +1814592 +1689243 +1814599 +206136 +2752841 +464408 +2512458 +236539 +489802 +2465574 +1689299 +415355 +270171 +415212 +489741 +489832 +414675 +415327 +414895 +1793605 +414535 +236689 +1814482 +415107 +150404 +206077 +1814607 +414806 +270111 +270304 +236666 +236699 +402365 +445306 +609983 +610153 +269997 +489853 +1814550 +206130 +2146325 +1689256 +402381 +269870 +1689132 +269896 +1077617 +489678 +384349 +236490 +270136 +414626 +2512505 +610192 +610012 +1689164 +609985 +270065 +269809 +489817 +414770 +270164 +610251 +414731 +1689156 +236677 +711907 +270198 +406503 +150458 +270338 +1252092 +150365 +150406 +1689128 +236642 +1689082 +609973 +236767 +489813 +236590 +711958 +415095 +1793619 +610282 +406409 +1077624 +1689287 +206089 +249209 +489701 +2320776 +2320608 +609939 +711910 +236601 +415235 +414509 +406483 +414798 +415141 +415181 +2320739 +1814528 +610026 +415371 +1814557 +414712 +406674 +415062 +489749 +489690 +2752834 +609957 +1814611 +2021687 +414968 +2021689 +609990 +1689067 +414990 +415281 +741052 +414482 +415020 +464348 +414521 +414758 +1689178 +236701 +427403 +414638 +415337 +489810 +1814566 +2320664 +1365963 +406533 +290791 +2512485 +414630 +414926 +270261 +270005 +489668 +150373 +406465 +415175 +610055 +464420 +414775 +415373 +1689263 +311684 +150523 +940253 +2433240 +1134740 +2082221 +610342 +236861 +2465604 +2576872 +464440 +1518756 +2433223 +667109 +2576854 +206202 +1624466 +1134714 +1682467 +2549158 +2260257 +2576861 +940221 +1658682 +1002576 +1658685 +1719636 +940282 +1661168 +236849 +1469375 +2433233 +1469359 +2433237 +395859 +2433184 +1469352 +2549160 +1421884 +1469385 +1469387 +2433214 +1624496 +8773 +1658690 +206156 +1624487 +1658752 +1469356 +375680 +1469425 +940254 +1200650 +2433234 +358868 +2433197 +1985028 +435757 +865331 +1728174 +1002554 +1469426 +1002560 +50300 +1002558 +395873 +150546 +206162 +1658699 +50310 +1002578 +1002569 +2530794 +1661173 +610344 +236852 +236854 +206197 +1658741 +1658760 +150494 +1073309 +1710945 +1469402 +2423721 +1469415 +2082176 +2443986 +940310 +8784 +1793640 +1719635 +150590 +1658700 +1469388 +1689313 +206161 +1134742 +326937 +150551 +1002580 +1658704 +940245 +2443992 +311681 +50295 +1134744 +358871 +1752982 +2576845 +427406 +940320 +1495980 +150581 +1103307 +206171 +358869 +2443976 +1083916 +1241259 +2443975 +1469417 +1658757 +150544 +1518742 +1682450 +2433265 +1469373 +1469403 +1073326 +1469348 +8809 +1469406 +2443970 +395870 +1241261 +711976 +8792 +150574 +1142156 +1657684 +1365966 +2465596 +1134711 +610340 +1495979 +2320842 +217288 +940231 +150564 +1518762 +1664977 +445313 +1039659 +865296 +1707771 +2433251 +358867 +375681 +1241264 +2576886 +150565 +940288 +2433254 +206200 +2576885 +2433189 +406697 +206220 +1469395 +2082190 +2433186 +82471 +395868 +1134730 +206172 +1365969 +2512520 +50286 +150486 +1469351 +940294 +1670142 +2433221 +1814633 +1658734 +2278188 +1469422 +50277 +940311 +1518721 +1054329 +217289 +2465606 +2433270 +1658732 +1073332 +206209 +1142150 +2433248 +685920 +311678 +1719629 +1142155 +1518759 +1469378 +865305 +2433224 +206207 +1213832 +865298 +2260265 +150500 +1658669 +1142168 +2433213 +940280 +2082213 +2015466 +50293 +940255 +1719627 +865317 +2433231 +2530792 +1707782 +237006 +1469441 +358897 +237038 +1784161 +206270 +236994 +1658775 +206386 +940339 +1624540 +406778 +206389 +395904 +1241291 +206260 +2625260 +402434 +1002594 +2351651 +435776 +290801 +395907 +150616 +402433 +206426 +1682471 +2853987 +746356 +206310 +206253 +2433307 +150784 +2853958 +2309072 +1814637 +237063 +1142174 +2853883 +2853916 +1002599 +2444020 +2853933 +2854013 +2853874 +1682474 +206400 +150742 +150808 +1752984 +237113 +1664992 +206286 +206408 +1704252 +290807 +237112 +326957 +464442 +206390 +237066 +395897 +150596 +1624553 +1200690 +2309075 +2576902 +50356 +1704256 +150674 +50363 +2444053 +711980 +1752983 +1200691 +150828 +406759 +406756 +1518804 +206284 +2278190 +2433304 +1142180 +406792 +1624533 +150653 +206355 +406741 +206264 +50372 +2444044 +1814641 +2853953 +2853980 +150824 +1624518 +2853931 +1142191 +1142200 +339555 +290806 +150795 +50359 +1624554 +339544 +1142193 +1518782 +395883 +2444021 +150733 +1142175 +2433294 +206335 +2512525 +2576903 +2853929 +2853977 +1682497 +236958 +150714 +1518807 +865337 +610368 +237114 +2853924 +2465613 +150765 +236995 +435786 +50336 +358898 +1142178 +236975 +150660 +395912 +206425 +1134776 +206398 +2853982 +150819 +237096 +237070 +1624556 +2625261 +237093 +206305 +150635 +236990 +1719651 +435790 +1002613 +406718 +1421890 +339595 +464452 +206367 +2413586 +1542438 +150849 +339581 +2854010 +206429 +1624541 +2853984 +2433290 +206321 +1134761 +2853949 +50368 +150615 +150699 +206254 +150643 +358902 +1664998 +339626 +2854012 +236946 +2146333 +1073356 +150842 +2512531 +1073359 +50394 +395926 +339621 +2625259 +406701 +206326 +339610 +1658786 +406735 +1664997 +1002621 +150706 +1624530 +2433275 +435781 +2853905 +2260279 +406702 +2309073 +395915 +406801 +326954 +237068 +1658791 +206244 +2465754 +2465819 +1542467 +1689319 +751829 +957073 +1774674 +2433442 +1054348 +2530808 +901303 +2576922 +2423742 +1860499 +249227 +2709590 +249224 +1542472 +2465806 +957058 +957093 +2517117 +1704258 +1064276 +2146370 +2294262 +2082255 +2530804 +1765070 +2082245 +2037170 +2294272 +1391803 +1765056 +2465821 +2465801 +1793662 +957060 +785593 +477496 +1213837 +8876 +1146885 +2320868 +2068562 +249211 +757418 +2576920 +8871 +2465669 +2465751 +1496003 +2082233 +2146365 +8863 +1793653 +2026822 +2146381 +1483596 +82489 +2320881 +2433407 +2576905 +757425 +1421897 +916293 +1761745 +2068563 +2433404 +2465650 +2465691 +1054337 +1495995 +1689318 +2576915 +1496033 +2281981 +8861 +2576917 +1496009 +2465769 +2082250 +901304 +8862 +957078 +1661186 +2465690 +2465738 +2082262 +1774675 +2146335 +2433383 +2146336 +2530801 +1054346 +2465648 +2146341 +1542457 +1421906 +2146352 +1761753 +957072 +1999586 +1160056 +957086 +2433350 +1793675 +751819 +785597 +2433352 +1160051 +249233 +1091676 +2465641 +1064280 +785627 +1496017 +2530803 +1774673 +1496035 +2465649 +1661188 +395947 +2146347 +916289 +1793683 +1213836 +957075 +957120 +2082270 +746374 +2037180 +2146442 +957122 +384358 +150862 +746373 +2320916 +1496043 +916294 +1793711 +1860504 +865349 +2146391 +1421954 +1054365 +1828577 +685939 +406806 +422255 +957114 +2037183 +192878 +1496038 +525108 +1542519 +1542503 +50400 +1774681 +525113 +1002628 +785633 +384356 +2517119 +865346 +1793709 +1860508 +2146403 +8884 +1689328 +2281987 +610380 +957113 +384362 +746368 +2320911 +957109 +192879 +1421956 +150854 +1421953 +610383 +2082269 +2146400 +667112 +2281986 +2068567 +2146429 +1542516 +1421949 +525107 +2530826 +2576943 +1828575 +1793712 +785674 +1160072 +916317 +1146945 +916347 +1146977 +1793758 +1182522 +327003 +757447 +2465916 +916318 +2465989 +2465986 +1670191 +916341 +685944 +2433488 +785685 +916322 +1146926 +916310 +2009863 +1793735 +415427 +422328 +249241 +2465928 +650806 +2465864 +237123 +751842 +2146456 +525128 +1171320 +2294297 +525126 +1146968 +339634 +957128 +1146972 +916331 +477507 +2465903 +270341 +2465995 +1146921 +339635 +1542531 +422289 +2433456 +1774725 +2146483 +1272409 +757441 +2465927 +1793732 +2320925 +192883 +326972 +2013427 +1765108 +402444 +2465914 +1421964 +1793751 +489876 +2465901 +916338 +2465909 +1160073 +2433459 +2146457 +333815 +916339 +402449 +1542589 +916306 +2423764 +326984 +785699 +347482 +1136834 +2433483 +1146933 +339636 +1542579 +751837 +1213845 +1542532 +1774717 +1765090 +2433517 +1146967 +192909 +2285770 +2433491 +1136841 +1670180 +1670183 +1661205 +1542559 +1083922 +1496059 +1213858 +8890 +1793733 +1542544 +422326 +957125 +957151 +1793715 +2383483 +415425 +1110741 +1689335 +2465840 +2752846 +916304 +395958 +1146939 +2015473 +1774693 +1657688 +1761756 +1761760 +1136825 +8895 +2465983 +2465935 +422258 +1774697 +1658809 +1793737 +2294286 +192905 +1661201 +1774705 +2465962 +2465842 +1913382 +422343 +422304 +2465905 +2465992 +1765096 +8904 +217299 +192884 +192894 +1241308 +1421974 +1774698 +1793744 +8898 +2433520 +249238 +1146983 +2465948 +192893 +1689332 +249240 +1793752 +1146962 +2465894 +1136837 +1670207 +1793722 +785645 +957149 +1860555 +1624615 +1365999 +422351 +2423767 +1365981 +50412 +1860537 +2465998 +464466 +358923 +237160 +1518820 +50409 +1624625 +422361 +2062721 +237138 +8925 +865406 +916357 +2512551 +358925 +1103322 +422360 +865393 +865405 +610406 +1710957 +2062727 +2466008 +358917 +525146 +940369 +1366009 +768019 +2413589 +2433538 +375705 +865410 +757453 +1077795 +1366010 +1087803 +1469459 +2383488 +711998 +1985031 +1665001 +2576966 +2577016 +1200711 +422357 +2517123 +375692 +50402 +525149 +2466036 +1002703 +1087808 +1542630 +610418 +1366002 +311694 +1542639 +1719671 +422379 +2530842 +2549173 +1704263 +2466024 +1039666 +2146521 +785717 +1366014 +610475 +1002679 +746383 +1241313 +865411 +2641562 +1518851 +290809 +82527 +1083943 +2146500 +768025 +1774733 +1828588 +1002663 +2422066 +2260320 +746385 +2294325 +2320946 +2294327 +1719668 +2260370 +2512543 +1147001 +249250 +1774734 +525158 +1324374 +358916 +206447 +1774742 +2517121 +1704262 +741088 +1624588 +1814654 +150908 +347488 +8917 +1241323 +1343585 +311697 +2383490 +2577000 +1845513 +435799 +150890 +865394 +1624617 +2625277 +2433537 +1365998 +957156 +685966 +1087806 +1860523 +1134780 +2260339 +1324373 +150927 +1765115 +610397 +1860544 +1624604 +2576995 +2576961 +1719685 +1103327 +270367 +1496081 +2383496 +8910 +2260310 +1054378 +2285774 +2680966 +1343592 +375703 +610459 +1091689 +1366025 +489889 +2466050 +1774739 +435801 +865385 +237152 +1272416 +347490 +610470 +237159 +2294330 +2466037 +270366 +1624578 +1765119 +2433553 +8929 +865401 +358913 +2530841 +1518834 +1901881 +1682511 +610389 +1661211 +785722 +270378 +445328 +1719683 +1103332 +406813 +2576989 +2576970 +1496069 +1175612 +1182528 +1828591 +249248 +1682519 +1624613 +50427 +1845514 +1719680 +1365997 +1002653 +712014 +311702 +1366006 +237145 +768020 +422377 +1469489 +358928 +1400986 +1814662 +489901 +2082309 +1091691 +1793776 +1241341 +2294338 +2641575 +1774752 +2577065 +1860586 +1073386 +1665009 +237168 +1469493 +610510 +2413596 +1710967 +327014 +1845517 +1682531 +2275593 +1774756 +2466065 +206455 +2577056 +1024735 +685977 +1901906 +406821 +1400990 +1213876 +339673 +192931 +445341 +339670 +1624651 +2013432 +327017 +1814660 +1241347 +375712 +2013431 +2383504 +1381364 +1213882 +712030 +445336 +1087810 +2577054 +2466075 +150958 +1860566 +2466076 +2709592 +751847 +1083953 +610511 +1774744 +2309086 +2433563 +1774750 +1136844 +1860597 +237177 +464475 +150960 +1828622 +610517 +2625279 +489893 +50430 +1793780 +1765128 +2466074 +150953 +1774746 +206454 +415433 +2577053 +427430 +347492 +610513 +685982 +2530863 +1175614 +375721 +1793774 +2015481 +2530861 +2466073 +2423771 +2577067 +1002723 +1542649 +1793772 +464479 +375719 +2433560 +150972 +2433567 +1814661 +1262467 +1400984 +2641576 +1469501 +1860581 +1136876 +685993 +2466232 +2577105 +2433629 +741106 +1252111 +8947 +1160121 +2466169 +1064318 +82536 +1087811 +327024 +2433603 +327022 +2383512 +2433624 +916363 +685995 +150977 +2466105 +150979 +1064302 +721517 +2146596 +1402139 +2146561 +1160120 +1860611 +1160103 +1496105 +2433587 +1160106 +1077797 +1774807 +2146558 +901330 +1542676 +2433607 +721514 +2433596 +2530871 +1147011 +1182537 +1054392 +2433598 +2466159 +785724 +1793795 +2320966 +217315 +1542702 +445349 +2466208 +2466137 +525172 +2466122 +192942 +8937 +1136855 +2082321 +1670250 +2466210 +1136875 +1160091 +721513 +686016 +757464 +1386993 +2294351 +2320984 +610533 +1160085 +2015488 +1160129 +1542693 +1682533 +686013 +1765129 +2320982 +2466172 +8943 +50447 +1136869 +2146577 +1422011 +685988 +2015507 +686002 +192938 +2466108 +2433608 +1110746 +2466197 +2146641 +192946 +2015503 +1064301 +2309087 +2641585 +2015494 +2466104 +2037199 +1182548 +2577102 +333832 +2466118 +217324 +2146618 +686005 +1860630 +865429 +1774780 +1136870 +2146581 +525163 +1136873 +2577082 +2421226 +2466189 +741099 +1774790 +1398050 +2015492 +2146637 +1391814 +2146559 +1064317 +2146629 +1160092 +1182549 +2146574 +2015508 +2021707 +1054388 +1160087 +1182538 +1774802 +916361 +1147022 +1974393 +2577087 +2577129 +1050258 +2146735 +2037209 +686020 +686021 +327035 +2433664 +712057 +2423793 +650824 +1241353 +1002730 +1496117 +2146669 +2530873 +82556 +1324398 +2577132 +2709595 +901342 +2146670 +1542745 +1147026 +464490 +2745955 +2466341 +2037211 +525188 +746415 +1542747 +957169 +1064339 +2699138 +2752869 +2577123 +751857 +2146651 +916369 +1860635 +2351683 +2423790 +2433665 +2146704 +1774829 +1136892 +1542727 +650823 +82553 +2146648 +1542733 +82558 +746405 +2433667 +1351916 +2466265 +1661229 +1670266 +2146717 +2466316 +1422044 +1542749 +2146663 +1422046 +1171336 +2146679 +1073392 +1814666 +1136882 +1171334 +1689348 +1182557 +1670264 +1262469 +2082324 +395977 +2466259 +785763 +1774817 +2146674 +1624664 +1913392 +415440 +2466289 +1064342 +2466319 +2466362 +1793820 +1774821 +1064338 +2146692 +957171 +1689355 +2433641 +2577128 +2320995 +1110752 +686033 +2433659 +1134785 +1860637 +2530881 +150991 +2466284 +650821 +192959 +82565 +2466247 +1496118 +1689359 +2466325 +1542711 +82562 +1160137 +2577109 +2433660 +1050269 +1422035 +865450 +1160150 +1661231 +957176 +2433645 +741108 +1160135 +746419 +1002729 +2037207 +2577140 +1542712 +865441 +1050267 +2320993 +1064337 +1087813 +2383520 +2433630 +2641650 +525196 +1262482 +2321025 +395980 +364682 +1901921 +957184 +285029 +2146766 +1689406 +1860691 +347505 +1087821 +1542786 +1024737 +1860685 +2146770 +1913413 +2146774 +1793844 +1241377 +445372 +1542794 +2026829 +1351919 +270419 +1624671 +464513 +1160153 +2433688 +712059 +2466439 +2321019 +384374 +464509 +2082345 +2530890 +1351920 +2321020 +151012 +1860659 +1689410 +2577168 +464516 +1935884 +1182580 +82577 +1901934 +8958 +1542771 +746421 +1814685 +757476 +2282006 +2466421 +1142220 +1136901 +489915 +525195 +916373 +82571 +1182582 +1130040 +2641637 +2146756 +1913409 +1200736 +2466430 +1901930 +358950 +2433687 +1670274 +2517130 +2512567 +1182585 +333841 +2577163 +2577161 +1689396 +2512566 +1860683 +2641618 +1200724 +865461 +1252141 +2680972 +347502 +1542787 +2577170 +1935885 +1710978 +1774842 +2641610 +1175617 +1324411 +2466459 +464514 +464500 +2466392 +1182577 +2641612 +1002737 +435806 +2512571 +1160154 +1324413 +1324404 +1913402 +1200730 +151021 +1624673 +721535 +2466477 +2577205 +249266 +2466490 +1935896 +2359845 +2549198 +2383549 +1901935 +1002756 +1999598 +1103347 +1175634 +2383539 +1469513 +1719703 +1091708 +1793882 +8962 +298448 +1913417 +865480 +1351922 +1542828 +1860752 +1252148 +1793875 +1272423 +339692 +2641678 +1860749 +940384 +489942 +375736 +1054404 +285031 +1054403 +422419 +1935893 +237191 +445380 +1860720 +901356 +1542845 +364690 +489929 +1913422 +1103348 +2577211 +1753008 +2752886 +1860746 +1774846 +1160162 +1828661 +489939 +2383541 +1704298 +1402148 +2641691 +489932 +1160165 +1624682 +1542818 +712071 +2752892 +1542816 +1103350 +489927 +1860722 +1241405 +2466474 +1901946 +2383537 +1002746 +2444098 +1860734 +865487 +464522 +2433689 +2019970 +2466511 +192972 +2383536 +1985037 +1027500 +1002759 +2466491 +290816 +435824 +151036 +1753012 +445379 +237190 +1422057 +2641682 +1241397 +1753013 +2577208 +435822 +1422067 +2641695 +1213924 +270427 +757483 +206459 +1814702 +2466517 +358952 +1241425 +1624690 +667126 +1901936 +785793 +1241423 +1670278 +2321036 +8981 +757484 +525228 +2466566 +916397 +2433701 +1774858 +1670279 +916385 +2383553 +525208 +1542853 +1077808 +8975 +1496141 +2321030 +2466569 +1765166 +1422073 +327052 +364694 +916403 +916394 +82593 +1050277 +785817 +916388 +2466559 +2279582 +2146818 +8996 +1147046 +2282015 +1422079 +746428 +2433706 +901360 +1054415 +2577212 +1213949 +2466582 +957225 +1793908 +1860757 +1661239 +2466556 +2530904 +1542849 +2466588 +1324424 +1213944 +1351924 +1496130 +2421233 +2466520 +2433710 +2423799 +1542869 +2466546 +1324423 +2354362 +2146830 +2466567 +1160174 +751862 +2577244 +2294414 +957236 +1774928 +2466748 +1765177 +445395 +2321068 +1054421 +192988 +1774934 +1774893 +1774921 +2294407 +1774946 +2466670 +2466610 +2466634 +741114 +2466611 +2466643 +2433763 +1496167 +2466755 +686065 +1542884 +2466650 +1860793 +2466694 +2530919 +217336 +2466784 +2466787 +2466749 +1774932 +1402151 +2466635 +2466734 +1974412 +1054420 +1661242 +9005 +916411 +2466741 +1422134 +1860840 +2466708 +2146922 +2146870 +686072 +2577236 +1670290 +1252187 +2321062 +1670295 +1422082 +82597 +785857 +327092 +1496171 +2146885 +1860836 +1765182 +1860806 +1496143 +2466756 +327093 +1252170 +525233 +2294399 +2082370 +2577269 +785876 +2466599 +2433778 +1670294 +2466608 +192997 +1774888 +477526 +1999600 +1542916 +610560 +2466644 +1160213 +2433742 +2068590 +2146881 +785870 +2577254 +1496180 +1774894 +2294400 +1860835 +916415 +2577237 +916420 +1661246 +2321076 +192985 +2577246 +2082369 +1860824 +327102 +445392 +2146894 +1147068 +2641732 +2466668 +192994 +2433754 +327074 +2294413 +477527 +865500 +327072 +1147066 +1828678 +1828687 +2146882 +1422091 +1252172 +1160217 +2082366 +402490 +1050283 +2383560 +916418 +2321045 +2466732 +1054430 +1828682 +1213964 +2146907 +2577274 +1728199 +2282020 +1422139 +1542893 +2433724 +2383555 +2146861 +395997 +1542950 +2037252 +2466898 +1670347 +1774961 +2146938 +1689430 +1860860 +1136931 +1398067 +1670316 +1064367 +82602 +1252189 +2466830 +2321091 +1402154 +2466913 +1136926 +1793930 +1182600 +2146934 +686086 +285033 +1793934 +2146948 +2037233 +1391831 +2641740 +2466876 +2146967 +1002776 +427464 +193016 +1793953 +1661255 +1023490 +1657701 +1171360 +1860865 +1422161 +237196 +1542945 +2466912 +2037258 +1422170 +901379 +1002775 +249271 +2466853 +1814716 +1213968 +2641737 +525250 +1213980 +2466834 +2146928 +1054434 +402496 +489948 +2466889 +2680993 +1422163 +1542978 +1136939 +2466806 +2466888 +1422173 +2466869 +217339 +1160232 +1828695 +1670346 +2466840 +249288 +1422146 +1710989 +1422160 +1422154 +2466824 +2466823 +2752902 +2466801 +1670348 +1661249 +1661253 +1064356 +1422201 +193042 +2433788 +333852 +2466864 +1542940 +193015 +270436 +1422153 +395993 +1542960 +1670320 +2321090 +1542953 +2641749 +2321118 +1828697 +1064365 +1728202 +1689421 +1147084 +1422191 +2037259 +1422149 +1252193 +2709599 +865506 +2433816 +1542984 +2019971 +2433824 +2466934 +1661261 +402520 +2466964 +2444102 +2530927 +1054439 +237203 +1793985 +339699 +1422215 +327119 +2466988 +2466963 +1136940 +1670405 +415478 +445403 +2467027 +2309093 +610575 +1110766 +249313 +415452 +741116 +9025 +1670388 +270440 +1793958 +2466966 +1064369 +1670372 +2641751 +2466948 +1469524 +1542995 +1064378 +1860871 +751866 +916450 +2466927 +686096 +2146977 +1002786 +396008 +2467001 +957280 +151051 +1542982 +525258 +2752907 +2433801 +2512602 +396019 +957290 +406836 +525253 +901383 +333864 +1793981 +1134802 +1351936 +916442 +1624694 +525259 +1794000 +686093 +2423823 +2433795 +1134803 +610573 +249301 +2433837 +1793994 +2577299 +402518 +2466968 +2021722 +402513 +9021 +1935908 +333865 +2146973 +1496193 +2423822 +2466955 +916447 +50458 +1054442 +1860875 +2466998 +1160241 +1543009 +402502 +151050 +957296 +610572 +957279 +1160240 +2530926 +1469527 +2512604 +1002799 +415454 +2433810 +1054441 +1543006 +610571 +2433802 +1422227 +1670360 +82608 +2467012 +2433836 +2466972 +1763197 +1054436 +2745961 +1422219 +1794045 +402540 +1381374 +2467206 +415488 +1147127 +1171367 +1136968 +1794028 +1670418 +1935909 +2147029 +217352 +1670416 +1794006 +916483 +2282029 +916492 +1027503 +2577301 +1689436 +1794055 +1913448 +2321189 +1950904 +1794020 +2467178 +1050301 +2021726 +2082379 +1794008 +2321194 +1860895 +650845 +1794072 +2467210 +901412 +2015533 +1160255 +1160250 +1272438 +1661272 +2147010 +901436 +402547 +1543019 +1794066 +2641771 +2467163 +1469534 +2147037 +2467226 +957306 +1422241 +2433852 +650846 +2294438 +2467126 +327121 +2321171 +1913443 +2147021 +2467191 +1543013 +396030 +445412 +327124 +1775000 +1496201 +82628 +477576 +1422271 +1160260 +1775013 +2512609 +1784190 +2641759 +2641776 +1422272 +415486 +785898 +2467122 +1543026 +2467072 +1064381 +1160265 +901448 +2467203 +901421 +1214029 +9047 +525274 +525272 +2321204 +1422260 +1160258 +151056 +1422262 +1689451 +1422234 +1794035 +2467103 +2433843 +1214007 +2321160 +427472 +2321191 +1496206 +1087829 +1913450 +1543065 +1422251 +1794024 +1775005 +1136975 +2467245 +2021734 +193081 +1147122 +2444103 +2641767 +1252199 +1214009 +1794064 +1543056 +1214005 +1213997 +2321166 +396027 +2467105 +2321164 +2512608 +2467189 +2467120 +1422254 +2421238 +1050299 +901433 +2467237 +2467100 +1147139 +1710996 +82630 +1147135 +1794036 +1794053 +1405001 +2433857 +901425 +1171369 +2467171 +2062747 +477579 +249322 +1543036 +901449 +2467138 +1543157 +1728223 +1543164 +1860947 +1670475 +1794159 +1252217 +957321 +2467375 +785959 +1728224 +2467390 +1670454 +1828738 +1765222 +1182648 +1913463 +957331 +1496224 +193092 +1064390 +2147116 +1543162 +1828726 +1689518 +1543155 +2147103 +1160275 +1160294 +2383585 +2321241 +1775022 +2294481 +916519 +2082391 +1252211 +2383590 +957322 +1828719 +477590 +2467250 +2467292 +957312 +2641805 +2147083 +1794174 +1054475 +2467313 +1794136 +1775020 +1160303 +2321214 +1147158 +1794085 +2147108 +1794082 +2082398 +82648 +1398072 +757521 +901463 +1775048 +2467420 +2433889 +1483628 +2037289 +2467344 +1543082 +1794100 +2467249 +2321251 +785950 +1794185 +2467408 +1711004 +9054 +1543160 +1670436 +1794182 +1794090 +2383586 +901470 +1543144 +1543123 +916550 +2321210 +2147146 +427476 +1775043 +1794109 +2530935 +2467401 +746449 +1794179 +1543103 +2147120 +2082381 +2467365 +1913467 +2467368 +445429 +686115 +1214046 +2467314 +427478 +396042 +2321252 +2467387 +1543084 +901461 +2309095 +2147119 +2641781 +1814733 +525286 +2294485 +1543095 +2467261 +477595 +916525 +1670471 +1252223 +1794178 +1794097 +2467274 +901472 +2082388 +1775024 +1091741 +2577368 +525280 +1704308 +347510 +193096 +2530934 +1689508 +1136986 +2383598 +901455 +1913475 +82640 +1670435 +686112 +957337 +1775032 +2467404 +1689507 +2467333 +1794094 +916514 +2467311 +2294466 +9095 +1543119 +1860924 +364701 +2147072 +1828732 +2147109 +2147153 +2383587 +2147118 +1765231 +1689487 +2577364 +2577334 +477586 +757510 +2147126 +1324465 +1160286 +2294479 +2530940 +2037282 +1794079 +2467353 +751882 +2577345 +1543107 +1543146 +1543112 +1860905 +2467355 +2147063 +1064389 +1160290 +1860948 +916536 +1775039 +1054464 +9111 +2467380 +1828729 +2037290 +1860946 +1794093 +916548 +1860921 +9061 +1860962 +1110789 +1670487 +1728231 +1860969 +1064419 +2147170 +2383607 +1543174 +2147199 +1543176 +2577383 +2147181 +2577382 +2147187 +2467494 +1160319 +2383615 +1543171 +2854043 +2641806 +384399 +2530946 +2467427 +1689523 +1689522 +1214063 +2641817 +1959884 +2467492 +1661290 +1670494 +1543199 +2467433 +916560 +9137 +2082415 +2839437 +1913483 +1794200 +1496234 +445449 +1214058 +916568 +2021739 +2868582 +1064423 +1496238 +2147172 +1398075 +916554 +650849 +1422300 +1252233 +746453 +1214065 +1794191 +1670491 +785989 +193103 +2854041 +9131 +427491 +2467476 +2383605 +445443 +1661289 +746458 +1422308 +901475 +1543182 +2467446 +2467442 +2641831 +2854032 +1064405 +2147190 +1543185 +2147209 +1160318 +9139 +402564 +1794199 +1351955 +1324471 +525293 +2147210 +2147176 +2577413 +1794280 +1913497 +1543210 +339706 +402568 +375768 +1689542 +1023496 +396049 +2467597 +1543217 +82677 +1913516 +2467565 +151069 +2147231 +82676 +464550 +686136 +1794282 +489973 +2467537 +1351956 +2577412 +2786463 +9155 +2260448 +2383625 +2577408 +151127 +1753020 +2147245 +1083971 +2467584 +2467600 +270477 +1821726 +311726 +1670503 +1469541 +785994 +1002839 +1860994 +1814736 +333888 +151098 +402576 +1002824 +1091752 +1252252 +2641846 +1160343 +464553 +193113 +9159 +1422316 +151123 +1624710 +1543201 +1913512 +206482 +402573 +1728241 +2467580 +1160353 +610601 +610593 +1496242 +712107 +741125 +1913515 +1794260 +402574 +2467504 +1252253 +9143 +2752946 +2433938 +2021752 +1091754 +1624704 +339703 +1670505 +2467550 +1794279 +2260462 +1002843 +1974425 +1670516 +1704311 +477600 +333882 +1682563 +1398078 +757540 +193112 +82672 +339711 +2260455 +1753022 +2351694 +1794226 +1711011 +2512615 +9158 +735368 +375772 +206474 +1624717 +650855 +907822 +9142 +270462 +270464 +50468 +2530958 +1182657 +1860986 +746463 +1252257 +151075 +1860990 +865529 +237233 +237222 +1002829 +1167838 +1670500 +1324477 +1794292 +2321283 +445475 +2577416 +1518866 +1794228 +375762 +1689537 +375774 +2467502 +333881 +1398079 +445464 +1682561 +1814743 +2321293 +237228 +82661 +2577439 +712083 +237213 +237230 +1147170 +1861006 +1794233 +427498 +2467548 +1214090 +1794269 +9149 +2577440 +1054482 +1794278 +1624707 +1670511 +1160345 +610585 +2467549 +721544 +311733 +2577446 +1624708 +1860999 +9145 +1689541 +1861032 +2019972 +712101 +1147184 +2577481 +1794313 +2147273 +1828775 +1794370 +1023497 +1828779 +1171387 +1483641 +1794369 +901496 +1861133 +1422321 +2577461 +2294518 +2577494 +2530971 +2786466 +1543234 +1324481 +2321356 +1861077 +1794337 +1794328 +1913531 +2467618 +1214113 +1064426 +2321330 +1861111 +1794374 +1794344 +1913542 +2082421 +9171 +217379 +2530980 +2433966 +1861063 +1775101 +1405011 +1861138 +1110793 +1775106 +1543232 +1775089 +1064427 +1110804 +2433950 +1077829 +2433970 +1861081 +1324482 +957366 +1422348 +916593 +1861125 +2383645 +2467613 +1661294 +2467609 +1543272 +2433943 +1935915 +375775 +1794372 +2433955 +193129 +1171386 +2147272 +1861139 +1794310 +2147264 +193119 +1913535 +1794315 +2068602 +193143 +1077833 +396061 +2577515 +427519 +2037299 +1794371 +1405013 +1182673 +1137001 +1794335 +82708 +2577514 +1064438 +2082422 +1861097 +427513 +1543255 +82692 +1794312 +901488 +1064424 +2147301 +1214123 +1543251 +786009 +2147296 +2641878 +2294516 +9181 +1861120 +1027510 +2433968 +1959888 +1861071 +1794334 +1861055 +1077828 +1913530 +2282041 +1422331 +2147278 +1861091 +1543235 +2359865 +1543233 +298460 +364723 +1670522 +1077839 +1765249 +2641886 +1670519 +1160361 +1861124 +2467719 +1214145 +1913561 +2467670 +1483647 +1039671 +347516 +1091770 +2147358 +217385 +1496269 +2282051 +2577535 +464569 +217384 +1794400 +1422365 +2467676 +2147326 +2577551 +1794387 +237267 +1543305 +237282 +610605 +1753025 +1711036 +2147360 +1422350 +757587 +237256 +2530998 +2321388 +2577544 +1241472 +333901 +1543337 +1543318 +2147355 +347514 +9229 +2433972 +1050310 +1147207 +2147343 +2321400 +237265 +2530989 +1775109 +2467701 +1861193 +2467714 +2062755 +1241474 +901518 +298465 +1214147 +1765253 +786033 +1214185 +2530991 +1024745 +1147215 +1689564 +1064450 +464557 +865547 +193157 +1059212 +50477 +916608 +1689560 +2147329 +1861182 +2383655 +1828803 +1775117 +1543315 +2294532 +2026840 +1861145 +1624728 +2321381 +1543303 +1422384 +2530995 +193156 +311739 +2068611 +2729035 +901524 +2577597 +916597 +1828809 +1775121 +2577541 +1422376 +237261 +347518 +2641931 +2068610 +2147410 +1518873 +1543329 +1027514 +1147208 +343214 +1543291 +1670526 +2530997 +2147323 +2577554 +151143 +2037319 +50476 +2321398 +1761784 +1059218 +686144 +1711024 +1422381 +1761783 +1728256 +193152 +916604 +1200774 +2577564 +1214192 +1689580 +2147425 +364728 +916610 +1241467 +2641897 +2641932 +1214170 +409541 +1861189 +1182690 +2641915 +347517 +2383656 +1543323 +2147421 +497403 +217383 +2577582 +1861177 +1985040 +2147331 +2512618 +2147322 +217398 +1469550 +2467694 +9233 +786027 +2147427 +2577587 +1214153 +2641893 +865548 +916594 +464556 +525328 +2147400 +2786487 +1794390 +2641894 +1794383 +916605 +2641907 +2641923 +2577581 +1689561 +916638 +1711040 +1670547 +1422387 +2577644 +1059219 +2282060 +1543359 +1543367 +525334 +2082462 +1689620 +1999610 +1543407 +2062756 +901541 +1543390 +1394117 +957411 +786034 +2531000 +2786501 +2359880 +354249 +2147497 +2082453 +1670540 +1054502 +9240 +2147479 +2577659 +2641946 +525346 +1054507 +2467741 +1775130 +445538 +2321418 +901533 +2467767 +2082454 +9255 +1861234 +2321435 +686146 +2321410 +865566 +1670544 +1775127 +1689616 +2467757 +757625 +2147520 +1091780 +1861194 +525348 +445543 +1861219 +364730 +2147429 +9244 +1861204 +2467730 +2147498 +1496294 +2467729 +9242 +2786502 +2147449 +2359881 +1670538 +786051 +757628 +9289 +9296 +1054508 +1543413 +193166 +1689614 +445533 +9277 +2577656 +364734 +2577667 +2467791 +2294543 +957422 +347519 +9308 +2641961 +2577647 +497404 +2383675 +2282062 +409567 +2517161 +1496275 +9251 +50486 +2037327 +1728266 +757631 +409574 +916635 +50485 +2147463 +1670536 +2082458 +9262 +1496295 +1757386 +2282061 +445545 +1543399 +1252293 +1252294 +901530 +2147492 +2037337 +2147491 +757624 +1543411 +1182702 +2383672 +9305 +1689630 +901528 +1543391 +2147467 +1689600 +1761792 +2147493 +249339 +9281 +1543368 +2147539 +2577755 +1054522 +1765270 +1861246 +1160379 +82743 +9346 +2037352 +2423855 +445551 +2294551 +1543463 +9329 +1728299 +1901982 +2531051 +1828872 +916692 +916667 +2577739 +9381 +1794420 +2068623 +1214247 +464579 +525356 +916646 +445554 +464574 +2147591 +9391 +1252296 +2467815 +151169 +2062757 +1543449 +1828866 +2383705 +2147550 +1670583 +50490 +1483695 +2294559 +9399 +2147598 +1496356 +865574 +445567 +2383720 +1214253 +2082491 +1543437 +786104 +2531023 +82757 +2147583 +333921 +916641 +2642001 +9404 +865570 +9333 +1543459 +721549 +1543471 +2467802 +1483672 +2037346 +786111 +237305 +1670567 +2147548 +916681 +2082502 +2577788 +1182718 +237300 +721552 +2577710 +82739 +2531033 +464575 +1543484 +1913587 +1496369 +916656 +9396 +2531035 +9390 +2467816 +1252295 +2577744 +2383707 +2383700 +2294563 +1324505 +916691 +721551 +217422 +916663 +1913593 +865577 +1496345 +2577728 +2531053 +9347 +206498 +2577741 +2641986 +9370 +1147237 +82737 +477620 +1765269 +2467820 +1765264 +2383724 +1496355 +1214223 +2282077 +786079 +1200778 +217414 +50488 +2854046 +9326 +1861256 +2147610 +2531049 +1670562 +1682575 +50487 +1496338 +1794419 +1711044 +748952 +1828844 +2294572 +82755 +2467805 +757639 +1861261 +2321438 +901551 +2423864 +2383698 +1483679 +1147224 +1706910 +1214233 +1027531 +1054520 +2467798 +2147584 +1147231 +290827 +9394 +957440 +1302258 +786078 +1935926 +2577720 +1543441 +311743 +2577751 +2577727 +1670559 +2786503 +82759 +525364 +1543498 +1861280 +402610 +1913608 +1110814 +2577798 +2854078 +464602 +193177 +2827228 +2147662 +2854126 +2467852 +1775171 +2786526 +2082515 +2467869 +786163 +1761796 +1775165 +1543499 +2282082 +2294600 +237332 +1913615 +2423887 +193191 +1775157 +409609 +2531085 +786185 +2531094 +957472 +193180 +1861288 +2577818 +2854068 +1861380 +347525 +786164 +217433 +1794462 +1543500 +757663 +9494 +2531099 +1913617 +2642066 +2854090 +1543528 +957507 +1711053 +151188 +427540 +1661309 +2531088 +1147252 +901568 +1543511 +82772 +9495 +2854133 +1828885 +82790 +349778 +2321480 +2015543 +82792 +1861311 +2642031 +333935 +2642035 +2467830 +464603 +1775175 +1861279 +1059228 +1147253 +445571 +1214290 +1985041 +2854132 +1214275 +1861299 +2321486 +1861376 +1775154 +364737 +1241488 +2147646 +1861379 +2467834 +193179 +1653473 +2531086 +364746 +82793 +1775153 +427554 +1861337 +1002856 +1147275 +1794448 +2642012 +916700 +2577816 +193188 +193176 +786176 +1861318 +1775155 +249361 +2147708 +1182728 +2642033 +399195 +2642010 +445584 +206512 +445641 +349784 +445647 +1861313 +298470 +82760 +2147713 +2531076 +1794444 +1214314 +757675 +82786 +2294581 +1324514 +82798 +2577799 +82799 +901561 +1171427 +1147266 +2294612 +2854110 +2467921 +2467858 +2642061 +1302259 +2147665 +9470 +343231 +1861265 +333924 +2147683 +1214310 +1241489 +1761802 +445606 +2854099 +1124440 +2642046 +1775150 +1147255 +1761799 +2577825 +957522 +2642028 +2531073 +1794465 +2321477 +1861340 +427555 +1543564 +445622 +1711049 +347528 +2577827 +2294591 +2786536 +1861291 +2577840 +1861343 +1861271 +1064468 +2642022 +445625 +1913602 +2467836 +1543559 +1819730 +1794466 +2147676 +1794459 +2147705 +2642017 +1054526 +2467898 +1959896 +193175 +1861383 +1543517 +2147686 +786138 +1935929 +402596 +2068628 +206524 +1543501 +82764 +290834 +1861320 +427542 +343225 +1147261 +1483702 +2642059 +333925 +349785 +364749 +1543550 +2467840 +1171425 +445573 +2642065 +347523 +2434013 +1175653 +151226 +1935939 +285047 +2642087 +1775198 +1051739 +1861431 +1214325 +2011619 +2321510 +1935941 +2577932 +2147736 +1160390 +1913624 +1974432 +2082522 +237342 +290836 +1214326 +1171449 +2642082 +1689646 +2147780 +1050328 +2321534 +2467967 +151195 +82816 +2068637 +1828921 +1861407 +82810 +1913625 +865592 +2721567 +237335 +1171454 +151199 +1182749 +1543569 +1147284 +2147759 +1753032 +1999613 +1913632 +2577862 +1167843 +1160399 +1861433 +82822 +2577923 +2383776 +237360 +1794495 +2147771 +9516 +1689663 +1775201 +1171445 +1913653 +2321506 +786199 +2309111 +1167849 +1775205 +1543568 +82812 +901598 +237337 +2294637 +2577871 +2531109 +2321490 +1142247 +2294628 +2577885 +1828923 +1214349 +916713 +2467946 +2147740 +1913645 +1543574 +1171453 +2577888 +1175657 +193223 +151213 +1861391 +217449 +193211 +2147735 +1935933 +2294633 +786205 +1160393 +1728319 +901581 +1262540 +2577909 +151204 +1214335 +2321513 +1200798 +2577914 +402613 +1902009 +2294627 +1175659 +2467963 +2147786 +1902006 +757684 +2467970 +217460 +1711073 +2577922 +193214 +1214337 +2147750 +2147796 +1241500 +1262543 +409610 +9497 +2147782 +1794478 +2147787 +1689658 +1160383 +916709 +2147790 +82805 +2294623 +786209 +193207 +1175655 +1302272 +1999648 +686183 +957530 +1302271 +712111 +686194 +343241 +1469567 +2577962 +151229 +1913667 +2578023 +2577952 +1543604 +1711078 +2383824 +1711077 +916718 +2577970 +1366057 +2642174 +1902040 +2681012 +1324552 +2383811 +743772 +2383832 +1861440 +1861455 +2577965 +2578015 +2786547 +1351965 +525383 +2467985 +2383817 +2021763 +1670619 +1343605 +1902027 +1999654 +667186 +1241509 +1147291 +1422459 +1351979 +1262556 +2468018 +743768 +1351974 +731638 +610625 +686209 +2577980 +686200 +1324557 +1624756 +1302286 +667189 +1171465 +2512635 +1396691 +1861474 +2004455 +1343613 +1985047 +1182757 +1902058 +464616 +1351972 +270490 +1422458 +2015557 +1753042 +610651 +2786563 +206546 +667159 +525384 +1999650 +1366060 +1902056 +2735625 +2015582 +445656 +1902037 +1375388 +2260477 +1375409 +2467997 +2735624 +2021764 +1968996 +1324542 +2015570 +1794515 +1624765 +2011626 +2577969 +1351963 +610648 +1999619 +610657 +667184 +1861497 +2642181 +1366050 +712122 +237373 +1375408 +270491 +1711083 +1913662 +1794517 +686207 +610665 +1543589 +1765291 +1398104 +1324545 +2021769 +2082523 +1999639 +2021767 +1861460 +2383828 +610629 +1324538 +1861493 +2004457 +1375392 +1083978 +1985044 +1861475 +1518898 +2642161 +1653477 +1959898 +1913669 +2011635 +1394125 +2383831 +2309118 +2147844 +1214371 +1902046 +1366040 +2467980 +2011627 +1861479 +1366049 +2004463 +1753048 +1147316 +1543610 +1861533 +1377853 +399198 +1402180 +2468068 +2745987 +1054556 +940406 +1241536 +1147322 +422457 +1794521 +1959902 +2753003 +1398110 +1422462 +1775235 +422464 +1861539 +1398119 +464649 +1160420 +1160421 +610698 +2729053 +2512658 +525433 +610678 +1324570 +2282098 +1935960 +464647 +1110821 +2468076 +2746009 +2015590 +1366067 +2729055 +333993 +2752987 +1142256 +1661317 +1670660 +525405 +1794536 +2753004 +1765295 +712140 +347538 +464648 +1241523 +1396699 +1147360 +2011647 +2468050 +686247 +1496410 +1794548 +1370069 +409683 +82826 +1959901 +2642198 +1543626 +1794545 +1974443 +1394140 +2004483 +916734 +477645 +1483704 +1518905 +409630 +1935959 +82825 +525409 +1402178 +497425 +2468082 +2423902 +402617 +1985056 +1398114 +1775232 +2742584 +2468049 +1200827 +402616 +1200829 +2746032 +2578066 +1543625 +9529 +409703 +2746028 +525422 +445679 +2082530 +1496415 +1543634 +1387015 +1398136 +237379 +2282092 +2578047 +1302290 +1241522 +610674 +464651 +464620 +686245 +748955 +1794525 +1794534 +1160404 +737664 +686277 +1543617 +399203 +409663 +82828 +1775234 +1543632 +2015597 +957545 +409722 +333999 +686216 +1999665 +1902080 +1794571 +525413 +2786571 +2321543 +667192 +1375427 +2383836 +422462 +1147358 +1543630 +1147327 +1861502 +2745978 +2468070 +1422474 +237397 +748959 +217467 +1861519 +1137010 +748961 +1794524 +2531116 +1670647 +2011639 +901611 +667191 +1324582 +1496422 +2742586 +610687 +237387 +1214400 +2082528 +737659 +2015608 +686227 +1262560 +1147346 +1775258 +2746029 +1324578 +2021783 +1496408 +82827 +1147326 +151258 +1624771 +1241517 +193229 +1543621 +1861508 +1214416 +333988 +916729 +2015604 +525440 +901607 +409676 +1794570 +2642210 +2147857 +2735634 +1422475 +1902085 +2642201 +409705 +2786595 +2004478 +2015607 +1959903 +1147313 +1073417 +2282101 +1543635 +1670638 +1147361 +901608 +2282096 +1861530 +1935963 +525426 +1935964 +746465 +2468128 +1422482 +2746025 +610685 +1518901 +1422479 +2642214 +1147325 +1366070 +2752981 +1775266 +1999670 +1765299 +2730943 +1147312 +1682598 +957538 +1398125 +650865 +1054557 +2468048 +1861535 +2746005 +237385 +2642205 +464644 +2753011 +1241529 +2468114 +445693 +1064498 +2642219 +1064508 +2309123 +464679 +650872 +1147389 +1761825 +1059253 +1861600 +445691 +151265 +2147867 +2468197 +2642222 +347544 +1252337 +464668 +1861602 +1091817 +1059250 +1241546 +1214430 +1147371 +347545 +464663 +1543659 +1398141 +957563 +399222 +737670 +1543661 +2642229 +409757 +1051759 +667210 +2468168 +1147375 +399219 +1171485 +1775287 +2468172 +1050337 +1913689 +1073428 +1913706 +1861599 +2082554 +1794584 +2578091 +2147873 +270521 +1142266 +409768 +1775290 +1200840 +1765310 +1861604 +1064504 +1670667 +2735638 +1124444 +343258 +1761834 +2015611 +2383837 +1214459 +2147877 +1794602 +399230 +1761826 +1051752 +151271 +1828960 +2147866 +1182782 +82840 +1775291 +1182766 +1200858 +435858 +206565 +237408 +1902103 +1902099 +409754 +1935967 +1670668 +1913703 +865631 +1794605 +464670 +1861560 +409749 +1794586 +477656 +2082548 +237421 +249395 +1171478 +916738 +2578121 +409763 +1147372 +1794593 +731652 +9538 +2082555 +1819754 +217468 +1828956 +1051755 +2512675 +1775274 +2103844 +2578098 +1182771 +1302304 +477649 +409746 +2294664 +525471 +2512668 +2642226 +1775270 +347547 +477654 +1719727 +2578101 +916736 +525466 +1828966 +1124449 +1200834 +347551 +1761827 +2082543 +1059256 +957569 +1761822 +2786619 +343269 +2786622 +2531122 +2786888 +2786817 +2786651 +1064538 +2827276 +2827277 +82845 +2786734 +1064547 +2786842 +525495 +2642264 +2531138 +712156 +2147890 +445748 +957583 +82852 +2786846 +1182790 +2786605 +445729 +2786883 +2786760 +2827297 +2786720 +1182795 +2786716 +1064532 +2786874 +2786806 +343265 +2827285 +82860 +1913720 +2468233 +957601 +786253 +957603 +2786713 +9542 +2147904 +1171487 +1828988 +2642267 +2468223 +786260 +334003 +2786880 +1902107 +2468234 +1543697 +1794642 +1200866 +2578148 +409773 +2786621 +1775307 +2082561 +1794654 +2468202 +957607 +1543690 +2578132 +9559 +2147886 +1913712 +1064529 +2786763 +957592 +2468235 +2147905 +2468210 +2786708 +1543687 +334002 +1171491 +2786748 +1064522 +1794667 +1543704 +1794623 +1913723 +1861622 +2423905 +650875 +82870 +2786866 +334006 +1794636 +748971 +737677 +2786659 +445752 +1861619 +1324606 +2468230 +445724 +1214491 +2786618 +1794659 +364759 +1002867 +2468218 +1543701 +2531119 +445760 +1252339 +1077854 +2827275 +2786681 +445746 +2786800 +2827296 +217474 +2786793 +1110827 +1064540 +1543683 +2468268 +1214497 +1794690 +1775326 +1160473 +1794687 +249421 +2294670 +2147920 +2642269 +1422515 +1775330 +2642273 +343283 +1391840 +2468294 +1861673 +2517174 +1398149 +464703 +9595 +1214503 +1214526 +1543756 +1794682 +1794702 +1064555 +2321552 +445788 +1689692 +427629 +427622 +1543737 +1861713 +1110840 +1262573 +1160467 +1214512 +1387028 +1077859 +1147434 +402653 +901621 +1794681 +1661324 +2468265 +1160461 +2531150 +1775332 +1775325 +1543751 +1794691 +334012 +1422510 +1861689 +1861669 +2684730 +9581 +1064579 +2578183 +445846 +82876 +1543744 +2741565 +2468248 +1110836 +525517 +1974449 +1214539 +445815 +1861644 +2468254 +343284 +1147414 +1214532 +1422509 +1147450 +1829010 +1214523 +1182847 +427609 +1496432 +2423919 +1794699 +1819759 +1543760 +1775338 +2147942 +1214513 +2468253 +1861684 +1422512 +1171512 +445838 +82871 +2468240 +1182843 +82878 +1829013 +1543723 +1182841 +1913747 +1054578 +1543720 +525506 +1160472 +364761 +343282 +1160460 +1861687 +1252355 +1324608 +1394158 +1064572 +1241554 +1391842 +1861668 +445833 +464705 +686320 +2294676 +9586 +402668 +1543725 +1496424 +2321588 +2699149 +82881 +2321590 +2531155 +2068649 +2578209 +2578233 +957687 +2642301 +2642325 +2423953 +1324620 +1657715 +1324630 +2383869 +786289 +2321603 +2148022 +1775358 +525523 +2517185 +916758 +2786913 +1794718 +1794730 +1543786 +1483714 +2468400 +2423938 +2282113 +9640 +82895 +1765332 +2468411 +2321612 +1829021 +2423926 +721606 +249442 +2082591 +1483727 +916754 +1351999 +1670693 +786288 +1794728 +1352004 +757712 +1974450 +1543794 +1064585 +1543802 +2423929 +2434063 +2468355 +1941282 +1543797 +2321609 +1543790 +409790 +1381440 +1272451 +2294721 +2147956 +786291 +1351993 +2037359 +2383853 +1775382 +1913766 +2321615 +1728369 +1861729 +217484 +1398152 +2383861 +1670696 +1272460 +2642302 +334026 +2468327 +2082577 +82908 +343288 +2729068 +2468357 +334029 +464706 +2147967 +2468316 +2531160 +1794711 +686327 +2468420 +1829031 +9634 +721609 +2147985 +1110842 +1861759 +2321602 +1302313 +1381424 +82883 +82898 +2321587 +721595 +2699150 +2468403 +2423949 +2294716 +82885 +2383871 +2148017 +1775365 +1483726 +786274 +2531153 +2468361 +2468376 +2423942 +1324631 +2383857 +1861731 +334028 +2082596 +2294727 +2148019 +82890 +2578236 +82904 +1302311 +757700 +1370082 +2786903 +1861776 +1794719 +2147958 +1861766 +1765357 +2642328 +1394178 +1775424 +402703 +2578269 +2468626 +2468590 +1142281 +1398160 +1775421 +1794791 +2423970 +1054589 +1775423 +2578266 +2434099 +1422549 +1147515 +1147556 +1775447 +1775482 +402694 +748988 +2468586 +525539 +1829038 +445861 +916773 +1147474 +1624788 +2021803 +422500 +1394174 +1391851 +1483730 +1775471 +2468441 +1147602 +1147461 +1775438 +2786959 +2427747 +334069 +82909 +2868599 +1543818 +2786957 +1794747 +2148039 +2468513 +2468452 +746505 +1182858 +2468488 +1147590 +746502 +1775417 +2468628 +2468508 +2786937 +1794780 +1147470 +1147476 +2468589 +193253 +2468621 +1214558 +2434080 +1670706 +334043 +1543832 +1761853 +1543810 +1147599 +1775451 +2786950 +2103855 +1775485 +2531181 +1160497 +2709614 +786299 +2423980 +2468584 +435872 +1794798 +1775457 +237427 +916770 +1147493 +1761877 +2753031 +2423988 +1761870 +2786917 +2468437 +737687 +1147557 +1794773 +1775486 +1861779 +1137033 +2468605 +2468601 +1794750 +1670707 +1160491 +1543822 +1302316 +334057 +1765362 +1794787 +2468520 +445862 +1775480 +2468511 +1794797 +1160487 +2468469 +2423983 +2468466 +9658 +1775483 +2468565 +1147475 +2468673 +409863 +2786978 +686352 +1147645 +1051761 +2468731 +1241560 +1794846 +901631 +1160501 +409809 +1670709 +2468724 +249448 +2468716 +1794818 +477662 +1543841 +1252361 +686351 +2468756 +1422561 +1147613 +1160521 +1398169 +1167899 +334109 +409823 +1167894 +2468696 +1775534 +1765374 +1381453 +1518913 +1160519 +2512698 +399289 +409855 +409880 +409858 +1167895 +1051760 +1689708 +1394180 +1543849 +1147630 +1160515 +1398173 +2468744 +1543851 +2739635 +477665 +402720 +1913773 +957702 +2015634 +748999 +1794850 +1794829 +409882 +2512696 +237437 +1794827 +2730959 +737701 +2578277 +409802 +399292 +1902116 +409918 +409867 +1794852 +1051764 +737699 +334117 +1214570 +217511 +743807 +409872 +1160508 +1391852 +409878 +2468730 +2468664 +151280 +1398168 +1794868 +525546 +2642335 +2468739 +1398171 +2512699 +1775522 +399267 +409876 +1050351 +1160503 +2578275 +2468669 +2468743 +1059257 +1422554 +2294740 +399280 +2512705 +1543838 +409871 +2148055 +1324662 +2427750 +1969000 +151284 +1167902 +2468659 +2786968 +1167885 +399256 +2468682 +1902110 +2753051 +2512686 +2468749 +1861804 +409816 +1861796 +334110 +2578273 +2512713 +2468645 +249450 +2321624 +1175672 +2148050 +2468741 +409799 +916778 +1064592 +1999688 +1160534 +1469583 +1794911 +2434113 +721661 +1160535 +1214580 +2468815 +1861818 +1182868 +2021852 +2517188 +2015650 +1252366 +686358 +2468795 +1324667 +2011686 +2681024 +1110843 +2578302 +217514 +525558 +2468826 +2021855 +721646 +1160537 +2746061 +721637 +1794901 +1775539 +2021848 +721627 +686360 +2642350 +721624 +2015695 +2015644 +1147671 +2011675 +2468851 +2468861 +1775550 +2021834 +525568 +402728 +2468780 +2011688 +2015668 +721666 +746514 +525552 +1398182 +2468779 +2015657 +1711108 +2578301 +721642 +721621 +721623 +2468770 +686375 +686365 +721648 +1765376 +2468840 +2015647 +2021840 +2642349 +1394191 +1775554 +2015712 +525574 +2015702 +2015684 +2642345 +2015691 +1794904 +2753077 +2468952 +2424019 +2753073 +1054609 +2015722 +409956 +957713 +1422571 +2424004 +1398197 +1324690 +2468887 +2468998 +737713 +249463 +2578305 +2531204 +409938 +2015720 +686391 +1394226 +1160547 +1182875 +957714 +1794935 +1913780 +1913785 +1829045 +745235 +1861845 +686392 +2321636 +2642384 +1861843 +1829048 +2753072 +1214601 +409959 +2468931 +2148062 +1711109 +2468898 +1794930 +2468928 +1861828 +409932 +2578311 +1394219 +1324678 +2468896 +1775570 +1861844 +1050361 +2642369 +2468948 +1829044 +2642371 +1377867 +1829053 +2282123 +477668 +1543878 +1398204 +2468899 +1147682 +1091831 +1794940 +1394222 +2468944 +2468884 +1775586 +901635 +1794956 +1394229 +2468981 +2021862 +1913782 +1402207 +1794938 +1182870 +2578312 +1794944 +2068653 +1657716 +1214610 +409947 +2468939 +2468876 +1794942 +1775560 +2468937 +2424003 +1064596 +1861853 +2578320 +2469045 +1543913 +193265 +2321641 +2730965 +1795022 +2148108 +1182885 +217525 +731660 +2359901 +1422585 +1689722 +712160 +1543905 +1394242 +1794981 +1543895 +686407 +1765398 +1829069 +1861864 +1913802 +2148083 +409963 +1861857 +2469027 +1324695 +2434127 +1794989 +2148101 +82919 +1422596 +1913806 +409965 +2424035 +1670737 +2148092 +2578335 +1795001 +2282136 +2282130 +1394230 +2434129 +2434126 +1160565 +1711111 +1147735 +1795021 +1795012 +1375429 +1147734 +2383886 +1469585 +686396 +2578318 +2148120 +1324698 +1795006 +1999700 +2469030 +686422 +151293 +1147731 +1543916 +610711 +2383888 +721673 +1182882 +786314 +1064599 +2578332 +1670730 +2383889 +712159 +9685 +1398209 +2068654 +2642394 +151289 +1398206 +1794983 +2282137 +1543922 +1214622 +2148119 +525610 +2469052 +1794969 +1422598 +2148095 +1147728 +957719 +2148124 +409966 +1147716 +1775600 +1543910 +2531217 +2148171 +1543962 +957734 +2787001 +2469184 +2469129 +2015737 +2578350 +2469194 +2531214 +1054616 +1160585 +427645 +1861868 +1394245 +1252379 +2015738 +1272469 +2469156 +1147746 +2321654 +1861900 +1391883 +1775615 +1959916 +2469170 +1829075 +2383894 +1543945 +2148149 +82942 +2469116 +1422603 +1377894 +1861902 +2469135 +2469153 +2786987 +1302337 +1147749 +409978 +1377891 +2578358 +1422608 +957730 +1959917 +2531219 +1795073 +2294775 +1302341 +2148148 +1394250 +1861883 +2148166 +1324708 +2469107 +2578353 +1398225 +2642409 +2469217 +1795039 +2469123 +1377890 +1761896 +1160574 +1670739 +2469133 +2294771 +2148157 +1050372 +2786992 +1765412 +2469216 +1147748 +2021882 +1160582 +1728377 +82947 +1352040 +2321655 +2469185 +2004498 +2082620 +1775636 +1391889 +957733 +1775610 +1050370 +712163 +2148152 +1543959 +249471 +1775638 +2787008 +1775642 +786329 +2469225 +2753084 +2068657 +193271 +402744 +2469130 +1377888 +2424041 +1496464 +2531215 +2424042 +1214633 +1543952 +1377881 +402747 +1765409 +2321667 +2148141 +1394255 +957737 +746526 +1795051 +2469183 +2469174 +2021877 +957736 +2735657 +2469383 +1137049 +1913819 +2469365 +9709 +1775653 +2753113 +1689783 +2642476 +1913823 +1214644 +1182894 +2148177 +1913825 +2469418 +1689747 +1252389 +2469372 +786345 +2469320 +1160630 +1302344 +1795097 +2469263 +2469268 +1775648 +2517190 +1775657 +2321688 +2082630 +2753103 +1381473 +9710 +1689776 +193278 +2741573 +1302348 +2709618 +1775645 +2741576 +525633 +2753134 +249491 +786339 +1861922 +2578367 +2721585 +2642460 +2469337 +1795087 +1214650 +9715 +1147752 +2469244 +2469252 +2469384 +2469344 +1252384 +2469405 +82960 +1795096 +2531224 +2642466 +2531222 +2469299 +1775662 +686443 +1252387 +1147759 +1160605 +2578371 +1795133 +2021901 +2148199 +1795137 +2321695 +2746078 +1160616 +786340 +1795128 +2742603 +2753115 +1160624 +1689753 +1775663 +1775661 +1795110 +1402223 +1761899 +1861907 +2469376 +686439 +2469328 +2469245 +9703 +2469353 +2434143 +2321699 +2321693 +2148194 +2469368 +1861903 +1795136 +1795146 +2746071 +686450 +2753094 +193293 +409981 +1775671 +343315 +410033 +2741585 +1795180 +2148234 +1761905 +1422655 +1422636 +2469529 +1394262 +2082637 +1761904 +1391893 +2578390 +1147799 +2730970 +1795162 +2469498 +2469518 +1496482 +1670769 +217539 +2578402 +2424067 +1670765 +1391895 +445925 +1054626 +2424075 +2148207 +1147800 +402770 +445922 +2469504 +1496487 +1544012 +1160634 +1761942 +1142299 +402768 +445917 +957749 +901641 +2746091 +1670772 +2148206 +1050379 +402771 +1214660 +2469476 +410014 +249516 +402755 +2729078 +757736 +2469455 +2741581 +2021905 +1050388 +1050383 +2424065 +2037384 +2469494 +2469505 +2434166 +1171535 +2512722 +2424080 +2469558 +1543990 +1377906 +2434161 +1054627 +2469475 +1422621 +1761917 +1160632 +2148218 +2424062 +2730974 +2469508 +2642496 +2469469 +1394264 +1422635 +1795169 +2148204 +1544017 +757747 +1765414 +2469560 +1761903 +2148220 +2148212 +2469533 +2578394 +957753 +402763 +249511 +1765420 +2578384 +786348 +1670787 +1775745 +2424109 +1147806 +2148256 +2037400 +193309 +1402235 +1391903 +410065 +2424112 +1795237 +1077864 +1422669 +2148286 +2469637 +1795254 +686457 +2434183 +1147809 +1073432 +1795196 +1147811 +1775742 +1387079 +1387082 +1160645 +2787042 +410052 +2321724 +2741598 +2469635 +2424108 +1999711 +2148276 +2469673 +410044 +1398237 +686463 +2735662 +1795247 +2787038 +1775721 +2469584 +410061 +1775733 +9722 +2469619 +686462 +721680 +2469594 +82967 +2787040 +1064639 +2434179 +2148262 +2037397 +1064626 +2434177 +1761948 +1795209 +1765439 +2746103 +1483735 +1398243 +2642498 +2469593 +2741600 +2469616 +2037394 +2424113 +2469597 +2469603 +1795186 +1147812 +2578410 +193310 +2469588 +2434190 +2469667 +2741611 +1496499 +1544054 +2469629 +1795261 +2148248 +2787031 +1054630 +1054629 +2741602 +1387083 +2021912 +1054631 +2578411 +525648 +2294800 +2469610 +1795281 +2469695 +786352 +2578416 +1670803 +746543 +2037438 +2469712 +1544073 +1761952 +1795301 +2424170 +757761 +2082652 +2021914 +2148367 +334149 +82968 +1147815 +410073 +1544089 +1422686 +1160658 +1054636 +2148347 +2469770 +1137062 +402773 +957762 +1761963 +1795356 +2321747 +410104 +2469762 +1147856 +746538 +1054653 +2294818 +1054644 +1422687 +2294815 +2469772 +1761980 +786370 +1795273 +410123 +2469717 +1761974 +2469755 +2148307 +2037413 +746537 +1147823 +1422698 +1761950 +1544083 +1160663 +2294855 +2148325 +2424129 +2741613 +2424157 +2148382 +2469745 +2424174 +1496507 +1775759 +1050400 +2424162 +9739 +410114 +786354 +399294 +1795297 +1795283 +2424140 +410103 +686474 +746541 +2469693 +2037444 +410101 +1765440 +1775768 +2469696 +2148328 +1775773 +901644 +1795341 +410095 +410086 +1661343 +2148332 +410130 +2148398 +757760 +2434195 +410077 +2037424 +1054646 +2753173 +1795333 +1795351 +410131 +1761959 +2321757 +1775781 +2148396 +2746124 +1795334 +957764 +2469763 +9732 +1795344 +737727 +2294803 +2469773 +1795278 +2148303 +2037427 +1544062 +1496529 +2469680 +1775776 +1795342 +1761967 +1324727 +2148317 +2011734 +2469911 +757771 +1999737 +2082683 +2148561 +1147918 +2470062 +2148555 +2148533 +2424176 +2082689 +786390 +1422737 +2015780 +957774 +334173 +2148486 +1147900 +1762094 +1762125 +1861952 +2148434 +2469957 +2148507 +1762003 +2470077 +2469868 +1670815 +402805 +1272498 +1795385 +2469932 +1765488 +2037450 +2148527 +410139 +1775863 +1765482 +402806 +2148444 +2469869 +2015804 +1765489 +2470071 +2470007 +2294904 +2148506 +334195 +1762122 +525669 +525673 +1160671 +2279586 +2015788 +2294913 +2469965 +402811 +1422723 +2294912 +1147936 +1689807 +2148517 +2294937 +2469970 +1147928 +1795380 +334198 +916837 +525672 +2469812 +2321768 +9748 +2746128 +2434260 +1160676 +1762099 +2469962 +749024 +410137 +2469902 +1422729 +1670817 +786422 +1999741 +2469859 +1214668 +2148421 +2434262 +2424192 +1661347 +2148412 +1775816 +402799 +2469891 +757773 +2148562 +2148453 +1352048 +1765458 +2434243 +2470063 +1762110 +1147941 +1137100 +334199 +1765467 +1762050 +2434248 +2469900 +1762053 +410147 +2082688 +2469920 +2148587 +1147925 +2469872 +1765478 +2469890 +2148462 +2037459 +2148422 +1999732 +2015786 +2469835 +1137099 +2531241 +1795389 +757785 +1775824 +1147926 +2470001 +1147934 +2148595 +2148577 +2294941 +525678 +2082706 +2434253 +1214669 +2015800 +334169 +2148454 +957797 +2294872 +1670813 +1762007 +1775837 +786395 +1422720 +2015794 +2424197 +2469986 +2746130 +757764 +1544113 +1795492 +1160708 +1795448 +1324739 +2470170 +410171 +1147968 +957812 +2470129 +1160688 +2470105 +2470157 +786438 +2321784 +916847 +334206 +2082716 +2279595 +1422759 +1544130 +2470215 +2470265 +2470278 +957825 +2148608 +2470153 +1160680 +1272501 +1795468 +1352055 +1795441 +1775865 +1422755 +2082713 +2148601 +1661375 +2470139 +1795419 +1661370 +916843 +1775868 +1795482 +2470247 +737759 +2470141 +1394309 +2470259 +1765493 +2282185 +2424211 +786432 +9758 +916842 +410184 +2470189 +2470169 +1661363 +2470097 +410214 +410227 +786427 +193318 +1661384 +1775880 +2470225 +2470158 +1795485 +1252399 +1544106 +2279600 +1775871 +2470092 +2470182 +2470236 +1302365 +525683 +1670831 +2753183 +1214677 +1496550 +249526 +249527 +1422768 +1795404 +2470216 +1147948 +1422742 +1147988 +2470302 +410229 +1775873 +525686 +1160713 +249525 +1795460 +1795411 +1544121 +2470226 +2470431 +1064664 +2148658 +1496565 +1154757 +1775946 +347565 +1670862 +249538 +1795588 +2294954 +50529 +749027 +2470365 +2470411 +2470373 +2753192 +2512738 +217562 +2421279 +2294971 +2642510 +1385768 +1763202 +2470489 +1762153 +2470583 +957859 +2383908 +1795569 +2470416 +1167914 +1214686 +1544152 +2148641 +1137136 +1422793 +1795554 +1775908 +1795545 +2260494 +1969004 +422517 +940428 +916860 +1762144 +347608 +1422794 +1670843 +50522 +1469603 +1422812 +50539 +2753197 +237456 +2062760 +1999752 +402835 +2470380 +2294957 +2746141 +1763211 +1398261 +237460 +1175676 +1137135 +2470322 +2321794 +1083988 +1137118 +2470375 +737767 +957856 +2148664 +1148042 +916866 +2470366 +1985060 +2148650 +1518923 +1142321 +1167915 +940413 +217569 +1496564 +1148041 +402837 +2321803 +1661396 +712166 +2421286 +270533 +2729091 +749026 +1624805 +2578452 +1142317 +957863 +1762160 +2470564 +1002920 +1469602 +1496561 +2294962 +1763203 +1795570 +347560 +1002909 +2321805 +1829101 +2512753 +2512755 +2421276 +2470491 +1763240 +2470434 +2753196 +410243 +2444106 +1795555 +2148663 +406863 +1763225 +1795589 +311757 +410256 +1795537 +1160716 +1154766 +1002912 +2470405 +50523 +1148013 +1624811 +2470382 +427655 +1661395 +1775939 +1142322 +2470356 +217559 +1624815 +1763230 +2294961 +1768795 +2470320 +2512747 +2294959 +1148046 +2148639 +415502 +217564 +2470417 +2148632 +464725 +237457 +786448 +957844 +1064686 +2470566 +2512741 +1795506 +2470592 +217556 +415506 +237463 +1422803 +1496568 +1002894 +410236 +2279609 +865659 +435889 +1776017 +1795621 +2470624 +2434284 +1544192 +1054671 +1148062 +1776031 +916894 +402856 +1795619 +1765525 +50545 +916880 +249544 +2470765 +2082735 +957875 +1054669 +1064709 +1544196 +1064743 +217574 +2470832 +1064707 +1182932 +427664 +402872 +1861986 +1768809 +1422816 +9776 +1182924 +1544183 +1861980 +2470604 +9775 +2470859 +1160729 +1154774 +1670924 +2753204 +1775986 +957884 +1765557 +249542 +1409184 +916895 +1496572 +1829119 +1670921 +901656 +410278 +2642515 +2444118 +1775973 +1661399 +686497 +865663 +2470752 +916907 +1913860 +2512772 +1054668 +1862006 +2470762 +427680 +525698 +1670917 +712171 +9781 +865662 +1829111 +477674 +1137152 +1422820 +1214690 +206590 +2082727 +427678 +1670898 +1862012 +334221 +2470680 +50553 +1148089 +193328 +1496581 +1064745 +415511 +712172 +2470599 +2148670 +1422819 +1064737 +347624 +916871 +2470665 +193327 +347617 +1765548 +916899 +2787056 +410301 +1768818 +427681 +1002932 +737775 +2470873 +1763252 +2470821 +2470659 +2321817 +1661401 +50569 +445938 +2148688 +217572 +1544189 +1776015 +9774 +2421290 +1768800 +1776009 +2470794 +1829123 +957876 +9796 +2082732 +1064744 +957868 +916887 +2470883 +1487732 +9800 +237468 +1544198 +2517200 +2148668 +1902126 +1137154 +1689818 +1670897 +2321821 +916876 +2321830 +1064751 +1861997 +1776033 +427665 +2787052 +1496586 +1861983 +757788 +2470718 +1624824 +1544165 +2512760 +916901 +435884 +1064704 +1862001 +2470862 +50572 +1469609 +2470717 +1670907 +2470690 +2294988 +427667 +1775971 +2471086 +2470887 +1776080 +2470910 +82994 +1496619 +1160765 +1064774 +786515 +410327 +1148101 +2082766 +2279617 +2470918 +2471057 +2471042 +1272514 +1544250 +1160764 +1064776 +1544224 +2424239 +786547 +1776050 +1148105 +1661405 +2295018 +1110858 +1496597 +1670981 +1776064 +2753205 +2753208 +1137161 +2470902 +1795656 +1148116 +2470889 +1148113 +1064784 +1913861 +1544201 +1762185 +1544232 +1795641 +2321862 +1795670 +1670963 +2148735 +2471044 +1544212 +1765577 +1862014 +2471088 +686509 +1776086 +2082747 +1160755 +1160760 +2470921 +2471017 +410329 +2294998 +1765579 +1795687 +1670949 +1862017 +1670960 +2471010 +9828 +1064768 +2148711 +1272515 +1487734 +1324759 +1776060 +2471004 +1795638 +2470927 +1776072 +2294989 +1795667 +1496602 +1765565 +1795648 +786496 +1795663 +2279615 +2471070 +2383912 +1795680 +1544217 +2470944 +1148111 +1544233 +1765590 +1670942 +2471067 +2471013 +2471039 +786511 +2295000 +2471007 +1728389 +1272516 +1795636 +217602 +786523 +9819 +957896 +2470899 +786499 +1148123 +1862019 +1689825 +786544 +1765566 +1670967 +2321861 +2082759 +2470941 +2699162 +1762187 +2471032 +2470926 +2321851 +2148745 +2148726 +9815 +2578489 +2148718 +786505 +1776056 +1272529 +2471606 +402883 +2295050 +1324781 +2424273 +445941 +2471497 +2148818 +9846 +2279635 +2578508 +2471548 +2149017 +2148992 +525721 +2149005 +2434359 +217623 +2148823 +2746207 +2148938 +2471549 +2321905 +1765610 +2434328 +1148189 +1768830 +2148827 +2471671 +2148917 +1795773 +2531277 +916955 +2753221 +193337 +1409186 +1422880 +2148863 +2753217 +2149015 +2471303 +2082810 +2729101 +2471632 +2148966 +525733 +1405025 +2746211 +2434367 +1765635 +1670997 +2424295 +2471570 +1167926 +2471677 +2471683 +2578530 +2149009 +2517213 +445942 +2578517 +1148175 +2082813 +2471444 +1776136 +1795775 +1776110 +1795750 +2471294 +2471595 +1671008 +2383919 +916943 +2148887 +1137164 +2149008 +1862044 +1795780 +2434356 +916946 +2471323 +1776169 +2471495 +901675 +525732 +2578542 +2471343 +2471693 +2753220 +1483774 +2471468 +2471617 +1160806 +1324784 +1422879 +2295144 +916950 +83010 +741147 +1795764 +334269 +1148158 +786583 +2148895 +2082769 +1483793 +2471711 +9849 +2471231 +1661449 +2746186 +610729 +1776116 +402894 +334260 +2471232 +2471156 +1689856 +2082786 +2148913 +2295038 +686520 +1324770 +334246 +1422847 +957935 +2642535 +1405046 +1182944 +2148967 +334250 +1182941 +2471205 +2082779 +525756 +1776199 +2746188 +2709630 +1765642 +2434365 +2434310 +2471102 +217617 +2471329 +2471510 +916947 +1137171 +2746204 +1148137 +2471519 +1352085 +2424293 +2148771 +525748 +1422909 +2434333 +9862 +2531279 +1829151 +1148198 +1776143 +1829154 +334241 +1324767 +2295048 +1765621 +2424244 +2578531 +1862032 +2471450 +50583 +2424308 +2471198 +1496653 +1862039 +2471097 +1765640 +1422855 +9877 +1469616 +2578557 +2444130 +525731 +2753226 +2434305 +749039 +957954 +334257 +2295046 +2082776 +1160777 +1795774 +1768837 +2471469 +1483776 +2295055 +2082818 +525727 +2471201 +2471132 +2471759 +1768835 +1776131 +2471530 +2295054 +1154780 +757817 +1671057 +2471105 +2444126 +2148912 +2471404 +2424265 +2383915 +786582 +2471333 +2471417 +1272526 +2149019 +2471666 +2471402 +2149042 +2427773 +2746179 +9842 +2471492 +1765619 +1776111 +1829153 +1148183 +2471560 +2512786 +2148961 +2082803 +741155 +1148164 +2578503 +1776093 +1148177 +1324798 +2037498 +1483770 +1544269 +402898 +2148770 +1405026 +1324772 +2578560 +2424311 +1422848 +2082823 +2471432 +2424263 +2295064 +1795727 +2434341 +193336 +9860 +1671028 +1776174 +525755 +2383920 +2471297 +2295052 +2148809 +2471511 +1324786 +1272522 +2295029 +686517 +2471146 +2149012 +2427777 +2471585 +2471183 +9853 +2471425 +2471214 +2282190 +1689863 +2148931 +50588 +2471298 +2424259 +1795737 +2471204 +786563 +50581 +2578527 +334274 +1776125 +2471371 +2746199 +1422856 +2471284 +9871 +525730 +1765622 +2578513 +2471686 +901670 +402884 +2471706 +2746202 +1671007 +2471721 +2578507 +1671058 +2321881 +2082814 +2471441 +2471634 +1422950 +151348 +786731 +1765689 +2149069 +2062777 +2424366 +237472 +2434393 +2082934 +2083062 +10132 +9950 +2026850 +2149097 +786728 +1765660 +1496686 +151327 +2424442 +1352099 +957964 +2103875 +2082883 +2149082 +610753 +786702 +9920 +2149165 +2083046 +940459 +402904 +1544342 +2295195 +917007 +1948057 +916989 +525823 +2028540 +1409221 +206611 +2531356 +206606 +10118 +1544351 +206605 +1671102 +2083023 +1405065 +2471804 +2082940 +1422914 +1974478 +2295258 +2082858 +712176 +1050484 +1496714 +1405066 +2062786 +50744 +1064823 +757873 +957968 +1765685 +2149171 +50624 +1671107 +2471797 +2082981 +10157 +1394328 +2295280 +2295264 +1002942 +1409214 +2282205 +2082874 +2351699 +2037528 +1483822 +1496699 +2295164 +10055 +1768847 +1544313 +1483870 +901686 +2062785 +2424401 +1496834 +2424351 +865698 +2295266 +1496678 +901718 +786696 +2434369 +50712 +83046 +1496768 +610736 +2103866 +1483801 +2295256 +2531348 +2083045 +206621 +1483874 +2037537 +2082905 +1959940 +2321932 +2295265 +2149063 +410345 +489982 +525810 +2082876 +786718 +1050489 +1483850 +1059298 +1728392 +2699171 +10099 +10074 +50711 +786610 +1422932 +2083057 +786627 +2295187 +1050469 +1776255 +957962 +9914 +1087834 +525794 +2082958 +1064809 +1385770 +1544316 +1091846 +1487760 +957965 +2471762 +217642 +1518963 +2149045 +151326 +1776240 +2359924 +1959947 +1776251 +50718 +193342 +2083064 +1483864 +10042 +217653 +1050458 +2083007 +10079 +1059300 +2531295 +2028532 +2149150 +410343 +1671113 +2083072 +757830 +50690 +2359912 +786686 +2082948 +50714 +2295233 +940451 +1496807 +9989 +2083068 +917027 +193352 +2149076 +2082896 +50596 +786638 +2082886 +1496754 +610742 +10115 +940453 +1544358 +1765710 +1272540 +2082942 +2684740 +1544305 +2295229 +2295231 +2082955 +2082891 +2578570 +10081 +1496777 +206612 +1544348 +2083074 +1483820 +2082939 +1050421 +2082879 +2424403 +1518950 +2295174 +10152 +786709 +10066 +1518939 +2282218 +1496749 +2083002 +2295237 +1776231 +916985 +2149163 +50620 +786624 +50613 +786649 +786619 +1422937 +2149072 +2083053 +786706 +1959952 +2028536 +1050486 +1405103 +1776236 +2531309 +1671089 +2444133 +1324842 +10163 +2149170 +2149088 +1496771 +2083061 +1487741 +1483797 +2295178 +2083025 +2295212 +1050481 +1829161 +2103878 +50676 +1483795 +2082966 +50719 +2295261 +1483862 +1050454 +2282198 +865703 +2531306 +2082946 +2149162 +1050416 +1496843 +2149065 +1487756 +83036 +1496794 +1941315 +1054688 +2282216 +83025 +9987 +1765706 +2321934 +2037564 +901745 +1765684 +464733 +1054706 +786661 +1483814 +410353 +2082911 +2578575 +1829160 +2321928 +525795 +206618 +2082872 +402905 +2149107 +2434372 +1671111 +1054683 +1050440 +768044 +2295240 +1829158 +865678 +1054704 +1496710 +1405058 +9935 +2531334 +768045 +2037543 +9979 +1487736 +10021 +2149160 +1050426 +2082853 +757867 +2279655 +9953 +2531317 +2295239 +1293156 +83030 +10111 +1969010 +1765703 +1768841 +2295207 +2015812 +2082878 +10041 +2471764 +768075 +1496849 +2082965 +2082881 +2424411 +1483877 +1496856 +1974486 +2321921 +2037514 +1487735 +2424398 +2424385 +2424405 +9918 +2026868 +1050464 +2068693 +525787 +50663 +2434396 +2383921 +2699170 +610740 +786625 +50609 +2295221 +2279665 +1974480 +445945 +10030 +2471809 +610756 +1487738 +1405074 +2149075 +1050412 +865699 +1422912 +1050446 +1293146 +50716 +2295252 +1544321 +1469627 +1182945 +2471812 +50607 +1050468 +901692 +10057 +1405099 +2082968 +1671101 +1405060 +50706 +2279664 +1959948 +1689868 +1050504 +2026861 +525770 +786855 +757885 +786796 +217659 +2424552 +2149319 +2434401 +2295344 +1985066 +50762 +410468 +193360 +2471895 +2149331 +410440 +2062802 +2424582 +1091847 +1999784 +2149432 +1469634 +1214717 +410406 +427694 +1624836 +2421404 +2083084 +1765768 +2295455 +2149175 +410490 +786844 +2424475 +2471845 +1422963 +1959983 +2149449 +2424492 +2062797 +2149445 +686556 +2149246 +2037658 +2295374 +2083169 +1795856 +10178 +1795894 +1765803 +2083184 +2321965 +410377 +50757 +1776305 +2083102 +2037600 +2472076 +737833 +2149397 +2471860 +1658846 +2149301 +2721610 +1148295 +2471973 +1999800 +1776335 +2295331 +2424505 +2149187 +2578620 +2424569 +2421371 +1544398 +1765801 +2471818 +525831 +1422997 +917068 +1671155 +786875 +1658834 +2295463 +1862076 +410383 +2434429 +2149233 +1765731 +206631 +1137216 +1776354 +2295461 +2472194 +2434460 +1776334 +1544454 +1765800 +2321993 +917048 +2424563 +2149358 +2472175 +2472186 +410465 +2471945 +1148260 +2471829 +1422962 +1422955 +901765 +2383937 +2083131 +2282234 +2472250 +2471912 +1795822 +2434471 +2149426 +2037599 +2434410 +1050511 +1544471 +2321995 +2149398 +786869 +1050517 +1776377 +10179 +2471996 +410375 +786863 +2421386 +1776287 +1422970 +1469635 +2083105 +2472215 +2295299 +2472270 +2472235 +1988046 +1469632 +10198 +1776307 +1148240 +2062801 +410359 +1776332 +1671127 +2295328 +2517226 +2531384 +2471864 +2434417 +2753238 +1544468 +2421354 +1776422 +786776 +2424482 +2472234 +1795864 +1671132 +2295308 +2421365 +1422994 +2004512 +1324861 +2517217 +1137224 +1343643 +2295462 +2295410 +2472326 +1960008 +1829194 +2083189 +2037592 +2421459 +1776309 +2321948 +2037620 +1776400 +686541 +2472167 +2295289 +2321970 +1483919 +786884 +2421435 +2149327 +1544420 +1422951 +334291 +1137207 +2424555 +347634 +2471826 +2383934 +1422973 +1148287 +2295335 +1661482 +1544465 +1391956 +957990 +2149193 +786804 +2472115 +384426 +193362 +2295470 +2295314 +2083087 +249562 +2472244 +1148302 +1960001 +1050518 +2472288 +2472331 +2472203 +1959981 +1776410 +2295448 +525826 +2472104 +410366 +2472327 +410480 +1391959 +2149335 +2472317 +1671144 +2421363 +917054 +2421441 +2472259 +1544467 +1776286 +786837 +217658 +410410 +2517221 +2321991 +1148270 +737810 +1795872 +1671138 +2424487 +1544391 +2471933 +2421411 +2321954 +1765780 +427699 +2295475 +2295329 +2471856 +1544419 +2295398 +50755 +2321956 +2083195 +2472330 +2149232 +737855 +1483894 +1661501 +2062791 +1544432 +410433 +2421394 +2321972 +2295478 +2424562 +1765779 +2471988 +1352108 +2295406 +410420 +410485 +786785 +786841 +2471907 +1544447 +2472205 +410422 +2472171 +2472321 +1148300 +2037628 +1422976 +2472014 +610766 +2083139 +2295386 +737809 +2471898 +2015822 +2434474 +2149342 +1776393 +1624837 +2746235 +1776361 +419222 +419227 +1999787 +1776323 +2471844 +2149208 +1658838 +2472057 +1765759 +2578605 +2062796 +2471869 +2295294 +2578659 +2149223 +2746240 +2472075 +1765739 +786789 +2321982 +1544376 +2149191 +2295367 +1960015 +786797 +2642542 +2472052 +2472227 +2083117 +2149405 +2062806 +1059303 +735375 +2149269 +2421367 +2149437 +2746249 +2083159 +1084002 +2322030 +2424467 +2434419 +2578612 +940472 +2472037 +2472302 +2578657 +2295389 +2434455 +2321989 +1960000 +1171566 +2434440 +2083107 +2421377 +334296 +2083125 +2149475 +2149574 +1544558 +2472374 +1272587 +2746281 +2083238 +2295497 +1762232 +2531422 +2746278 +2472558 +2578674 +2472600 +1795926 +1064868 +2282238 +1795923 +2149604 +1148318 +206635 +1423041 +10222 +2730997 +2149496 +2037685 +786896 +2472375 +2472396 +1658852 +2472553 +402942 +402934 +1988064 +1776477 +2149471 +1544503 +1422999 +2531410 +2083224 +2421474 +2037672 +2578673 +786940 +2295510 +10216 +2149480 +786946 +1050574 +2015837 +2472410 +1544580 +2149614 +2322070 +410512 +2083227 +2472454 +2729122 +2531424 +1544596 +2322113 +402931 +402940 +2746257 +1795957 +1423012 +2149470 +768085 +1795936 +427709 +1544491 +1544570 +2260520 +1689872 +2083252 +2322054 +2642544 +2472437 +2149584 +2322045 +1423036 +2322037 +2322051 +2531413 +2746275 +1496897 +2642548 +2472602 +786905 +1795953 +2279688 +1765832 +1762203 +2037679 +1050538 +2472557 +2383940 +2472490 +2472501 +2083223 +1544540 +2083213 +1862081 +1795906 +786938 +1544552 +2472524 +2472450 +2424597 +1148310 +249578 +1148323 +2037678 +2746259 +2472421 +2642546 +2083218 +1137225 +2739650 +1148375 +2322094 +1086308 +1544537 +1689880 +2472465 +1148346 +2472566 +2578666 +1160827 +1496910 +1795911 +402959 +1423032 +2472445 +2295534 +2753259 +1765836 +2149553 +2322085 +402956 +1544545 +1423048 +2472583 +2149586 +2322077 +2322067 +2472420 +2322108 +2322078 +1148311 +786914 +2149507 +2149607 +2322056 +1272590 +2746287 +2472508 +1829200 +2472570 +2149555 +1795895 +10233 +2472429 +2578677 +958010 +1272586 +2472486 +1819781 +2472562 +1469639 +786922 +2472595 +1272596 +1544528 +1544556 +1544511 +334301 +1423022 +217666 +1148370 +1423026 +83078 +2424603 +2149523 +2472552 +2472406 +1795930 +1776468 +2149482 +1059369 +2472664 +1142351 +2149704 +2472699 +1796006 +1544638 +10237 +1902136 +1137242 +1624896 +410559 +1544610 +2434503 +237488 +270551 +2149670 +1423052 +1064912 +347653 +2295557 +2149660 +2472758 +2512795 +2322116 +1689890 +686557 +749054 +2578704 +1768882 +1704322 +1704324 +2149667 +958029 +1002988 +270542 +1154811 +686565 +1469663 +83079 +1487784 +1624864 +1059375 +2578701 +2103888 +1796019 +1059324 +2531427 +1795997 +406887 +1624857 +741182 +2721619 +1969018 +1845561 +1689895 +1624873 +489983 +2149737 +1544662 +1487789 +1142350 +1544618 +2149734 +1658871 +1671197 +1394335 +2149729 +1200885 +237487 +2260546 +402991 +2517232 +1544629 +415554 +50790 +1352113 +2434500 +1763265 +2421500 +415528 +749046 +50787 +206641 +2472746 +1795972 +402987 +1948063 +2037699 +610785 +712199 +1064885 +1544603 +1518991 +1671179 +1059322 +1496919 +249585 +1487776 +1796002 +768100 +2472764 +1768887 +2518473 +1765838 +1862102 +958038 +1796035 +1795991 +1544655 +2421501 +402986 +1671183 +1405112 +865746 +1154803 +2149645 +1073444 +1624882 +2472738 +415570 +1795984 +410535 +1796009 +2472757 +940475 +1544652 +2444139 +1469661 +865739 +1381506 +2472644 +2472703 +1214740 +2735680 +10236 +1544636 +334304 +737862 +217672 +1084024 +610799 +415531 +464736 +2512805 +489985 +2512794 +610774 +464739 +1483929 +1154790 +2434505 +2746301 +410565 +1059333 +2279698 +415564 +2260542 +415568 +2295552 +1469667 +1059382 +2149654 +2472716 +2149674 +1689892 +2472726 +406893 +1776500 +1064900 +2472653 +1624898 +1768876 +1148407 +1762258 +1776533 +2295558 +2083257 +1671172 +2684743 +2472731 +402978 +2149647 +1763263 +2753266 +1974504 +1409231 +2578697 +749056 +786988 +2472715 +402969 +347651 +1073455 +1762248 +2149698 +410524 +2472698 +865767 +1765846 +2472647 +1059349 +406919 +2260525 +1544674 +1064897 +610793 +1483922 +1768889 +2746299 +768092 +2062818 +1862100 +1814769 +2746307 +217682 +2472761 +712198 +445953 +865751 +1148394 +427710 +610779 +958024 +1902140 +2472657 +940481 +1487779 +2472638 +737873 +1624903 +2149696 +2512798 +2062831 +1241579 +1050583 +1091849 +2746296 +1671171 +1544626 +334308 +2472736 +958034 +712201 +2434512 +1302379 +193398 +1160852 +2434524 +2083281 +712215 +525886 +1423096 +334315 +786992 +2149830 +2322162 +2322158 +1671213 +2472846 +2149764 +2149816 +2322135 +2322156 +901781 +1862137 +1423082 +1272605 +2295596 +2472815 +1671205 +2472834 +193412 +2578743 +2149874 +1862128 +364770 +2472789 +1862166 +2149833 +1862173 +1544691 +2472869 +334321 +1661521 +1160850 +2416668 +1862168 +193410 +1214748 +2472812 +1423087 +83092 +757905 +1689906 +2279703 +2472819 +958064 +787020 +1496943 +334332 +787010 +865777 +2322134 +1862122 +686588 +2434534 +2149794 +686571 +1689905 +2149763 +2472818 +1671211 +1765861 +2322129 +2149847 +2295590 +2149889 +610813 +1862110 +2015840 +193381 +901778 +1137259 +1137260 +237501 +2295609 +757913 +2062836 +2472876 +1544694 +787026 +217705 +2295593 +2578712 +1796060 +610810 +217699 +1862154 +2149776 +1496946 +787009 +741209 +1862160 +2149873 +2260551 +2434509 +525889 +1054743 +1496939 +2383952 +610807 +741205 +1765868 +2260550 +2149796 +787007 +1182971 +757911 +2322168 +2578742 +958050 +1728404 +2472837 +1728397 +525917 +1765865 +1214746 +2472800 +2295631 +2424644 +445959 +193422 +396067 +1544722 +1423128 +2578768 +427712 +396125 +396098 +1324881 +2149929 +396097 +686592 +1423122 +402992 +1544710 +464745 +10252 +2578761 +396068 +1829251 +2531438 +1941318 +787028 +2083307 +1381511 +396089 +1496961 +2103894 +2149899 +1214767 +1423123 +2434562 +686597 +427721 +901795 +1160860 +1796078 +1423112 +2434581 +1544739 +2578790 +2083316 +2434578 +712218 +402999 +2260553 +958068 +2531437 +2578758 +1154822 +2434564 +1829236 +1214769 +1496957 +2083312 +396073 +1544717 +525933 +193418 +1624912 +1423130 +2083319 +787035 +1988067 +2149895 +2037715 +1624914 +1913885 +2383964 +2434576 +1544787 +2149935 +83115 +403005 +1148434 +1054759 +1496949 +396075 +1423118 +2026882 +787029 +396071 +917099 +1671231 +940492 +1381524 +610816 +787031 +2434570 +1214772 +2282251 +396113 +2416669 +396090 +2083302 +1423121 +2295616 +2383961 +2295623 +2150009 +83139 +2149994 +2322200 +1862218 +1728415 +686618 +1496964 +1394340 +2149992 +2642574 +427730 +1829262 +2472927 +958091 +2578805 +917108 +2742621 +1862222 +1544814 +364775 +2531466 +1728431 +1671267 +396138 +686608 +787067 +2472944 +2150018 +1182989 +2642597 +1054782 +917111 +2578801 +1796089 +2578826 +1657724 +958087 +396150 +2472942 +1241587 +1671265 +349788 +1054784 +2578827 +2150008 +1544806 +2282257 +1862208 +2472926 +787070 +1214799 +787078 +2472955 +1544803 +2149996 +1706921 +2578847 +2472939 +2424650 +1671273 +1728420 +958089 +2642576 +917107 +1862229 +1862233 +1829266 +787096 +1862186 +1913904 +83140 +1423160 +497450 +2434592 +1027544 +193427 +2295645 +2472922 +2578825 +787076 +2578839 +787053 +958084 +2578824 +1423158 +2434591 +1496963 +2578829 +1913888 +1796095 +1496969 +1262589 +1776581 +1182984 +490126 +2062838 +686624 +1262644 +525973 +610819 +490322 +151402 +490183 +270855 +2295669 +1160885 +2473011 +2150106 +375789 +1624941 +339739 +2384006 +712264 +193483 +151495 +270642 +610842 +490104 +270904 +1262659 +446021 +445981 +2512864 +477699 +712257 +217743 +270873 +464868 +490223 +865825 +686623 +1252452 +1469683 +1054787 +2150091 +1167939 +940508 +396168 +2642616 +490375 +237512 +2383989 +237550 +1054791 +865786 +2021919 +343376 +712262 +610853 +151502 +2473041 +298494 +787127 +237535 +686636 +2434605 +83177 +2384012 +427758 +343369 +2351728 +375831 +1293170 +193473 +464845 +290877 +330539 +2473093 +410574 +1496981 +1936036 +1182992 +339768 +490151 +610856 +2037726 +525963 +151431 +1974510 +2322220 +1124456 +1728466 +610899 +1704335 +410586 +290905 +151444 +1753064 +490095 +151481 +1003012 +1862248 +477681 +270566 +712240 +667257 +290878 +490356 +610911 +490170 +477687 +464830 +2512845 +2322292 +2260572 +2150066 +1624957 +865824 +10288 +290859 +339771 +2150102 +464794 +1182995 +1496976 +330551 +490099 +151562 +667253 +2416677 +83197 +2351746 +403026 +490306 +151522 +1544849 +270783 +2512911 +285073 +865841 +83159 +2473095 +610900 +2473045 +1913917 +464805 +2150083 +151405 +490196 +490127 +477725 +237509 +2260574 +2472979 +151443 +2578852 +50806 +270839 +1469684 +490320 +270552 +83210 +83213 +1262656 +2472985 +2150029 +2383995 +1753065 +396156 +2472968 +1753058 +237532 +610901 +490185 +1796122 +1003013 +151489 +2512914 +270679 +410597 +464823 +490226 +490118 +1262594 +375810 +712259 +610925 +151389 +865810 +50819 +940526 +1003017 +2473002 +151458 +217715 +445995 +290909 +1544871 +298493 +1544847 +2322235 +270838 +1671297 +2295666 +339756 +1624964 +330571 +2787094 +270569 +2295684 +446003 +464871 +270821 +311769 +1796143 +2578869 +2322315 +1913924 +2384014 +249630 +343370 +490376 +2512875 +490090 +2150101 +2351727 +1913934 +2150031 +712301 +1167961 +686671 +490193 +290855 +2473081 +339772 +151456 +193446 +270575 +1519000 +787114 +270654 +384444 +2351726 +2295668 +193476 +384442 +1262652 +490017 +667237 +1497000 +83163 +2295658 +464834 +490339 +477678 +410600 +464825 +343328 +2473013 +1728436 +375806 +270857 +477710 +193466 +865806 +2787088 +2531479 +2578857 +1544851 +1167945 +334358 +311766 +270739 +330526 +2512886 +610830 +285062 +490250 +477760 +410591 +270887 +2681036 +2322224 +2839447 +2681037 +2150103 +1671306 +270861 +339752 +1262626 +477711 +1829283 +2512899 +270852 +2150054 +464783 +249587 +151494 +151486 +525994 +2473049 +2150094 +1103409 +865819 +2322305 +1544866 +446007 +270658 +1544859 +151570 +712287 +712273 +610940 +464803 +249595 +1262642 +2322250 +1519005 +2642665 +2512868 +427763 +151553 +712223 +285061 +2512839 +2351738 +2473086 +249614 +339753 +490370 +330532 +490225 +1262603 +464822 +1262651 +2351733 +270617 +1753063 +1110876 +270565 +1496980 +2512867 +1796127 +2472990 +490143 +712305 +865833 +1103412 +464828 +2295687 +1003024 +1936040 +610904 +2322290 +610861 +2322321 +151377 +2383984 +712224 +270597 +151467 +237513 +2512850 +490404 +1624931 +2578849 +2578851 +445992 +1252449 +1262634 +490201 +667224 +2473044 +686643 +2416673 +1544858 +1073462 +907823 +375828 +1003001 +270744 +2642611 +2473099 +2578855 +1936005 +445990 +1167948 +50817 +2322232 +686646 +2753282 +270586 +490415 +610840 +477734 +427752 +610919 +490096 +2512893 +490221 +464878 +712244 +2083337 +667248 +490012 +477743 +2434637 +2434623 +1272625 +1214804 +2295743 +83236 +1324900 +787153 +2322350 +787137 +1544901 +1171584 +2150145 +1544926 +1497007 +2531508 +1423215 +2473181 +1796205 +1324909 +2531487 +2473167 +2037728 +2434626 +1796170 +741216 +2021921 +1148452 +1689932 +2083362 +1148455 +1544933 +1862264 +1544882 +1671342 +2473188 +2473147 +1544906 +1183001 +446037 +1544905 +1497024 +1054817 +2578926 +1423194 +2642678 +1689935 +334366 +2295715 +2150159 +2473163 +2150162 +1796213 +1091874 +446040 +1661552 +1171583 +2473135 +2473119 +917130 +446039 +1423231 +2578920 +2150168 +2434640 +1544885 +339776 +1544927 +1862262 +1796169 +1171585 +2150110 +787148 +403042 +2578941 +1913947 +1544898 +958110 +2083363 +1154843 +1960040 +83246 +2083374 +2424672 +2424659 +1671349 +2322345 +396206 +1657738 +2322344 +2578940 +2578907 +2150215 +1154850 +1054815 +83249 +2473143 +525998 +2150139 +1671360 +2473116 +2295719 +1862269 +1671337 +1862266 +2642679 +1544900 +2150132 +2709647 +1661546 +958121 +1324893 +1497014 +2434625 +1154848 +2473164 +2424655 +2083377 +2473175 +2473159 +2424666 +1796176 +1054818 +2150212 +83263 +2424654 +2578911 +1497011 +525997 +427765 +1272630 +1324896 +83264 +1423193 +2150224 +1862263 +2150280 +2473238 +2578960 +2295776 +1762261 +2473219 +1544962 +2150263 +10311 +343394 +2473233 +1423266 +901819 +2295766 +2150249 +1711144 +2150274 +2434662 +1497033 +2295764 +2295781 +2150269 +1497032 +787163 +1796250 +1497025 +2434685 +2295774 +1423244 +1423251 +1324919 +1544961 +2473211 +1423242 +2578951 +901815 +10301 +2424681 +2473270 +1974512 +2083388 +1661563 +2416682 +2083407 +1671371 +1661562 +1829310 +2150283 +1671382 +2473191 +526022 +2083408 +2083384 +2421525 +1064937 +1819789 +10297 +10312 +2578962 +2421513 +787188 +2473257 +1829306 +1862274 +1324931 +2735685 +1252456 +1762268 +1762271 +958137 +2359963 +917134 +2150271 +1671390 +2322366 +787206 +1974513 +1377911 +1544944 +1423260 +1776618 +1671376 +2578967 +1381549 +2037759 +2473289 +1796271 +2421534 +10342 +396269 +2473425 +2473447 +787241 +2473463 +1423294 +1796417 +1796297 +396259 +2150617 +1394352 +1544982 +2684746 +1394377 +396277 +1497129 +1545044 +787336 +10319 +2037777 +1796320 +1497095 +2473399 +1796432 +1796286 +2473337 +2295874 +1050585 +1776631 +917150 +787237 +2150585 +1765884 +1776644 +1324976 +2322375 +2424686 +2424687 +1545062 +1272671 +2434726 +2434781 +1302395 +10330 +1545039 +1423282 +2473464 +2150330 +1545048 +526055 +686708 +2473501 +2473297 +1796333 +1796377 +2150538 +2150478 +2068738 +1544985 +1776633 +2150490 +1796311 +2473335 +2434688 +1423291 +787351 +1545095 +958171 +1423364 +2150423 +686704 +217786 +1913971 +2037764 +1671458 +1776652 +2295903 +2150406 +2150475 +1423317 +2150318 +1497083 +1544992 +2295825 +1377920 +1796341 +1862305 +2434778 +1324955 +2150464 +1544969 +1776629 +2322373 +2150335 +2150503 +2037762 +1796342 +2473436 +1776656 +1661608 +2150476 +10334 +2037779 +2322400 +1796296 +686689 +2150583 +2150351 +2150507 +1796370 +1796435 +686705 +2295831 +1370097 +10315 +396295 +2416683 +958181 +1671473 +1796326 +958189 +1545003 +2295898 +2150610 +2150480 +1796357 +1671453 +2473322 +958178 +2473500 +2473387 +1544978 +1862302 +396284 +2746316 +1377930 +2282289 +2473430 +2434790 +2473370 +1671406 +2150311 +2473274 +1324962 +1544986 +1661565 +1796266 +2473462 +2473323 +2434731 +2322425 +757928 +1394363 +2150382 +2150358 +1423318 +403052 +2473416 +2150363 +1497121 +1661590 +2295870 +2322429 +1423356 +2473359 +2578996 +2473498 +2322396 +1054830 +396279 +396251 +1377923 +1661584 +1776672 +1272679 +2150450 +787338 +1545002 +2068743 +2295810 +2150541 +2473352 +1497151 +2473357 +2037768 +2150550 +787296 +1423351 +1324977 +10336 +2015861 +1545026 +1796383 +2150337 +787210 +2150468 +787264 +2473485 +2295792 +2150372 +1776625 +1862296 +1423363 +2150420 +1054840 +1302397 +2026888 +396234 +1545071 +1324984 +787253 +1689953 +2787130 +787228 +2295920 +526039 +1796444 +396262 +2295856 +2434758 +1272659 +2473367 +686682 +2473330 +737880 +2434785 +2150533 +2295824 +737879 +1352148 +2011744 +1423329 +396248 +1394350 +2787121 +1796279 +1423340 +1545082 +2150352 +2434795 +2150462 +1352136 +2322407 +2150436 +1776680 +2473369 +2150601 +2473314 +2434793 +1913974 +1545043 +2473437 +2295797 +1776688 +958192 +2434690 +1272678 +1545016 +1272673 +396260 +1423339 +83290 +1661581 +2150577 +1661576 +330573 +917161 +151589 +1624993 +1154857 +2746318 +1624992 +1497155 +2150619 +1776709 +865878 +217800 +940544 +2295958 +1796468 +298499 +1160909 +2103899 +1545183 +2150698 +2021942 +2011747 +1657746 +2295966 +2015863 +610951 +667260 +2473552 +2579003 +958198 +2473591 +1054867 +1497161 +1469708 +787394 +865890 +917159 +2473620 +2434841 +2735694 +2150665 +737888 +2150739 +1796479 +2150693 +1519032 +1497178 +917163 +1796530 +2260598 +2150701 +1776743 +1796453 +1545208 +2473572 +721697 +2753300 +2150776 +1776722 +1776747 +2295942 +290921 +151613 +2037789 +1160910 +865849 +2150629 +1545231 +2295924 +2473661 +2473656 +1160939 +1054875 +1545195 +1776762 +2150683 +1325002 +334387 +787355 +1796511 +1054847 +2473589 +1661630 +2260591 +83332 +787381 +1148504 +2735692 +940540 +1497166 +1160935 +1545202 +2150669 +1960047 +901842 +1776727 +2746325 +1913978 +1776710 +2753313 +334396 +1545193 +1497162 +1762276 +1671516 +901840 +1054862 +1160940 +1624980 +2150666 +1829319 +217789 +686723 +1796496 +907829 +2473581 +2473546 +83344 +1796529 +1545181 +2473659 +2434802 +2295925 +1776753 +2709654 +2021937 +396322 +2322454 +737887 +2150767 +396324 +10367 +2062841 +917177 +2473580 +1545200 +2150709 +1625005 +1625008 +865858 +1776724 +1762302 +10359 +2260596 +1762297 +917155 +1325004 +2150769 +83329 +2473619 +712320 +1661627 +217802 +1545242 +958205 +1762275 +2282299 +712314 +712313 +2150664 +2295927 +667258 +865870 +1497157 +2282302 +787378 +151634 +2473629 +2434839 +1796535 +686722 +2753297 +2421593 +2746332 +2359968 +1776718 +1776750 +1625002 +1796452 +1545179 +2642700 +1073465 +1054864 +2434799 +2753296 +1545185 +1545137 +2150625 +1423372 +686727 +1671504 +1241598 +2473653 +787384 +1762300 +2150778 +1160908 +610946 +2473559 +686711 +865900 +712311 +1381577 +83335 +1776752 +1671546 +2008177 +865871 +1160938 +2434803 +1519031 +1776711 +610963 +1064965 +1064961 +1671509 +1054880 +1398344 +865845 +667264 +2473624 +526061 +1796456 +787389 +2295933 +1054860 +940551 +1862318 +2473535 +2083436 +1497177 +1796533 +526065 +768102 +2150718 +1796466 +1519035 +1545217 +2473596 +1003034 +358994 +1171599 +2512939 +712326 +940575 +1902153 +1796546 +2150791 +151671 +1913983 +1343656 +464886 +2285780 +1814797 +464892 +1625022 +1974524 +1343657 +2011751 +1625057 +712322 +1625054 +1200922 +1003062 +1671549 +1175686 +50860 +865909 +2260642 +359000 +2839454 +2579014 +1625049 +2351761 +2285785 +2531541 +1200917 +2434858 +1902154 +940556 +2749170 +1784209 +1519068 +1625062 +435896 +2295969 +2746339 +2473678 +1241615 +1913982 +2260644 +1241603 +1103418 +206662 +747726 +611004 +2309143 +2579035 +1059408 +375837 +2579046 +940573 +2282304 +907840 +865950 +1385787 +389785 +358978 +1665012 +1625044 +1625015 +1719735 +1902165 +446042 +1845586 +151675 +610994 +611001 +1003042 +1183018 +1519062 +1154870 +865972 +2444171 +311775 +865969 +1519041 +2531551 +2579053 +1103430 +1960051 +1200935 +1999848 +2642704 +940560 +151674 +50857 +1241609 +1682626 +2549240 +940561 +1784204 +1625066 +611002 +1625037 +1671547 +1103420 +2518483 +907842 +611032 +865941 +358995 +2579013 +1625063 +2309132 +712332 +50866 +206663 +1829328 +1385792 +1311266 +2731011 +2260601 +2512942 +1519052 +1469737 +427770 +206658 +2083438 +1913979 +2150792 +1003055 +1519055 +1003040 +1814794 +1625061 +1625056 +1829332 +327135 +865916 +917187 +2549246 +747732 +1343655 +1073481 +2384045 +1519070 +611000 +746547 +1003069 +1845585 +2424704 +50921 +1091883 +1103439 +2260668 +1519116 +497465 +1003103 +290927 +2150833 +151714 +1003127 +865996 +339825 +1784216 +1003143 +2642738 +2062848 +1902170 +1241631 +757942 +2642732 +1913998 +1719743 +1625150 +866016 +1728487 +1784220 +1902178 +327140 +1625099 +2150827 +1545280 +1545276 +1902167 +1862357 +2531561 +1039741 +1469764 +1039727 +2473695 +2103914 +2642721 +1103446 +1487808 +866008 +1214842 +343432 +940625 +50874 +497466 +1862366 +1913995 +1625165 +2512979 +435913 +1003088 +464902 +2150839 +1545255 +1039733 +1073492 +1167970 +2579093 +2579080 +2512960 +1625152 +490450 +611046 +1704354 +1469785 +1753104 +866002 +435916 +1902181 +741232 +1625161 +2103916 +1829366 +2103921 +1171604 +2642712 +1814811 +375858 +1519115 +1200967 +731670 +1999850 +2322484 +1003086 +50868 +2260660 +1073491 +1154886 +2642733 +1625128 +2579079 +1003134 +1625102 +1704353 +1545264 +757947 +2150825 +375860 +1039714 +435926 +2512965 +151706 +2579085 +2549257 +2473715 +1625171 +1913992 +1625111 +237610 +2062852 +1214852 +375865 +1160944 +1913987 +2512962 +2150810 +2260670 +1262664 +1423388 +1845601 +2260674 +1241656 +311778 +940614 +1003126 +768126 +50896 +940600 +151709 +940596 +865978 +1124485 +757945 +1519105 +866030 +865991 +1171601 +1154888 +359040 +2642728 +1003139 +1845603 +2579075 +2150798 +1682632 +611043 +1423393 +1625144 +1814812 +2351767 +2579063 +1625164 +526070 +2579092 +1200956 +2434864 +1545278 +10388 +907851 +1625108 +1154879 +1862358 +1728484 +1003145 +2512977 +1200944 +1545281 +1902168 +339820 +1862371 +1084031 +50904 +50895 +757949 +375882 +446046 +1545398 +611055 +2642745 +787456 +2322544 +1054885 +1405123 +2295989 +787429 +2322554 +1661640 +1385797 +464907 +151743 +1545406 +1625177 +2579113 +1757392 +1757393 +1110907 +1728517 +1914023 +787449 +1914040 +1625189 +787440 +2579111 +2642791 +866063 +686771 +2473759 +1765900 +1545381 +917229 +712356 +2579146 +217806 +2787150 +1862395 +2473791 +1545401 +2322497 +2579099 +2322501 +1487812 +1545385 +1003181 +2642785 +2531587 +1545383 +2642762 +2150922 +1796596 +526078 +343435 +2531582 +1902201 +2026902 +866046 +686766 +497483 +917228 +1171614 +2295992 +2295985 +2083466 +917201 +1064993 +2150880 +958225 +2150843 +958268 +2512985 +958250 +958251 +866034 +1545358 +1423436 +787431 +2295981 +526089 +1682641 +2473787 +1545351 +2384068 +1545376 +217805 +1091900 +2642773 +917221 +1483993 +2579143 +497489 +1003184 +526093 +1171615 +1545336 +1003168 +2150899 +958228 +389789 +427776 +2642752 +1862390 +1914006 +2473801 +917214 +497477 +1545292 +1814817 +1545312 +2322541 +1862389 +2150883 +2150894 +1064996 +1091899 +1862402 +2787146 +2579151 +2579128 +2473774 +917220 +2473776 +1671562 +1545342 +2787144 +1862399 +866061 +787422 +151754 +2150887 +1625179 +497492 +917204 +2260692 +2295987 +1728497 +958229 +343442 +343443 +2473831 +2150916 +2473755 +958236 +746552 +1545367 +1829392 +958259 +497473 +1914053 +2424710 +686741 +2150879 +2322564 +1796578 +477769 +787447 +611057 +1469792 +2062855 +1862387 +2473793 +2150900 +2359979 +343434 +1914029 +917211 +298502 +2150913 +1064980 +1796580 +1423440 +1545333 +2473782 +1914030 +1969033 +866045 +497482 +497494 +2322539 +787421 +917225 +1325049 +866059 +1545347 +787420 +958226 +50935 +1497207 +1054884 +490455 +2296000 +746551 +2384061 +2473761 +375887 +1728524 +1087850 +1059421 +1814831 +206702 +2150969 +1796621 +1183073 +490494 +464967 +2579213 +2296004 +1796625 +464934 +406943 +1302407 +1862474 +446080 +490483 +1214884 +446093 +1003212 +526103 +490530 +1065001 +354314 +2150992 +464921 +1003209 +1241724 +406939 +1862490 +1200984 +427803 +347671 +1862458 +1862450 +151801 +1003191 +1914064 +464968 +375945 +375946 +50964 +490469 +151809 +354338 +1200983 +1625215 +1183088 +1167971 +2642814 +2103927 +1519129 +2151016 +1214875 +50976 +50975 +1814833 +1091907 +375961 +435950 +375958 +347673 +1862496 +2642809 +464930 +1862432 +410647 +1154892 +1183094 +83365 +2322571 +464958 +1167990 +1753124 +2473903 +940640 +1796627 +435971 +1343664 +1796646 +403078 +375952 +410659 +151790 +1183075 +1241706 +1003207 +83375 +422534 +464916 +2473900 +375896 +2083496 +427808 +1902240 +435945 +1167978 +477799 +2579187 +1171623 +2424711 +2150950 +1796619 +2150989 +1902227 +958285 +406946 +1936101 +347663 +2083481 +2513001 +403085 +1160955 +2579189 +410636 +464925 +490482 +151788 +446060 +1829418 +464920 +866096 +151802 +206677 +2473887 +415607 +1469817 +1796632 +1658916 +151813 +50961 +151757 +1704359 +1073497 +2473862 +1914081 +83376 +866094 +1148521 +50965 +1252489 +866091 +464984 +1796638 +1545457 +2083480 +1545429 +354327 +347659 +2579202 +375954 +50955 +375907 +50966 +2579211 +2512991 +464982 +1829409 +1003199 +2513000 +375913 +1545437 +410668 +1902245 +1241732 +490499 +737908 +151760 +477777 +1936077 +1936098 +1545449 +375940 +50939 +410634 +2260716 +446070 +490518 +1103451 +611080 +83362 +1914070 +490529 +375930 +1545438 +464913 +712362 +410649 +1902244 +1214898 +526101 +464972 +2384080 +83380 +464956 +446075 +1183090 +2579204 +427785 +2150980 +2579181 +406936 +477789 +1545413 +2746341 +2473909 +1796642 +1902239 +2150949 +406933 +427799 +2473899 +1625218 +1862452 +403081 +1487817 +787472 +410645 +2296007 +1087851 +1936088 +1167972 +446090 +2642821 +1059433 +464917 +2517246 +1183079 +1829403 +940642 +1003214 +2413634 +958289 +737904 +490506 +1862555 +410675 +83411 +436004 +2434875 +1148539 +526119 +354339 +917243 +1545474 +2474052 +217863 +1091911 +151828 +1171627 +1545516 +611103 +1914102 +446112 +1914121 +1160990 +249655 +650907 +1545486 +422544 +1423456 +1862601 +1168005 +1110945 +446107 +2416691 +311790 +1671592 +1252510 +10421 +217840 +741248 +298506 +2474055 +721712 +1671595 +721711 +151842 +2579285 +2473937 +10428 +1545503 +249657 +1148540 +497514 +2642895 +1065033 +2473926 +1183108 +2579277 +2296016 +1914098 +1214955 +1352168 +1054891 +1914110 +2103930 +83385 +1161010 +1262692 +1819800 +10419 +1796657 +465000 +1423468 +2579288 +2151066 +1862594 +2681063 +1423472 +419251 +2579244 +1796670 +1862583 +1776803 +50997 +334407 +435991 +477812 +2473928 +427858 +427832 +2839461 +2579308 +446122 +83400 +206710 +2579301 +526112 +1065011 +2282309 +611106 +1545490 +403098 +410692 +1065025 +2151043 +464991 +2296012 +1728528 +2151062 +2444189 +2642842 +83410 +446137 +2474045 +1160975 +151835 +2474047 +1999857 +2474022 +2642889 +10425 +217841 +1545469 +2642835 +1862590 +2384096 +2579251 +2359983 +415611 +446150 +958309 +1796679 +410705 +193553 +83392 +650908 +1711162 +1690018 +2151065 +477804 +1625244 +2151036 +270930 +712379 +217870 +1690023 +334409 +2579266 +10426 +2474023 +446117 +1423470 +237638 +427848 +1862570 +1423469 +787494 +422543 +1862525 +446113 +1671613 +83396 +1160994 +1142375 +217854 +83389 +1765907 +1862533 +1087853 +1914106 +2642860 +1671585 +2151059 +1768902 +1862563 +1497252 +1175697 +1862600 +1398352 +2083509 +1252515 +83382 +2474017 +249649 +2839464 +2474004 +1160995 +464997 +151833 +1423464 +958300 +1065016 +741243 +917246 +1762312 +1862557 +2579252 +686798 +464986 +10429 +50995 +83402 +2474016 +1796675 +217827 +2473950 +2473940 +2260818 +1862619 +866183 +1469862 +611144 +1519158 +1625303 +1625315 +731675 +151887 +2151128 +2296035 +1728557 +901874 +2368638 +1469881 +2625360 +1625333 +151973 +2260733 +151860 +1003252 +1469886 +1469863 +1487824 +2513031 +1039754 +2260732 +1711169 +2579393 +1003255 +866178 +1762314 +1469848 +2151116 +1845632 +2416692 +2625340 +2260761 +2151125 +2285794 +2625359 +866209 +940651 +866184 +2359994 +2071989 +2579392 +436017 +1469902 +1124525 +1469858 +1796702 +1469900 +2260787 +1469892 +1469861 +866122 +359048 +1829473 +1343682 +1469826 +1862622 +359054 +2151083 +866245 +1711174 +1765911 +465003 +2260840 +907874 +768140 +866121 +1625354 +51006 +151866 +151850 +1625293 +2642914 +2296028 +2151133 +2309168 +1241746 +1625360 +1469839 +237664 +1784236 +51045 +2151084 +611140 +2579428 +1469905 +1625288 +866247 +151942 +2351796 +1103470 +1409255 +151874 +757959 +1003263 +866236 +1625267 +940660 +151917 +1845620 +907855 +940665 +1497265 +712413 +1003286 +2260730 +2474089 +2322604 +2474100 +1469879 +206722 +1625313 +151868 +2513014 +2474075 +1003277 +51019 +1845626 +1469875 +1469830 +1003238 +1625348 +1201018 +2474113 +1469833 +1409254 +2296030 +1719761 +1423481 +1625371 +2309197 +206724 +1201013 +1487821 +1003259 +1796691 +2625346 +359055 +1814842 +1091913 +2579347 +940676 +1343672 +866208 +1658931 +206729 +2309169 +2749171 +1084038 +2260844 +712403 +1084039 +1625341 +2413650 +2322602 +901876 +1343671 +2260860 +1862613 +2474090 +958314 +2309189 +2579338 +436013 +1845623 +1519156 +1003272 +2474081 +1086339 +206728 +151882 +866228 +1519149 +1469873 +866190 +2474087 +2579336 +1039755 +1814838 +1665026 +940657 +866238 +2579378 +667276 +1487841 +1753131 +1625291 +526148 +206721 +151876 +1625307 +1469897 +2260791 +2474115 +151909 +1784234 +2735701 +2579405 +2625350 +1776819 +151848 +2260832 +51016 +2285796 +1936110 +2579324 +1519139 +1625322 +2434880 +1545533 +2444200 +2513025 +712394 +866176 +2413641 +1625276 +359063 +1469891 +1039758 +2474106 +1753135 +51025 +2260740 +1625277 +2322631 +1497282 +1394401 +151991 +2474189 +2474137 +2309219 +1137289 +787543 +1545613 +2434924 +749093 +2513049 +1054895 +2709667 +2579434 +1148558 +2296051 +1625385 +2474185 +327159 +2296043 +2474129 +2444213 +2787191 +1545642 +2151147 +1469919 +746556 +917260 +1796728 +1862630 +327161 +1545589 +343451 +2434911 +1545657 +1148562 +270933 +1776837 +1325085 +1059454 +1168020 +1423504 +746569 +686828 +51049 +611154 +1665031 +958332 +477819 +2351812 +2513053 +2151186 +2309214 +1776831 +747758 +2424720 +2474200 +2735719 +1497289 +2474180 +611152 +1704374 +2735718 +2513050 +2787189 +2011766 +1762365 +2351814 +2787153 +2787169 +327157 +1003327 +1625391 +1765919 +1682656 +787547 +787525 +2434920 +958351 +343452 +1625389 +2787157 +1148551 +2037830 +749092 +958318 +2474206 +667282 +1137282 +1469914 +2474141 +1545652 +343450 +1302411 +2011762 +2151171 +1545579 +747763 +343449 +2474224 +686829 +1385815 +866273 +1658956 +901880 +1385813 +2474147 +2309210 +2434901 +1776839 +1762366 +1497287 +1003325 +2309212 +866263 +1325078 +866277 +2434895 +749077 +2296053 +1423485 +866272 +1545622 +1394400 +731676 +1545568 +2474226 +2151187 +237672 +1690049 +1423512 +2759760 +866269 +2787162 +787518 +1974539 +1065044 +83418 +396344 +1545627 +1325079 +1950920 +2787195 +1352179 +1545663 +2474202 +1519179 +1658946 +1796724 +787535 +2151180 +1381589 +1711177 +1625386 +1974540 +917264 +2151151 +741255 +1661655 +746572 +2011776 +2721646 +1387097 +712427 +1370209 +526178 +2749207 +2474257 +1988109 +2746366 +1545690 +2746385 +1352201 +526161 +1974543 +2735736 +2151200 +1999894 +2759785 +2746363 +2008195 +1394421 +2759812 +1988100 +2735722 +2709670 +2746408 +2741370 +2735755 +667285 +2746378 +1974563 +526196 +1370148 +1974569 +2746395 +1387150 +1065055 +1352184 +1776841 +686853 +2695267 +667311 +2011790 +526164 +2759786 +1370204 +526191 +2741367 +721717 +721723 +1370206 +1974609 +2746393 +1545682 +526165 +2474242 +1545675 +526211 +2759797 +1988088 +2746391 +2424725 +2011782 +686834 +686841 +526177 +1381605 +611195 +1776855 +2011786 +1387105 +2746375 +1370202 +1370118 +2735748 +1387139 +1387088 +1999882 +526172 +611160 +1352226 +1370143 +2746361 +1974548 +1394420 +1784279 +1370167 +2746387 +2753347 +1370151 +611205 +1352217 +2749198 +2735723 +1370121 +2721632 +2749208 +526198 +1950935 +1370193 +1671631 +1950921 +712431 +958355 +1370113 +2749214 +749097 +2721649 +2151208 +2741368 +1387100 +2753368 +2746368 +1325108 +1385821 +1370125 +2759780 +2151197 +1950931 +1381599 +1352208 +2749219 +1370181 +746580 +1394422 +2735739 +667284 +2746419 +1954529 +1974559 +1671632 +1387098 +1370164 +1311272 +2735745 +526219 +2474250 +1999888 +2011787 +1974551 +1796743 +1272695 +1545755 +446161 +2474338 +1862674 +334415 +1711181 +349797 +10455 +1370214 +2642973 +2296098 +349799 +2151220 +1862643 +1423554 +1091922 +1325124 +1671665 +1325143 +1999897 +2296099 +1091919 +334414 +2322659 +2579442 +1829501 +1728577 +2322642 +2384126 +1065057 +2474330 +2709671 +1423560 +2037842 +1936120 +2753381 +1325117 +2037835 +2579462 +2681068 +1671664 +2642985 +2322670 +1110965 +83447 +446163 +2151271 +1027578 +2360001 +526280 +1027581 +917326 +2474275 +1110963 +686872 +1862706 +2151284 +1671650 +2151330 +1497300 +2531625 +2151228 +1862638 +1796767 +2642930 +354354 +1545742 +526224 +958375 +1497312 +2474340 +917301 +403106 +2322650 +1423528 +2151303 +1862662 +446171 +2474295 +2642962 +1423570 +2579510 +410713 +787572 +2026912 +2011793 +2642929 +2037841 +1914141 +2579496 +2642965 +917294 +1690068 +2474279 +1381618 +1914153 +2322651 +2434943 +2296080 +1671662 +2296079 +446178 +1914187 +2474274 +2642982 +2151246 +2579505 +2474352 +1065064 +2579483 +10466 +2642964 +2322647 +1796787 +1325121 +2474334 +2151279 +2531620 +2579531 +2151291 +1545708 +83444 +2360000 +2151296 +1497298 +1484005 +1065066 +1796790 +1423573 +1728561 +958378 +2151287 +2839489 +1545707 +2151304 +1796780 +1796760 +2642993 +1914161 +2474351 +1497294 +1829496 +2322649 +1829485 +2579490 +1497303 +686882 +2787204 +1914167 +2083557 +2151224 +1423546 +787582 +2579494 +958370 +2083545 +2474272 +958365 +1914140 +1796763 +1862665 +1325118 +1545750 +2296084 +2151289 +1829511 +2151276 +958401 +1829521 +83437 +2643001 +2434938 +83440 +1027589 +2151319 +1110968 +1484006 +1796758 +2839479 +2474359 +2384147 +446164 +1352239 +1130058 +2322638 +343457 +1130056 +2579449 +1862647 +2151233 +958380 +1027582 +917347 +1394431 +1545819 +2424732 +83502 +1862720 +375984 +901898 +1862713 +1130061 +2643030 +712434 +2474416 +1545786 +2151354 +2531659 +2037848 +1325167 +686904 +2579556 +2474406 +940694 +1027604 +686906 +1796803 +2474379 +1914212 +917333 +1862748 +1215009 +1252555 +958414 +2474402 +151996 +526292 +2421603 +193565 +2282327 +1003339 +249665 +1171646 +1829529 +2643031 +1214985 +2474427 +917348 +1960076 +2008236 +1661672 +2103952 +2421598 +2151370 +1671671 +1914196 +1728603 +1862749 +2579591 +1776883 +526322 +1545810 +1352250 +1796800 +1003338 +1545828 +1272711 +2579581 +1829537 +354369 +2151417 +2531640 +2474366 +2037850 +2260873 +2322706 +2579561 +1914203 +2151412 +1398360 +217891 +2474400 +1077895 +2474374 +2474422 +958410 +2384160 +2434954 +2083562 +217887 +1148584 +1087854 +686895 +2579576 +1862840 +1661670 +2384168 +1690080 +1845642 +354361 +1497328 +1214976 +1862776 +1423596 +958437 +1706926 +686909 +2008234 +1914215 +1776868 +1545802 +1862781 +1545801 +2296110 +1398358 +1862718 +1027602 +83469 +1914197 +2643034 +1762374 +2531639 +1183127 +1862827 +2579542 +1690072 +2643033 +1325180 +2083569 +427881 +1171651 +2474433 +2579585 +917336 +2151420 +2322707 +217889 +2474441 +1862797 +1325162 +787648 +2643041 +2151409 +1862732 +10487 +1343685 +1862733 +1423600 +1711183 +901901 +526311 +526293 +2579549 +1077888 +1183145 +2434951 +1077893 +1657751 +2384174 +83493 +2282325 +10485 +1862709 +193571 +1214983 +2643050 +2643045 +2474409 +2531666 +1862744 +1325168 +1796816 +2021947 +611236 +611250 +1154946 +2260934 +1103494 +2322725 +866300 +1469969 +1409279 +1379171 +2037881 +1519231 +10523 +2474445 +339879 +339873 +2151641 +2384182 +958456 +1241760 +1343690 +1625451 +2151621 +1154941 +1519191 +1469943 +1003383 +2037866 +1829563 +1201050 +1704388 +152019 +1625483 +51134 +1469937 +1003415 +2384198 +1719789 +10541 +1003399 +2151478 +2579613 +1423629 +2151597 +958458 +1902299 +2296136 +1545852 +1073526 +152017 +712509 +2260936 +1862865 +2151611 +51098 +2474454 +2151485 +1829551 +465062 +1902306 +2151456 +1003409 +866329 +611316 +376032 +2474491 +866327 +768157 +1423666 +1396723 +2260932 +2579646 +2260944 +901914 +1625524 +1845655 +1201046 +1398363 +2579655 +2260886 +1690096 +712479 +2531698 +611292 +712475 +1183151 +217898 +1409272 +2474484 +1625490 +51091 +2037867 +2151476 +1545889 +152012 +2260896 +1241779 +2296145 +958468 +2103969 +2151494 +2260926 +940722 +1829583 +1470009 +1704391 +1201038 +611229 +1124541 +2434959 +1545865 +376000 +940708 +152030 +1027608 +958464 +1469953 +1719783 +1469940 +1625544 +376022 +2579623 +1625470 +2579599 +1039785 +2151467 +526335 +901913 +2643079 +51081 +2151607 +2083598 +2384208 +2384209 +2151509 +721735 +2151579 +1469961 +1003402 +1201035 +1201028 +1497373 +2513098 +1241787 +1671696 +2384196 +1423641 +2151624 +1519200 +2643098 +2151463 +2103968 +446192 +290947 +83524 +1103482 +2103966 +611243 +339856 +1821730 +1154957 +611242 +152015 +330593 +2474462 +152014 +1201066 +2083620 +2083593 +1201033 +2260927 +2753393 +152034 +1545848 +1661683 +1519221 +2151470 +712490 +2151639 +768161 +1519211 +1325202 +1936125 +1704383 +611257 +1862910 +1625493 +2625362 +2579632 +1545877 +51075 +2579634 +866342 +1661701 +2474481 +611264 +2368647 +2322716 +1423672 +940733 +611304 +1423652 +526328 +1519210 +1829596 +958454 +2083607 +940728 +2513099 +1711204 +2260958 +2513090 +2322721 +2513094 +298516 +152044 +940737 +403109 +611331 +686923 +2151618 +2103963 +2579636 +611224 +2416703 +1262723 +51121 +1124539 +1409271 +375985 +83545 +1262720 +2579637 +2103962 +2579650 +334423 +1625518 +1914217 +1704396 +1272714 +2151632 +1862853 +1396726 +2151503 +757988 +1423649 +1003343 +2709676 +611259 +2260977 +2151553 +958467 +330580 +2151633 +51132 +1829582 +152065 +1103503 +1625466 +1719801 +1003392 +2151543 +2643061 +1545833 +611226 +712508 +1658960 +1039784 +1379177 +611248 +526331 +2709677 +1423624 +1003360 +1423633 +611238 +2474457 +1469989 +1625468 +2474467 +1765921 +866302 +311801 +712464 +2037873 +1545853 +1719802 +2260924 +2037869 +1352262 +1409273 +1829561 +757990 +1103530 +712494 +1862889 +1241784 +1497369 +1423656 +712472 +2151507 +1201048 +611387 +490566 +2531738 +339880 +1366096 +901917 +526350 +2296177 +611440 +1470048 +1054928 +611444 +2322735 +611394 +611437 +1059468 +1545908 +1671704 +237710 +1039794 +152089 +51142 +866367 +611383 +2261001 +2151666 +1059471 +330625 +667331 +866384 +2151679 +1829605 +339907 +1625560 +237714 +2151695 +2151660 +1829600 +343464 +1625583 +1470056 +2474519 +2261029 +1862920 +1394434 +611364 +2015888 +1423686 +2261025 +2579674 +2296186 +667334 +2474531 +940752 +611439 +2735768 +490579 +2261016 +403121 +1625561 +1776903 +339891 +1470014 +1325211 +51148 +1862933 +1545907 +2282340 +2531745 +940748 +270965 +330629 +1470051 +2384212 +330610 +1999902 +2513123 +2083630 +2083632 +2625367 +465070 +2261020 +1470033 +152094 +51146 +1396736 +290952 +2151659 +2261002 +339902 +2474503 +2474512 +2474511 +1829601 +611419 +410717 +2260987 +1625562 +2474509 +1994977 +1796824 +330621 +152102 +1201084 +446199 +1948074 +1003433 +1423690 +1671703 +2579662 +2151678 +339889 +376038 +330622 +1470044 +611342 +1110986 +1999908 +446207 +611345 +1862934 +152090 +940762 +339912 +2062901 +152092 +1765923 +2151675 +339898 +611371 +490572 +2261003 +2260998 +611332 +611359 +339908 +940744 +2384210 +376033 +2151652 +2531741 +1470041 +2261012 +1711214 +2083637 +465077 +940768 +1625551 +1396747 +1201085 +465064 +1948081 +2531759 +396384 +940760 +1545926 +2643105 +2579677 +339885 +2151685 +667339 +1003445 +152083 +611434 +339910 +330595 +2434970 +667343 +298518 +2011798 +1379184 +396375 +330613 +1829613 +403117 +2261028 +2068762 +2474589 +1148606 +1671726 +1423699 +1484028 +2474578 +2083674 +2322745 +2151778 +1776912 +2068763 +1497394 +1545941 +1148617 +1171654 +2474581 +2474641 +2474595 +2474656 +1325225 +2474650 +2531766 +1796855 +2296210 +1484035 +1484032 +1776917 +2151792 +327163 +1776909 +1497395 +958488 +1423697 +901922 +2474669 +1077899 +1137296 +2151734 +2474658 +1796852 +1405141 +1796874 +2083675 +2151765 +958496 +2474670 +2699199 +2151783 +1862936 +343473 +2474655 +2434999 +2068767 +2474604 +2083670 +2474617 +10552 +1671730 +1110987 +343470 +1950947 +1027616 +2643107 +1054930 +2474607 +1377959 +2474621 +2068768 +1545944 +2474536 +1796832 +477845 +1065074 +2474612 +2322749 +1796886 +1765932 +1148596 +2083681 +1352271 +249706 +2322787 +249683 +1293202 +917406 +10576 +2474775 +83633 +1545989 +1546048 +901925 +1661734 +2444224 +1671735 +1625605 +2151848 +2296247 +237756 +2435012 +51154 +1148622 +10568 +1423741 +2435009 +1065132 +237743 +2435023 +1671784 +10582 +1148628 +2513128 +152147 +787726 +249709 +958501 +2474708 +958502 +1545966 +193613 +1148630 +958531 +2322776 +747787 +83579 +1546046 +2151875 +1065131 +1065114 +2474807 +2296250 +249704 +249671 +2643111 +193588 +2474757 +2474804 +1065096 +249691 +2474789 +1671787 +1546041 +1671785 +787725 +2735769 +2151854 +1784298 +327194 +2474715 +2474719 +1110989 +1003456 +2474692 +1671739 +10589 +206736 +1161042 +917405 +2474684 +10572 +1545983 +2474695 +237730 +2151812 +1054932 +611447 +339917 +217938 +2474718 +270972 +152132 +1148645 +193586 +217968 +396395 +1003452 +1148639 +1054933 +2322771 +2579692 +2351831 +1154985 +2474772 +2474803 +1154984 +237748 +2474710 +1545988 +217949 +2351832 +526374 +10586 +193597 +206741 +1168028 +1302444 +787768 +1671742 +1776928 +237754 +787759 +2435028 +917409 +396404 +217911 +396401 +1671802 +1065093 +217943 +2643112 +152140 +1546003 +2513133 +2444220 +2474727 +2322769 +10570 +193605 +217972 +2513136 +1690119 +1671781 +83582 +958511 +270971 +2746443 +152133 +1784303 +1625607 +917402 +249701 +10564 +249677 +2151821 +396429 +2151832 +2151880 +2151866 +1392826 +917399 +217914 +2474681 +51157 +10573 +1423776 +2474860 +1796917 +1497433 +1784306 +343505 +1728638 +958558 +1753154 +364847 +1796939 +2513152 +687000 +1171661 +1161071 +1671807 +10669 +1671829 +1796949 +1711220 +1065144 +2474829 +1682671 +446224 +2296281 +1497423 +2643131 +1862970 +1546052 +1272729 +2296303 +1423757 +83657 +721745 +2152024 +2151976 +2435044 +2474939 +1862949 +1065151 +1671842 +2296280 +1829628 +10676 +2151997 +787851 +2839508 +1765937 +1829631 +2322838 +2531780 +1819827 +2531792 +2083693 +1381638 +2474926 +1862972 +2643123 +2322857 +2474830 +2296272 +2296315 +1671852 +2735772 +917430 +1661741 +1862987 +2309230 +1776965 +526407 +1497430 +2474920 +51171 +10649 +2322851 +1084048 +1546059 +1091942 +1148657 +749147 +1863005 +193626 +1829623 +2296296 +2083708 +917415 +2037906 +2151897 +1272745 +1762394 +2151948 +1423764 +1124570 +2151947 +2839505 +1241805 +1325247 +2151988 +1423781 +427891 +2424783 +1862990 +2296274 +1423782 +1796900 +1546117 +83665 +2151962 +2151915 +1960098 +1671853 +83646 +1546144 +2151993 +1546076 +1325271 +2579729 +1661744 +1862980 +2151992 +1423783 +1484047 +1161066 +1215047 +2579704 +2151925 +1546158 +1423754 +1671841 +1671837 +1690137 +2152018 +2531789 +83655 +1784309 +1215054 +1671806 +1392828 +1385835 +1776941 +2579700 +2322854 +1546067 +1091941 +2474884 +1914227 +787854 +917445 +1546075 +2424776 +1546143 +1960087 +2474903 +2351837 +787785 +1671825 +1974626 +686973 +2083709 +465100 +1546166 +2151931 +1110999 +787848 +1497422 +298521 +2579706 +83663 +2474848 +2151991 +526381 +2151893 +686987 +1137328 +866412 +2322809 +2322849 +1497429 +2296308 +2839515 +1352278 +1183191 +477855 +10651 +1252570 +2579727 +958542 +1272737 +343506 +327204 +958538 +787825 +1241807 +1999917 +2579739 +1497445 +1862991 +1352285 +2579703 +2152020 +1671840 +749132 +917427 +1960092 +2643115 +1796934 +1796984 +2579715 +758010 +490594 +1671828 +1796963 +686975 +1796914 +51174 +758016 +1065150 +343510 +237771 +1988135 +396450 +2474867 +1497442 +1776952 +1065147 +787872 +2007641 +396456 +1302452 +1546190 +1497483 +1111000 +1914254 +1370223 +1003464 +1381646 +1497476 +1423802 +2868625 +1352318 +1546197 +2839530 +1398373 +526469 +2579787 +1398379 +2684758 +1027621 +2868638 +2731029 +2868687 +2839527 +2753402 +1398380 +1497486 +1546174 +2868682 +1272748 +2152054 +1728652 +2579769 +2868647 +2868717 +1497457 +2152035 +2424793 +1402236 +611491 +1272757 +1398369 +1776983 +2868660 +1325281 +611477 +2839526 +1960110 +2360054 +2787225 +1974639 +2384241 +866438 +866442 +1974644 +2015896 +330632 +1470075 +2868708 +866440 +2839529 +334433 +1765941 +2868715 +2384238 +2746452 +2868653 +2709688 +1519252 +2384237 +526443 +2435062 +152162 +2322874 +1398368 +152158 +958593 +611471 +526461 +2868608 +2735790 +2868698 +2787226 +866443 +2435068 +1497488 +611492 +721768 +737942 +2735775 +1423789 +958584 +687017 +1352295 +526419 +2435059 +2435064 +359075 +2424790 +1137332 +2731048 +1497482 +2015895 +866423 +2868607 +2474957 +2735776 +2868629 +334444 +2731037 +1497456 +2296338 +1796993 +1370227 +2868693 +2360061 +1682676 +1497481 +1765939 +526441 +1546187 +2474948 +1497469 +1690155 +1497463 +611498 +2787224 +1765940 +1423797 +1974640 +526475 +2579816 +1252577 +1671907 +1690162 +2360072 +958614 +249740 +1671898 +1960135 +958615 +1671884 +917493 +1325325 +2152187 +1161084 +1325311 +1829664 +1423808 +10729 +83681 +1423845 +2475034 +1183221 +1183213 +1148677 +526492 +1325331 +2152152 +1797020 +958634 +10688 +2787229 +10718 +2037929 +526515 +787923 +2435080 +1155013 +465105 +1829657 +1171665 +721769 +2531827 +2579793 +1423848 +2152070 +2152157 +2735796 +1381654 +2296359 +2282363 +901958 +1065169 +2068776 +1183206 +787927 +1797021 +1829659 +526490 +2296374 +741279 +2152081 +2083757 +1829647 +2152110 +2152113 +1148704 +1711224 +901938 +2152218 +1690170 +1183222 +958608 +1325301 +2152181 +2435079 +2435076 +2152066 +2424809 +2384251 +1960129 +1086346 +1423829 +1405145 +1546234 +193636 +901946 +2579799 +2152090 +2152123 +1171670 +2083751 +249730 +1950951 +749152 +2037931 +193637 +2322918 +1829646 +1423867 +1690167 +10728 +901954 +758035 +2384250 +2579808 +1497503 +1137350 +364856 +2322879 +1405144 +901953 +1148676 +2296373 +1671872 +2296390 +1325320 +2643135 +2037934 +1381656 +2731053 +2474980 +83710 +958625 +917497 +2296343 +1405146 +2296362 +10723 +1054953 +2322921 +1137341 +83701 +2531815 +1546247 +2152220 +1091952 +2322885 +1065173 +2296352 +1974666 +2296381 +2068772 +1863045 +1690166 +1829658 +958638 +687030 +249743 +2152131 +687032 +526505 +1161075 +2424816 +2424820 +1546212 +746602 +787940 +193632 +497533 +2083752 +327212 +1302456 +2011819 +1960130 +2152215 +2322883 +787937 +2424818 +2322902 +2322930 +83705 +2531831 +526520 +787895 +1003474 +917492 +2083748 +1423858 +446259 +721773 +1497512 +2579849 +10742 +2152286 +1325345 +1546261 +2579855 +917540 +2475102 +2384261 +2787316 +1183238 +1797036 +2296419 +2384258 +2579845 +2753414 +1272780 +2787250 +1546276 +917530 +1325342 +2152311 +193646 +2475117 +2152302 +343533 +1272765 +1484061 +218012 +1546289 +2475042 +2475070 +2787251 +2787254 +526534 +526545 +343544 +2475040 +687060 +2152294 +1546264 +1797028 +1423907 +343538 +687068 +2435112 +2709711 +1137362 +1671910 +2735800 +2475059 +1661767 +687047 +1183231 +687061 +687062 +1829680 +2579830 +10754 +758057 +2787256 +1423919 +2475114 +1272771 +1690172 +1546284 +1215091 +758054 +1690177 +1215097 +1183232 +1137365 +2296420 +1797046 +2152301 +218031 +1352331 +2731056 +1829672 +1546281 +1661765 +917532 +343551 +2322951 +1960137 +1352332 +1183227 +2531852 +193647 +2475061 +2579832 +1183230 +249754 +917537 +1546307 +1272768 +2296399 +1797034 +2735799 +2083796 +2037941 +446265 +2475065 +1829681 +249762 +2296397 +917504 +2152288 +2068778 +917513 +787960 +2475103 +2424827 +2475095 +2152291 +1091964 +477877 +249760 +2322955 +1671916 +2435102 +1325337 +2037946 +1765957 +2152269 +1829671 +687074 +2152258 +2579833 +758042 +1661763 +687069 +2083795 +2579842 +2579848 +193643 +1829683 +1728675 +1863094 +10763 +10761 +1497511 +1829678 +917519 +1765954 +1829684 +477894 +2152247 +2037945 +1625641 +1003477 +1671987 +1690203 +958674 +1546349 +1519256 +747792 +2475124 +2384269 +1497530 +866454 +2579883 +687121 +2579879 +687114 +2444237 +1546352 +1546439 +218037 +1974685 +1671982 +1625649 +788023 +917545 +1797089 +2579927 +465108 +1546348 +1325379 +1423933 +1914267 +788049 +2709719 +1950959 +2475177 +1974684 +2475152 +788071 +526578 +237780 +2475233 +2579931 +2444233 +917558 +958678 +721781 +787982 +1352350 +1352353 +1863125 +2531860 +2475188 +1003488 +1546342 +2531878 +2731070 +2579861 +10779 +2475157 +1625643 +526603 +1704412 +787995 +2475125 +2475129 +687103 +1377966 +2709718 +2424857 +2152357 +1999953 +376049 +1325365 +1385840 +1954535 +2424855 +667351 +1423950 +2579890 +2475213 +270977 +237786 +917543 +1423955 +1497518 +152177 +2296440 +152192 +1765966 +2579892 +1148739 +901974 +2435155 +917550 +1863131 +2435165 +1003480 +2152356 +1065189 +1325394 +611512 +1352342 +1546334 +2787321 +2296505 +1546423 +958666 +1394453 +1003485 +1625640 +1497529 +1950960 +1161089 +1546336 +1625633 +497539 +1814866 +465107 +2424839 +2753415 +152175 +2643160 +741293 +712545 +152195 +788079 +1497519 +497538 +687119 +2152428 +2531858 +687082 +218041 +2731057 +787994 +2424848 +917577 +1546445 +611508 +1484066 +1661780 +2579876 +2753416 +788043 +1215099 +1960157 +2296474 +2083843 +1829697 +1546315 +1671950 +2787322 +2152376 +10774 +1084049 +2152337 +2435162 +2083808 +2083817 +1728678 +2475148 +2435160 +2721656 +2475151 +1999941 +2083834 +2475145 +2579905 +1352356 +721784 +1325384 +2787340 +2037978 +1423944 +1546325 +2152345 +1996465 +1661777 +1091967 +1519257 +1665032 +958680 +51184 +1728693 +2296465 +788021 +2083827 +2322966 +731679 +1863129 +1936133 +1658961 +1155016 +1065192 +1137376 +788042 +1671975 +1546446 +152182 +788059 +1690190 +1168038 +866461 +788052 +1137375 +1487849 +611505 +1272789 +1682687 +1546417 +2475205 +1546329 +611510 +427903 +866478 +249766 +2152369 +2579877 +2475156 +2296496 +2152440 +687099 +866452 +526564 +2152375 +1546400 +152183 +788076 +1777045 +2475122 +2731059 +2513161 +1671969 +1671974 +2037969 +866446 +2579921 +1814872 +2643164 +2309252 +1148745 +1385841 +958697 +218045 +788094 +1215108 +712558 +1325421 +1863137 +866498 +2309251 +396471 +1682703 +2444245 +2152523 +1325448 +667364 +2152482 +1325430 +1325441 +1777058 +2741375 +83771 +1760545 +2435179 +2384277 +1215112 +1728703 +917593 +2579984 +2475256 +687144 +446276 +2531882 +2513177 +2152510 +2579942 +83749 +359079 +490609 +2037997 +1753163 +2152508 +83757 +788106 +2152449 +1343718 +193665 +2735822 +1470092 +2038001 +2296539 +1470101 +343556 +1777056 +1325406 +1381679 +1077920 +1625658 +2351849 +1423994 +2152521 +1682694 +1084060 +2152472 +1252580 +206764 +1682691 +650946 +1366104 +788115 +1423975 +218047 +1728700 +2309260 +1201113 +2517270 +2475252 +364874 +339927 +1797103 +2643174 +741297 +1241830 +2152487 +1487852 +1960166 +2746481 +1470090 +2384280 +1863143 +1863142 +1829711 +1252582 +2475246 +339929 +1423990 +1546455 +1704418 +51192 +2351848 +1352361 +2475258 +2475267 +2068780 +2435185 +2579985 +788096 +1423997 +2152515 +152218 +290959 +1325422 +1024776 +1111011 +526627 +1352365 +958704 +866513 +1423970 +1546460 +940803 +2296522 +1155028 +1625676 +1863172 +249770 +1084062 +1168041 +1470091 +1183266 +83751 +2152473 +687160 +526616 +1215113 +788119 +2152493 +749166 +1405163 +1797094 +1546510 +2261061 +788114 +2580008 +237826 +2296554 +2152536 +1385850 +1863185 +1625740 +2071997 +51247 +1183275 +1111018 +51234 +1059490 +1762408 +866536 +866570 +1661787 +2261097 +2749242 +2152562 +152316 +51228 +611565 +2580025 +1625701 +1728718 +1470130 +1183273 +758071 +1974691 +2083859 +2531895 +2435202 +1175704 +1829741 +83786 +1137390 +1625706 +2360082 +2435194 +152320 +1424008 +2384293 +1519282 +51236 +1054967 +2309279 +1424033 +2513186 +152270 +1003535 +788133 +611588 +866568 +270991 +2152537 +2152571 +741307 +1625680 +1863191 +2435193 +2296575 +2261088 +2296561 +1546566 +2296565 +1054973 +866534 +2152594 +611585 +2296563 +1728717 +1863201 +2062927 +1519283 +1424022 +901985 +1988144 +1625711 +339938 +1003544 +1091979 +788142 +152247 +1124578 +1914280 +741302 +2011853 +2152561 +1519276 +1215116 +1003526 +2580002 +2513189 +1241841 +667366 +1682707 +1054970 +1625737 +1969049 +1690220 +712573 +788129 +2296570 +343558 +339937 +940823 +2152541 +2261094 +1863203 +687213 +2749243 +1777063 +2475336 +1470126 +1690238 +2351855 +866596 +2643176 +1784358 +1003538 +788130 +237808 +758068 +2152558 +2435199 +1385852 +2296576 +2625378 +1546555 +958720 +1385857 +1381684 +1073559 +2103997 +866538 +2513180 +2152560 +1497568 +1829738 +917609 +2152524 +51217 +1960174 +2083870 +2296560 +1484077 +2531897 +866582 +866571 +10806 +490618 +687212 +1777071 +237828 +1325450 +2351856 +51242 +1073556 +1003536 +1797108 +1777066 +1704421 +1546544 +1073550 +2435203 +1519275 +1546542 +436049 +1059487 +206779 +940819 +2152578 +611566 +1003510 +1470129 +2580023 +1405167 +490614 +526648 +747804 +2580006 +1546554 +687219 +51209 +1829734 +526637 +339940 +446281 +526645 +712580 +1470146 +687248 +1777078 +1148757 +490634 +1424057 +1424049 +1155037 +788170 +343562 +271001 +2384305 +490627 +2152603 +866623 +2261114 +465126 +2152610 +866636 +1797130 +2104008 +2083898 +1625754 +866615 +2475352 +1385862 +193678 +1797120 +866628 +2152608 +2038019 +152393 +1711241 +2580038 +477904 +1168045 +1325465 +1343726 +940828 +1124583 +1215120 +51257 +1797126 +1325468 +206788 +1690258 +712595 +152373 +2354376 +1325471 +2152657 +2475365 +51258 +465131 +2643189 +83805 +2152655 +1325476 +1546652 +1661798 +1829762 +2580054 +1690250 +2531908 +1091987 +1073563 +1325479 +2580043 +152333 +1996468 +1672049 +206793 +2152648 +1625765 +1672047 +1103561 +1497578 +1470148 +747809 +2038020 +2323012 +1690256 +389798 +1711239 +866647 +465129 +958724 +2083907 +1625782 +1914286 +2360087 +2152634 +1960179 +1003546 +1546655 +2261109 +1658967 +788158 +2296589 +1797129 +1470156 +1065216 +2735835 +271004 +2083912 +2323016 +866604 +237843 +427912 +2424878 +1625774 +206791 +51256 +2580048 +1497574 +2296583 +1059491 +1111024 +327227 +1003564 +1728720 +1424050 +1711240 +1625753 +270999 +490626 +1546595 +2475355 +1241848 +1325462 +1424048 +1424047 +1201140 +1546654 +1914288 +2038018 +2384303 +1625776 +1863270 +1863273 +152424 +1470178 +2580072 +1325491 +1241876 +465153 +446300 +1829771 +339946 +2424883 +687268 +1797145 +2580069 +2854175 +1241870 +1027643 +2152791 +2296644 +2323032 +2351865 +152429 +917654 +2152796 +1183287 +2152872 +1065222 +1241868 +354394 +741313 +958747 +2580100 +712614 +2152722 +490700 +152430 +1753172 +403127 +285088 +1424099 +1728725 +1352384 +2152870 +1484101 +1183293 +1863261 +917641 +490671 +1484115 +1183289 +2643191 +2643196 +2038046 +611681 +1183288 +490681 +611627 +1546760 +1087868 +1902362 +83826 +1484114 +1155082 +1497590 +1863269 +1777086 +1470193 +2152790 +1073570 +330640 +83814 +1546705 +1262757 +958738 +2323043 +1381700 +1546751 +2296641 +611636 +958752 +193686 +1215133 +1672074 +339966 +343583 +1711253 +1719816 +51307 +2753422 +1175708 +2360098 +1902369 +1863266 +1845681 +1546740 +866663 +396495 +1625828 +1484092 +218082 +2278207 +1183295 +1325490 +446297 +2517277 +1039810 +465164 +1728747 +427929 +2152816 +490670 +788215 +465167 +1054985 +1252590 +1546715 +1863240 +1546717 +1155054 +1424085 +237853 +427920 +396504 +1625804 +1829773 +1625814 +271013 +2083933 +2323027 +2152889 +2531944 +1863263 +1936146 +1073567 +1719819 +1424060 +2531925 +2038025 +1797138 +339964 +2421613 +1262779 +2854184 +1994981 +218067 +2083925 +339956 +1343728 +2038044 +712610 +2261136 +1777084 +866670 +1546762 +2643212 +152462 +1484098 +712620 +1155068 +1111025 +1546703 +1155083 +1003568 +10845 +2083920 +1845685 +2323056 +1155071 +2152807 +2580094 +1936149 +2323038 +1103564 +611644 +403129 +218062 +1171689 +2261139 +237861 +2580076 +271020 +1155049 +1902381 +1829776 +490680 +1201154 +1424069 +1777085 +1863233 +490660 +1201164 +611658 +1054979 +376075 +1672061 +384461 +1039807 +376081 +958755 +193687 +1484105 +1546718 +354396 +2643195 +1470184 +10843 +2282402 +2475415 +940847 +2152734 +2517278 +465162 +1262769 +2475386 +2854188 +1161106 +2360111 +10837 +940845 +2323040 +1936143 +249789 +376092 +2421612 +1829784 +1797143 +1262771 +490698 +1003572 +2531917 +218087 +1497598 +1103575 +2435223 +1484109 +788208 +2643217 +2152781 +940850 +2083915 +958760 +152444 +1546730 +1672055 +2421611 +1155052 +2435224 +788206 +1155046 +1484096 +152433 +1672085 +2323063 +152407 +1054987 +2384315 +1546702 +2152748 +237866 +2475391 +1424116 +1091991 +1171688 +446303 +2296635 +2854189 +788224 +1424096 +866674 +1863247 +422547 +687280 +1777092 +958769 +2360124 +1863297 +2153004 +526717 +1661820 +917675 +2475534 +1405172 +788293 +1546770 +10868 +2296690 +2323076 +1829817 +2580230 +1974706 +2083973 +2152907 +2643239 +1546769 +1497625 +1497623 +2475428 +2152955 +788296 +2083970 +2083967 +687299 +2068786 +285093 +2384352 +1690274 +2580189 +2296663 +83872 +788292 +2068790 +917659 +193726 +2153022 +2153011 +2643259 +2580249 +1171695 +1690273 +1546786 +788274 +1424151 +1546775 +2152974 +1657760 +1863295 +2580134 +2475472 +1672102 +2531961 +2580233 +1690269 +2152913 +2153035 +2152961 +1863317 +2384360 +193708 +1497638 +2475465 +788240 +2643232 +2643236 +193718 +2152988 +1424134 +1797150 +2152979 +2435233 +2643256 +2152963 +526713 +2475481 +687303 +1546803 +2152987 +2475517 +2531960 +2153032 +2580250 +1424146 +1424132 +1091995 +788297 +2296680 +1690275 +1690280 +83870 +1272815 +2580178 +2475492 +83885 +2008261 +285100 +2152914 +2475485 +2152928 +2152947 +1728751 +2296657 +1027650 +1497629 +2580184 +1690276 +10869 +2580171 +1960192 +2742653 +1497624 +2323091 +2152971 +2323081 +1690292 +1215141 +2296660 +788280 +2083959 +2068797 +2323079 +2580139 +2580147 +1661817 +2435261 +83875 +2580138 +958763 +2153014 +2435262 +2153034 +2021951 +2643219 +1325495 +788277 +2753434 +2435287 +2153108 +2435322 +1546848 +2038087 +2084043 +2153048 +2424900 +917681 +2475558 +1657762 +958809 +788337 +1424177 +2475577 +2153096 +2475640 +1797209 +2435307 +2153122 +2282415 +2475574 +1377975 +2475671 +1405184 +1497659 +2084042 +2435266 +958800 +2004544 +2475600 +1497667 +2153221 +1661852 +2323112 +2153099 +526727 +2296770 +2435337 +193742 +1398407 +1497665 +10935 +2084040 +2068800 +2296784 +1497646 +1960207 +1960196 +526725 +1424202 +2296754 +2153163 +687327 +10927 +2153135 +1424182 +83911 +218126 +1762412 +788310 +2475555 +1974716 +1394463 +1424186 +1999976 +2742673 +1272823 +2153077 +2580289 +2282448 +403140 +1272826 +249790 +249809 +2153055 +1711259 +902009 +526738 +1484122 +2153213 +249799 +2153162 +1672120 +1111049 +1941350 +1777105 +526735 +2424896 +2038083 +2323114 +1765983 +2153161 +1546813 +2296744 +2282422 +2153230 +2153235 +2296793 +917682 +2435305 +1829827 +2731105 +1424199 +410725 +2475668 +1999977 +1398408 +2709746 +2475655 +1272853 +2323137 +2735852 +2475619 +2068801 +1377971 +2153132 +2475541 +2475664 +2153207 +1546815 +1497664 +958781 +2083997 +218112 +2038108 +2475681 +2084009 +2083996 +917685 +2580263 +1325523 +1914324 +958790 +2153187 +2153097 +1424204 +2153051 +2475571 +1424220 +10892 +2580262 +2153089 +788336 +2475563 +2282417 +1999984 +2282423 +249812 +2531994 +2015906 +2580271 +218124 +2735839 +1960198 +1960212 +2153211 +2435334 +2531987 +2709740 +1272841 +2475544 +2475610 +1546822 +193744 +2084021 +1424184 +2084030 +2084024 +2153174 +2084027 +2580254 +2153067 +2753437 +2323131 +1797207 +1148767 +2084002 +2282431 +2709739 +2435321 +2699226 +1272852 +2531983 +758087 +2731087 +10893 +2153134 +10909 +410728 +2038098 +10890 +2746507 +2323104 +1050620 +2475615 +1546818 +1272824 +249813 +2015903 +2084039 +1424213 +1941364 +2282440 +2475626 +2084033 +2709737 +2475689 +958793 +1546810 +1183301 +2435299 +1272838 +1424164 +1272832 +1777106 +2731098 +1777103 +758088 +83937 +1777107 +526743 +2709738 +2153278 +1370245 +1325559 +2011882 +2475697 +2153253 +1711262 +1272880 +1974719 +1370244 +1829845 +2435370 +1272874 +2580328 +1546867 +2532006 +1370246 +721823 +2709760 +2699242 +2296796 +2742676 +1974729 +2084054 +2699246 +2580356 +2709749 +2643283 +1546856 +1272863 +2475705 +2735862 +2742705 +721811 +2000001 +737961 +446318 +2709752 +1272910 +1272875 +2435362 +1999988 +1988165 +1302501 +2000010 +2735873 +788350 +2643278 +2153249 +10936 +1988154 +2532014 +2753461 +2000015 +218130 +354407 +2699236 +1661863 +2580310 +2735866 +1272898 +1999987 +2721670 +1272894 +788355 +1672136 +446312 +526767 +2746515 +2000007 +1302511 +2580312 +2643284 +2735878 +2742694 +1728763 +1352405 +1272867 +2742687 +2011884 +2296807 +2084066 +721816 +526781 +1999997 +2000004 +403143 +687336 +2580313 +2735855 +2323144 +2580339 +1941373 +396516 +2153275 +2532005 +2015917 +2153272 +2004550 +1272896 +2475713 +1424246 +2153294 +2580360 +1272865 +2153292 +2416721 +2084052 +2004553 +1352413 +218141 +1470195 +1148774 +2153342 +1863340 +758105 +1325575 +2015929 +2475718 +1829866 +788369 +2084115 +2068816 +1215151 +1546879 +1829874 +2532077 +526792 +2153360 +2699248 +10966 +2084120 +1272916 +1974732 +1960247 +917702 +10969 +2323186 +2323182 +10968 +1960241 +83976 +2424935 +1325570 +1829858 +1381718 +2580422 +687346 +2015922 +917693 +2532060 +2296814 +2709799 +958830 +526809 +2153373 +1215157 +2038123 +1777120 +1183307 +2084102 +2038126 +1672160 +2084081 +902019 +1272920 +1829879 +83950 +2038122 +2296821 +1272914 +152475 +2153372 +2699249 +2532048 +2038114 +1484132 +2532052 +1672149 +2084091 +2384399 +1424264 +2532081 +2068812 +193746 +1546880 +2580437 +10944 +1829869 +1988183 +1797212 +1352417 +2435373 +2015932 +2424932 +2296815 +1829867 +1829857 +2580416 +2068818 +2296832 +2282458 +2084073 +902016 +2153375 +1055008 +1398411 +1055016 +10960 +2580436 +1424256 +1111050 +1960246 +2643292 +1863362 +2580390 +343591 +1546881 +2104012 +1777122 +10977 +1546910 +1829919 +1661878 +2580483 +1352435 +1497714 +1960267 +2038127 +2084145 +2580511 +2153434 +1672163 +2580494 +2532093 +526833 +2435434 +2296847 +1055025 +1672170 +2709802 +1711268 +2360150 +1672174 +1183314 +218146 +917705 +1183341 +1829891 +1381721 +1672194 +2475756 +2580463 +2435428 +1497717 +2084147 +1215180 +1777133 +2532089 +1497724 +1497728 +2580475 +1148777 +1352430 +1672172 +2084153 +1325595 +1546920 +2643299 +1546917 +758107 +1829914 +403148 +477925 +1711267 +1398421 +917706 +687360 +526826 +2532088 +1325593 +1325624 +2296875 +1027660 +218156 +1352428 +2580500 +2296856 +2384406 +2532115 +526847 +1405203 +917709 +917732 +611693 +902031 +1829897 +2068821 +526849 +2084160 +218154 +11009 +2084157 +2475751 +1215173 +2038163 +687359 +2153422 +1215172 +1215174 +687353 +446327 +2084142 +2475744 +1497719 +1672167 +2580499 +1829912 +2296889 +1497703 +1797226 +2580468 +1672202 +526834 +1272922 +2580473 +1672198 +2354385 +2038130 +1829921 +2323203 +2475737 +917727 +917733 +1941376 +1914333 +2296871 +1183344 +410740 +2153446 +2323215 +2742711 +84001 +2153432 +917719 +2038135 +2360148 +1672165 +1797221 +2475757 +83992 +2746553 +2038155 +1672207 +1183315 +2475762 +1672182 +1546913 +1974750 +2323297 +2296911 +1325638 +2153465 +1424316 +2787355 +1829954 +1661896 +1672241 +2084200 +1672236 +2008266 +1497738 +2296920 +2323296 +1272932 +2153514 +2580541 +2532179 +11022 +2296905 +403159 +2435473 +1863380 +958869 +2475823 +2643318 +758118 +2015941 +2435479 +1819844 +2011901 +1777151 +2475859 +1424318 +2008270 +526862 +2153460 +1272938 +1183367 +2435443 +1484146 +1960270 +1352440 +2153536 +2296927 +2532169 +2475942 +1161113 +2475815 +2004572 +2475865 +1065250 +1183366 +1819841 +11027 +2532139 +11041 +2580539 +1546977 +2580565 +2296907 +1546956 +1546933 +1762422 +2384436 +1424296 +526876 +2475869 +343592 +2475956 +1352437 +1672220 +11066 +2475840 +1672219 +2475891 +2475799 +2742718 +1546955 +2643324 +1863401 +1424336 +1497741 +2580567 +2435472 +2643325 +2323294 +1546976 +2038181 +334459 +2643321 +1325639 +1829960 +446328 +1661892 +2084162 +2475900 +1829966 +2435495 +1819842 +2475808 +1546932 +2323267 +2282487 +2282489 +1302514 +2532130 +1272936 +403162 +2475827 +2643309 +2323292 +2475875 +1325642 +1497742 +249824 +2787352 +1690305 +1546973 +2435476 +2424967 +1960277 +2475906 +2153581 +2475935 +2435485 +1484141 +2153499 +1272929 +1777145 +1325678 +1829941 +2475955 +1272931 +2435450 +84007 +2435488 +11074 +1672238 +1325644 +2323256 +526852 +2475884 +1546952 +2153519 +1546953 +2532167 +1325670 +2153480 +2532132 +2532147 +2475850 +1661898 +2296899 +2580564 +1762434 +2742715 +2475948 +1148787 +2424963 +1424332 +917746 +2153584 +2153574 +687369 +1546954 +2532160 +1424333 +1777140 +2153571 +2424972 +2475790 +2580573 +11067 +2435496 +2323293 +2296926 +343612 +2421656 +1711277 +2084208 +1547088 +758188 +2282504 +2153642 +2580696 +917761 +2153772 +1183378 +1777171 +1547053 +1424391 +1497768 +2435518 +2153792 +2435522 +2476112 +218180 +2731126 +1497780 +2435556 +2153693 +1497836 +2435554 +2153713 +1148801 +1424405 +1183372 +788463 +2580745 +2435526 +788455 +2296993 +1766002 +2153796 +218188 +2475980 +2476037 +2476064 +2476063 +1148797 +758132 +2323386 +218197 +2476111 +2476106 +2643369 +2323436 +2153711 +343599 +2580663 +1547074 +2580736 +2580710 +2532189 +1215198 +2580721 +2153623 +403163 +2435528 +2476028 +2435592 +2532188 +1183375 +2580729 +758193 +1547007 +477941 +2297033 +84019 +2476138 +2153654 +2153636 +2360164 +1484160 +2476167 +2153664 +2643348 +1546999 +2580731 +2297018 +1424416 +2297021 +2360163 +2424991 +2643355 +218192 +1215201 +1215204 +758143 +2084226 +1672255 +2435507 +2153718 +11079 +1728796 +193767 +1497766 +2435585 +2476161 +1424385 +1497752 +2323417 +1690316 +2580642 +758171 +2681094 +2153829 +2421658 +285102 +1497795 +2435573 +1777179 +2323403 +1424421 +2580603 +1497784 +1484175 +2580734 +1547106 +2068833 +2068862 +2153631 +2425009 +2153815 +84026 +2532252 +2153639 +2476000 +2153809 +334464 +2323325 +1829989 +917773 +1960293 +218202 +1424419 +1863424 +218200 +758194 +2435551 +1272961 +758151 +2476036 +902073 +1497767 +1863416 +2323445 +410760 +2323435 +788444 +339975 +2421652 +2153820 +2297019 +2476099 +788477 +758182 +2476113 +2476134 +2532212 +2580723 +2153807 +2323379 +1777157 +1424407 +1424410 +1215212 +334469 +1497764 +902070 +1547077 +2475967 +2360170 +2435515 +1547006 +84016 +2323302 +1272946 +1405208 +2532206 +477936 +1484162 +2153618 +2323311 +2360169 +2580632 +2068843 +2323440 +1497755 +1272959 +1657766 +2532201 +2580687 +2297051 +2068860 +218164 +2038199 +788476 +1829977 +2323394 +1547029 +2476086 +2580728 +2153698 +1711279 +2323344 +410758 +758138 +1424374 +2153657 +2068868 +1484187 +2476108 +1424382 +2296964 +1547002 +2153652 +2297029 +2384444 +84011 +2435597 +1690313 +2435569 +1497819 +2153644 +2476020 +788432 +1497788 +2296966 +2323351 +758175 +2580673 +1672258 +2580617 +2435583 +758170 +2153678 +2476023 +1711275 +2532228 +2323388 +1215217 +2153677 +1484192 +2435532 +1547107 +2580701 +902082 +1657768 +2421662 +2038209 +1272953 +1027666 +758134 +1405228 +2282501 +788461 +2580672 +1625830 +2580625 +1766003 +1547032 +2323400 +2323329 +2084234 +2323426 +2038197 +2435616 +958892 +1625845 +2153922 +2153893 +1830024 +152490 +958908 +2026936 +2580824 +2384476 +1497879 +193790 +2384477 +2580830 +2580773 +2153892 +2323464 +1728801 +237889 +1027671 +1797242 +2384474 +788504 +2580812 +1497867 +2580800 +2435625 +2854207 +2580779 +2261158 +1497846 +1470220 +907917 +2580822 +1424431 +2625386 +1424438 +2384471 +758252 +2580794 +2435622 +2038239 +2580777 +1103583 +1830023 +51342 +1863500 +2580798 +2425018 +611696 +687388 +2026940 +2297091 +11142 +1547124 +788518 +84066 +1424457 +1547129 +2580814 +2084258 +1077963 +1497874 +1003613 +1797239 +1470217 +2297064 +218215 +1003607 +940865 +2153872 +2854246 +2153921 +712627 +2580766 +2532289 +11114 +237887 +902096 +1728799 +1672276 +152496 +2297131 +1003612 +2153839 +611694 +2532276 +1077964 +1672284 +1424449 +768184 +958909 +152518 +2153907 +84065 +1777195 +152497 +2297068 +958905 +958893 +237897 +51329 +1625852 +902088 +1424446 +2297070 +249829 +1863489 +1424437 +2580826 +907914 +2476173 +2532301 +2323448 +152503 +51348 +51327 +1424459 +2153869 +298544 +2517286 +1777184 +866696 +2084255 +2323480 +758247 +2580813 +1325701 +2153844 +1055046 +1470210 +1470203 +1797243 +1183388 +2323462 +84038 +376101 +84043 +84047 +193776 +237885 +1272967 +2435610 +2026939 +2476216 +2580763 +2435619 +1547154 +2854205 +758240 +2153880 +11125 +152534 +2297120 +1077962 +1497871 +2323460 +866701 +2297113 +2384480 +2004573 +1547136 +866691 +687395 +193782 +218217 +271047 +1519321 +1672266 +2323454 +11130 +11136 +11124 +1830034 +1547147 +866683 +2684779 +758241 +958899 +1797248 +1027670 +1797251 +1863505 +84064 +1728798 +1155097 +2435639 +2425035 +334475 +902106 +2580866 +2580852 +1830062 +1830053 +2854270 +1241889 +497547 +376115 +2868731 +376118 +1103587 +2839550 +687409 +1830051 +2854280 +1039816 +1262783 +1547191 +2854254 +1092013 +2753492 +2868729 +2643391 +2868733 +1914359 +2580840 +1830063 +446358 +2532326 +1484205 +1325707 +2827324 +1830064 +958920 +1252599 +376110 +2261164 +2153934 +2854269 +2580839 +2827320 +788532 +958921 +2827315 +2854299 +1728807 +1424482 +1547188 +2384515 +376108 +2643396 +1644528 +2854256 +866719 +526902 +1863514 +298549 +2153937 +2854271 +1711282 +427936 +1547186 +446460 +1914380 +1863673 +1424505 +193836 +526959 +2739657 +1625866 +446429 +193859 +2643485 +1046120 +526969 +1830084 +84171 +193834 +84150 +2580916 +285205 +1111068 +2384663 +2580995 +84178 +446500 +2532354 +84189 +2038263 +1863539 +650952 +2323556 +193918 +1863575 +1497894 +1352445 +2384551 +1914519 +1863555 +298582 +2384665 +788560 +206796 +2643483 +193940 +958978 +1914432 +84106 +1863611 +298574 +788576 +526952 +285168 +2153949 +84194 +2153994 +2476255 +2297151 +84213 +1728848 +84133 +2643472 +1215243 +2580963 +1137396 +2532369 +1728862 +2384572 +84103 +526930 +526925 +1547228 +1272973 +2154061 +1424500 +2581053 +2154101 +11188 +1302523 +2154107 +2581100 +526958 +2384541 +193916 +2581069 +2581060 +2038262 +84080 +526935 +84144 +1863627 +1547193 +298573 +446405 +2154032 +2323494 +958946 +917791 +2384714 +958929 +285201 +446421 +2425036 +1215258 +193827 +1547240 +1111066 +526936 +446490 +1728816 +51359 +84185 +2581090 +84153 +2323557 +1183423 +866723 +788559 +1914391 +1863576 +1797279 +1914362 +2154058 +193941 +84132 +1547256 +1672291 +446414 +285228 +650953 +2154024 +1797275 +2581056 +526916 +446468 +218249 +2384605 +1215254 +152555 +84163 +2581024 +958954 +2425037 +193817 +1914474 +193846 +84147 +788556 +193929 +152550 +2581106 +1046123 +1647676 +958938 +1863563 +2435642 +958985 +446550 +1547221 +446494 +2581096 +1215241 +2384687 +2580921 +446524 +193879 +1863579 +2323584 +1797264 +84215 +446522 +311831 +2384678 +1863658 +1302527 +1914363 +2323639 +958974 +2643426 +2476247 +2323571 +1863562 +2084313 +285189 +2323628 +2580920 +2384625 +1914387 +193811 +285137 +1387159 +2581103 +526961 +526956 +2476229 +2787375 +84190 +2643476 +1111071 +2154075 +1914508 +2084293 +152539 +2384642 +1183416 +2154044 +1863636 +2476251 +1647678 +1647674 +2153991 +1914379 +152537 +1111085 +2643463 +2532332 +2038244 +2384576 +2581027 +1065266 +2581040 +446535 +2084297 +1215268 +2581099 +1914451 +446486 +193917 +1215249 +2580887 +2416755 +611725 +2581050 +1914411 +2581116 +1863643 +902111 +1547225 +206800 +2532338 +2580881 +446445 +526932 +1863628 +958967 +1914500 +2154090 +2416749 +2753495 +1547197 +2643429 +1914377 +446385 +2580954 +193868 +1863552 +2643437 +193856 +2153952 +2580890 +1252616 +2323616 +1863602 +1183418 +446493 +2581094 +1547218 +1161121 +2581000 +285169 +2360195 +193915 +1728864 +2581028 +51366 +2384691 +2154050 +1914442 +2643409 +1914487 +2643458 +1863603 +2323613 +2323603 +2038249 +11167 +2581098 +1914402 +1252615 +285141 +2154060 +285126 +2323583 +446478 +446419 +84179 +1797258 +1547244 +1484216 +758282 +2581198 +1960302 +1661977 +2476306 +2154140 +218262 +2435687 +2282546 +2476302 +1960303 +2476335 +2435738 +1183440 +2435729 +1055067 +902137 +1547294 +343658 +237915 +768192 +2476290 +193961 +2084320 +2581154 +1797298 +2297190 +1661944 +2435683 +1087870 +2476358 +2297201 +2154128 +343650 +2476282 +768193 +1661947 +1092019 +2038296 +1424551 +1497913 +1065273 +2435717 +1055077 +1059498 +611731 +2154141 +1424529 +2532401 +343653 +11203 +758275 +218265 +2297184 +758299 +237914 +2476283 +1766021 +1711304 +2425038 +2435745 +768191 +2384743 +2297211 +2435757 +1547325 +526981 +1252636 +2084333 +2038288 +2476347 +2084340 +2360202 +1547326 +2435702 +1161136 +2084329 +2476317 +1996478 +758301 +2084321 +2154136 +2476363 +1830096 +1497924 +2154247 +11209 +1262785 +2746561 +758311 +902141 +1547297 +51380 +2084330 +2384724 +2435752 +2581199 +2435684 +1661937 +2476338 +2038277 +526982 +237912 +902135 +902112 +1424531 +2581204 +2282548 +2476330 +2297174 +1547262 +2000027 +2084324 +2297193 +2384728 +2581147 +1719821 +11211 +1711300 +712646 +2532420 +1547289 +526983 +2154149 +1065272 +2297185 +1484211 +2154209 +1161132 +1547284 +902121 +2643510 +2384733 +2154256 +1137415 +2476320 +902115 +2435667 +1547259 +2581195 +2154187 +2154115 +2154168 +2476276 +2476275 +1183438 +1661969 +1424571 +2154186 +1161140 +1137411 +465181 +340007 +84284 +1547398 +866731 +194031 +1381733 +84326 +1394478 +334496 +2003306 +2154269 +415672 +206837 +1662013 +788594 +1401001 +1777256 +194045 +194040 +2297306 +1055104 +194041 +1960306 +1065303 +902181 +1704440 +1625910 +2476463 +415711 +1142382 +1830118 +193978 +1625888 +152572 +1625887 +1519370 +959004 +399324 +1137536 +419260 +51427 +11221 +446571 +1768915 +11228 +917819 +1863702 +2787433 +2435897 +1766060 +2787444 +1625918 +1768918 +1948085 +84262 +2532428 +2154417 +334487 +271062 +2787439 +958997 +399327 +1814887 +1497980 +2435920 +1797321 +415724 +1148825 +2297218 +152605 +419285 +1137444 +731687 +2476373 +527052 +1498000 +1497970 +218302 +1055093 +194000 +2019977 +237979 +237990 +1325727 +237955 +84271 +1662010 +237922 +1137449 +340016 +1625928 +2435759 +2154345 +1690351 +902165 +1161146 +1497956 +1302528 +1863715 +340011 +1777211 +1137470 +712661 +611808 +2084365 +1215285 +527003 +1055081 +1863724 +2104024 +2435909 +1672323 +788592 +1352448 +2154415 +1974759 +1625886 +2297228 +415683 +490717 +758319 +218278 +1137522 +2297304 +1547364 +2435859 +1137481 +2476393 +419268 +2154283 +415721 +1863732 +2323692 +152660 +2282568 +415643 +1797343 +1661982 +446559 +84251 +1497993 +2297289 +415692 +1547392 +712679 +2019973 +2476442 +1682737 +2476391 +1662004 +2154300 +1352449 +238000 +2435830 +399307 +1672304 +2476403 +1073587 +237986 +2297261 +2038317 +2435868 +2742729 +84263 +1662021 +527031 +1155113 +1682724 +940891 +527019 +1183451 +902192 +1405238 +2476406 +1547378 +206827 +527044 +84321 +2003303 +271080 +1547343 +218282 +84257 +2425093 +193995 +1215280 +11242 +2435941 +917827 +2297221 +152620 +415630 +2435775 +1969056 +218289 +477955 +753414 +399315 +1777206 +2435928 +84306 +1137544 +271075 +1704443 +2476388 +218270 +527034 +238003 +340024 +206830 +415626 +611771 +1777235 +1497930 +1142394 +712687 +1497985 +2435829 +1690348 +2435947 +194006 +218292 +1405240 +1547414 +2154390 +1065285 +1497938 +218269 +1497936 +788607 +2476443 +2038312 +206822 +747816 +1497929 +1797330 +1863736 +687464 +1137476 +84353 +2261187 +2384748 +2323711 +152650 +1142391 +415636 +1797347 +2435809 +1814897 +399322 +1398434 +194004 +2154316 +747812 +611809 +2261180 +788611 +1497940 +1137526 +1241894 +152588 +2425062 +1137521 +737969 +237989 +958991 +206831 +1690334 +340038 +1941385 +2581210 +1704442 +1682731 +1547384 +2297249 +1084076 +2425086 +2154387 +1497962 +51384 +152600 +152628 +687450 +527063 +2787437 +2425069 +2435908 +1148809 +1797308 +2476418 +1405237 +340021 +687433 +2839560 +1183444 +1065280 +902175 +2476415 +84317 +11258 +1241896 +1405241 +687445 +84259 +2787416 +1003633 +2297278 +1497946 +152648 +1325722 +2476408 +917825 +1424574 +1065300 +1690342 +958999 +1497997 +1863709 +2154401 +2154304 +415690 +1777208 +1148824 +152665 +2435915 +446557 +152596 +1863716 +1768909 +2476441 +334494 +2581218 +1424578 +1690336 +1777265 +1662012 +2154364 +1777212 +51407 +1777237 +419262 +84308 +415679 +1137432 +334497 +2084384 +1863695 +1142395 +1766036 +1777243 +2787420 +2297280 +1797318 +1863721 +1398433 +1137422 +1183447 +959001 +51432 +527072 +1378005 +11263 +1672356 +1830142 +51457 +2297312 +1988198 +1830153 +527108 +2154445 +2581284 +1625953 +2154525 +866774 +1830128 +2261225 +84373 +1183459 +1003674 +194073 +2297326 +959018 +2435986 +611876 +1766096 +2753501 +1672342 +611828 +1863746 +1424616 +399342 +1155126 +2084449 +1690357 +2154553 +866768 +2323779 +611850 +866777 +2154425 +2384763 +84372 +1690365 +1065336 +1625956 +51464 +611822 +2436035 +1183461 +1768922 +2323735 +2384762 +527067 +2297393 +1547416 +1142406 +1625955 +917839 +1768931 +1183457 +2360208 +2154492 +2425111 +687480 +2084413 +2154440 +1547417 +399357 +2297334 +2384769 +611866 +465226 +2581285 +1766070 +1797369 +712721 +427956 +1766071 +2517287 +712699 +1728883 +866776 +712718 +2084447 +2532466 +1137588 +2323785 +399352 +206847 +465223 +2154530 +1814901 +2154481 +866760 +2435973 +2323731 +1547452 +206841 +747826 +959041 +1690358 +1547438 +2154465 +611811 +2742730 +2154551 +788646 +2297367 +206857 +334503 +1111092 +2435978 +1519376 +2581290 +747827 +788628 +1424592 +1046130 +152676 +1519409 +1830161 +1547449 +2154495 +1728878 +354411 +1302530 +788647 +1519413 +2282620 +2297330 +1401004 +1797362 +866787 +51450 +1519375 +1662039 +2435970 +2154502 +1137582 +2297315 +1003658 +1325737 +1498018 +1777281 +2384774 +2154589 +2476492 +1241912 +1728875 +194081 +152718 +1547425 +1662057 +1766077 +2323758 +1662063 +2084430 +1148833 +1863760 +2513254 +51455 +2261217 +737986 +238061 +2384760 +866778 +1766075 +427944 +866784 +1519408 +194080 +2323727 +1863758 +2154576 +902223 +1293221 +1003664 +2062953 +1325735 +2154543 +527087 +194069 +1672335 +2154463 +465215 +1777286 +2360206 +152679 +1625935 +2476516 +611827 +1183456 +2154575 +2425105 +1201195 +2282626 +788644 +2323775 +2011911 +2323782 +2084434 +2476472 +1470252 +866773 +399360 +2323772 +1766069 +1498015 +399368 +399381 +152687 +1902393 +611847 +152675 +2038338 +2297366 +2476470 +2154592 +399339 +1003669 +2154449 +1766085 +2154555 +334506 +1766082 +152715 +1662038 +1137572 +1325736 +1830159 +866779 +2323755 +866772 +1625972 +427954 +1863764 +902219 +2435982 +399378 +436073 +206863 +2084429 +2360224 +2643521 +51470 +959103 +2323799 +1936176 +2827345 +1003689 +2154647 +2425123 +1863829 +1647679 +687507 +194093 +2297422 +84450 +152739 +2787553 +2581321 +2787579 +1387167 +2282656 +1863831 +866814 +1914535 +399398 +152757 +84428 +1625990 +2019988 +611933 +465253 +2323788 +490732 +2323809 +1547481 +1830187 +1498044 +249870 +2787581 +2532501 +1547510 +1498073 +1711332 +1381761 +1902417 +1168072 +1241946 +2827376 +1902410 +2297428 +1914538 +2476547 +788666 +11300 +2261233 +1547520 +2581358 +2532499 +1241926 +2360217 +2476558 +1662071 +465304 +1103591 +1065373 +687517 +1055138 +465254 +465294 +1814918 +2581324 +527115 +436095 +1768940 +747838 +1994988 +1424657 +1381742 +737998 +465314 +84444 +415733 +490759 +1766111 +194119 +2261228 +152748 +271095 +2436070 +1625986 +1830168 +1498067 +2297420 +1662068 +51516 +2513256 +788661 +11298 +2436043 +490720 +2581322 +959054 +2581352 +712734 +611884 +218334 +2581381 +271111 +2513261 +1519423 +1547475 +1830170 +2323814 +1797405 +611890 +611895 +238094 +2854315 +866810 +2476529 +2068887 +359093 +1974770 +436084 +1241953 +1201232 +1073615 +152761 +1398440 +1498061 +1682770 +2154622 +2154734 +2581372 +1863788 +2323789 +1396766 +1003692 +1936172 +747839 +84437 +194126 +2854306 +1055136 +490727 +2297406 +2787604 +465255 +687510 +1498047 +2827397 +2436082 +465257 +2787559 +2436053 +1175734 +2384797 +2154643 +446635 +1672374 +741334 +788685 +1055125 +1863819 +249855 +2581318 +490740 +2297405 +2154611 +2436074 +2297431 +11279 +527142 +527146 +2787490 +490744 +1902418 +2476573 +2787459 +2476549 +2581310 +2581296 +2068891 +238088 +2581365 +788678 +2297414 +2323804 +712747 +527135 +465325 +1863783 +2581375 +1830214 +1863832 +465289 +1055123 +477959 +465292 +152746 +2476536 +51513 +747847 +1797385 +1142424 +1498077 +446631 +2154721 +768203 +1519421 +1137611 +1690391 +1711334 +2360222 +788676 +1830179 +1498080 +1728892 +415737 +1065364 +2154657 +465283 +1814920 +1065377 +1766118 +959085 +1183483 +2384799 +866817 +2084477 +1470259 +2827364 +2476531 +2297425 +1065359 +2753506 +84455 +1262795 +415749 +1863815 +1797400 +611914 +788682 +2436039 +1055137 +2868740 +1059531 +1948087 +1777293 +687496 +1201200 +1077984 +490752 +1161155 +2154603 +1845699 +2476569 +490761 +788657 +2742733 +2753504 +1103590 +1175730 +1293223 +359094 +1830197 +1547458 +1396763 +415750 +238065 +359091 +1055130 +747848 +1498045 +194108 +1065357 +1201203 +2827394 +737997 +465286 +249865 +741335 +1662066 +1845702 +2154666 +465316 +2084500 +527128 +2436037 +1863830 +2532485 +2827366 +2827389 +152740 +758332 +238121 +2154844 +1797424 +1914588 +2476592 +959108 +2436096 +1797441 +1830221 +1027690 +2154811 +152795 +1405285 +218350 +446680 +2084512 +2154881 +2154826 +959129 +1065398 +51563 +2476637 +446686 +2154861 +2154817 +2154894 +687522 +1914551 +2154840 +2384820 +334566 +1137618 +1797463 +2154871 +2323823 +2154824 +2581440 +2154827 +51541 +1547532 +446696 +1914578 +2532508 +2261237 +446703 +364921 +2476641 +2038356 +2323847 +1003702 +1405281 +364924 +446698 +446651 +2360232 +2581422 +741346 +1547561 +1498093 +1111117 +2084511 +2154848 +2787606 +2787605 +2709826 +1065411 +1065402 +611944 +2436088 +1065386 +194141 +152776 +334561 +2581397 +194137 +741348 +446712 +1183484 +2721680 +741338 +611962 +2581427 +2261238 +446645 +84481 +2154868 +527155 +1777298 +1405274 +902247 +1111113 +446663 +2643563 +2323827 +11317 +2425128 +611950 +84477 +2154842 +2323837 +1797428 +51545 +51550 +446706 +2476624 +1547548 +959128 +2323869 +1662074 +2581485 +2581443 +446702 +611956 +1003708 +2154835 +2436113 +2154747 +2154752 +2581509 +2154774 +194143 +2581476 +2323853 +2154765 +446675 +446705 +712752 +446658 +1470268 +611959 +1519430 +2154818 +2323845 +51552 +2643557 +51542 +334555 +1914561 +446665 +84462 +2581446 +917858 +194131 +2581458 +959119 +2532512 +1498092 +2476625 +712754 +2532514 +2154883 +2154886 +2476607 +1711343 +2581460 +2476589 +1325752 +1547569 +1672384 +1092036 +1644539 +2753541 +1498122 +84508 +2282669 +1902422 +1381768 +2581525 +741355 +2154959 +1424693 +2532542 +2476650 +2753528 +1728928 +1672386 +1498130 +1498135 +2581561 +1547566 +959164 +1644542 +11329 +527171 +2476692 +1830233 +2297465 +1183496 +2154927 +1325753 +1863884 +758351 +1325762 +2297462 +1381765 +2513265 +1547568 +1302532 +238124 +2643579 +768209 +2062960 +1325770 +1547573 +1424707 +2028563 +1719825 +2742739 +84490 +2581527 +2643571 +340067 +2154926 +334577 +611980 +1398443 +1424715 +2753543 +1644538 +152812 +84502 +2015969 +2384840 +1272984 +2360241 +2436131 +2746569 +2476679 +84505 +902263 +84497 +1325754 +527180 +1672385 +2746570 +1547580 +1547591 +2581519 +527177 +2436158 +2019989 +334575 +1547586 +2739662 +2038359 +2282674 +527182 +2154937 +2436143 +902264 +1293225 +2476697 +2154958 +1960323 +11328 +2476674 +1711347 +2581526 +1498113 +2731131 +2154994 +2581520 +1325772 +2581551 +1547578 +758359 +2297466 +2155086 +415758 +687569 +1273000 +1797524 +343701 +2436194 +1996517 +2532552 +415803 +384484 +419292 +866884 +2436179 +2019992 +490782 +152838 +902325 +2084565 +712769 +940925 +1343746 +2000038 +1682811 +866852 +712768 +612031 +687539 +465354 +1547597 +1547604 +1215346 +2297538 +490795 +1902424 +1055166 +2155018 +1547620 +902335 +1996505 +1830254 +194158 +1137642 +1424721 +2323915 +1073628 +1626022 +1498166 +1547626 +2753547 +2155138 +768216 +1662104 +527239 +2436166 +415833 +612012 +2261248 +788779 +340076 +2155025 +206892 +2297477 +1797500 +1547666 +2155130 +902299 +1137660 +194195 +788762 +490779 +788756 +1902425 +866872 +1814938 +2323924 +490789 +2155043 +2155112 +2476767 +194192 +1155142 +2436231 +788726 +712792 +1797516 +902322 +611993 +2297519 +959190 +2323907 +1168075 +1396770 +1398448 +1672399 +712772 +2297515 +1547630 +2155069 +1073636 +1161182 +1719826 +1077988 +340080 +2155114 +194171 +2351897 +1424737 +917866 +1672415 +1682803 +2476723 +612010 +419293 +1768962 +2297495 +2476877 +1424724 +1863895 +1662128 +194178 +194177 +866860 +218370 +2155093 +612055 +753457 +1797536 +1704457 +477968 +527194 +419316 +51581 +1241976 +1547631 +1547680 +340092 +1547651 +1626021 +2155103 +1424739 +446732 +959180 +959181 +1137629 +2581589 +1262807 +1863914 +465349 +1863943 +1777349 +1626031 +1672411 +2155030 +1484269 +2476796 +1863955 +238141 +2155051 +1672409 +1055158 +1766127 +611988 +527193 +1003721 +152858 +2155067 +194163 +2581598 +1391968 +419291 +1777340 +1797495 +1830242 +2038373 +2425138 +1863888 +1498168 +2297542 +376186 +415829 +2476808 +1325787 +2868766 +1728932 +2155131 +1215331 +2155071 +2787614 +1777322 +1547699 +768214 +2155101 +611985 +2476742 +1547681 +1626061 +2436208 +902312 +1155159 +1325808 +2155106 +1547661 +788757 +2476802 +84522 +1241969 +527261 +415808 +2581591 +477969 +527200 +902313 +788729 +2476720 +1704454 +1201245 +2019995 +753450 +1547686 +2155063 +1819855 +1814956 +238156 +2425140 +2003310 +1137655 +51584 +1682794 +2297554 +1711352 +1996501 +2476812 +2084583 +2476828 +747857 +2436160 +2084560 +51582 +1766132 +1003727 +1519445 +415820 +2155075 +902311 +1969071 +1626066 +2155083 +2436175 +2476803 +1519441 +902333 +2155029 +2581590 +2581603 +959205 +1863899 +1863926 +2155049 +1161177 +527249 +2476851 +477971 +427970 +1777324 +2155033 +1547690 +788725 +866881 +1065427 +788767 +1547659 +415831 +866870 +2476760 +2476766 +2297511 +612042 +1059546 +1547636 +2532548 +1470276 +1148844 +2155140 +2476816 +194196 +84564 +1996518 +194170 +1797534 +490768 +2084563 +1626051 +1766149 +1704452 +1547723 +1797489 +527229 +1662103 +2351895 +1988204 +1547724 +1325798 +788724 +1797508 +1547710 +1797487 +1055156 +1059559 +2476833 +788759 +788740 +465366 +1682814 +340070 +2476868 +2323918 +1424736 +340069 +465346 +415788 +1148841 +2155116 +84548 +2476844 +1863925 +2323958 +1148856 +1391972 +1547754 +1936182 +419334 +84597 +2155201 +1059561 +2476982 +1797579 +343705 +1137680 +2425156 +2476958 +1863966 +2476940 +1065472 +2517295 +959214 +1498175 +1381783 +376198 +1797567 +2753563 +2476976 +1059564 +419342 +1863960 +1766174 +1682827 +1387179 +2839568 +1302540 +1424754 +2476995 +2839572 +788808 +1424757 +2476957 +1065459 +446735 +2581608 +1728940 +1137688 +2155178 +2084623 +2155173 +1547737 +527275 +1424753 +1484272 +2436276 +84589 +1398452 +1797560 +1065467 +1352457 +2753557 +1073653 +1797582 +343714 +1073657 +1215351 +1055172 +2282690 +1797538 +1797543 +1797541 +2021974 +2839564 +2532560 +959209 +1797569 +2155195 +11344 +11352 +343718 +2753559 +2155208 +2476930 +1547767 +84586 +527273 +419326 +1547772 +1797552 +249900 +1547741 +2477007 +238171 +2476936 +1391971 +84590 +2436262 +1797562 +2581609 +1672423 +427976 +2581625 +1498183 +11354 +416002 +340148 +747858 +415880 +2854479 +416000 +340152 +490815 +1768977 +1155176 +1797652 +1155182 +415971 +1168093 +399524 +152880 +1396785 +788828 +415862 +1797620 +1396778 +1797605 +959221 +917908 +2581627 +1662137 +2436291 +399514 +2787645 +194211 +399465 +340129 +2787630 +1797637 +1547788 +2436284 +376200 +1815008 +1003748 +1777367 +340132 +1241988 +343733 +399498 +436106 +2581623 +1073676 +2020007 +2477102 +399495 +1073662 +415942 +1682836 +527300 +2625415 +2854450 +1797607 +399520 +1161203 +2477032 +1148871 +1137711 +2787634 +2155214 +1396779 +1168094 +2297592 +1498180 +399483 +2155226 +465385 +2868778 +612070 +917911 +1626123 +376199 +238185 +415991 +1073672 +2477111 +415882 +1766191 +1059568 +1065480 +194214 +917906 +399447 +2477034 +2011924 +399533 +2323978 +612089 +1073680 +753469 +1155162 +2854371 +419349 +866896 +238180 +271148 +1142459 +152882 +959215 +490808 +2323980 +436107 +1398457 +1777381 +1704464 +2854369 +1352460 +1161215 +2854392 +2155228 +2297582 +1137713 +1391978 +152862 +1766196 +1547815 +753487 +490812 +1519453 +1161211 +2477113 +1777380 +1087877 +415973 +415895 +415955 +1768986 +2854447 +788827 +340136 +2854469 +1682829 +399530 +1148862 +1470285 +1814977 +2155210 +712800 +1547797 +376208 +1161205 +1155170 +747889 +2513285 +340159 +419346 +2477075 +1155174 +1084096 +940933 +1003749 +1626115 +2477019 +2477040 +2477011 +866902 +399509 +1401027 +2854337 +2477068 +1690413 +1092043 +1137743 +2436307 +1814971 +1137694 +1175741 +1155180 +238187 +2003320 +51590 +340103 +1142445 +2155238 +415997 +1402246 +1168082 +2854334 +1003752 +1142463 +1155172 +1682830 +612085 +399474 +2868775 +959217 +343744 +1704463 +1815025 +51594 +1142465 +1155198 +2297610 +2854452 +1902434 +2854430 +11358 +1626108 +1547798 +1405297 +2297586 +446736 +2436305 +2155239 +1215364 +238179 +2477028 +1142473 +1137748 +1155185 +194223 +1626124 +238177 +1814976 +490824 +2155233 +2155304 +1547902 +1547868 +2155307 +1137810 +1864029 +1728950 +2155296 +376226 +1252663 +527340 +465387 +1863988 +218432 +1378026 +917927 +527326 +1215408 +2477144 +399559 +2436390 +1766204 +2011927 +788848 +1055184 +376212 +2532583 +1690429 +2297638 +2787658 +1183517 +959252 +2155322 +1626132 +1498195 +194244 +1325837 +2155349 +721854 +11363 +446764 +1711361 +1960345 +2155342 +2436389 +687587 +1065497 +419371 +1148877 +612102 +1242018 +2324008 +1394500 +2084642 +917933 +218435 +758397 +527306 +2155280 +416019 +1547898 +527319 +1137787 +2028577 +1547852 +1864016 +959287 +612136 +527347 +1242023 +1766203 +1242024 +2532563 +1864008 +2532565 +490837 +2155320 +2084654 +1547847 +340172 +1215412 +1914624 +959259 +1424807 +1381799 +2155335 +1797663 +2155303 +465404 +959290 +1424774 +194249 +1690426 +2084644 +152899 +1215393 +612118 +738022 +612134 +1142485 +1830293 +477989 +238213 +612121 +1662148 +1424765 +427988 +1547883 +428000 +738018 +2155279 +2155301 +1424794 +1137802 +84632 +738019 +741371 +1547928 +1498221 +218406 +687593 +1027696 +194245 +2436398 +2746578 +477999 +1547936 +1902438 +1662150 +427987 +1728947 +1215379 +1424792 +218409 +1662149 +238229 +2155262 +2155269 +1215380 +2477172 +1215414 +1704471 +1498206 +2731134 +1252662 +2323986 +917946 +2015990 +416032 +2436378 +2155283 +1242008 +1003766 +2787673 +1215401 +446787 +2477124 +11362 +2436367 +1863996 +2787684 +1948091 +2532570 +446750 +1626136 +1155209 +399538 +2155298 +218411 +1728948 +51620 +2787686 +1672443 +2436363 +2436365 +1325833 +340164 +1215419 +51611 +427994 +238206 +788839 +2436375 +1055179 +427990 +1547907 +2787659 +2436404 +1498212 +2436357 +2581653 +1168103 +446790 +2384903 +1424763 +1215413 +1662168 +152907 +1398461 +334611 +2787672 +959249 +2436377 +1262817 +687583 +340174 +238204 +376213 +1387184 +1682849 +334617 +2384890 +2787669 +1797682 +917944 +1662146 +2038390 +788837 +1626151 +2477145 +788836 +2384897 +866931 +1498232 +2155345 +1690434 +497559 +1155210 +399543 +2084637 +238209 +2581662 +218414 +1325832 +340177 +311861 +1055182 +1766206 +2581684 +2384899 +340181 +2517299 +959282 +2015992 +1672452 +1830286 +1405302 +612111 +1073691 +218459 +1777430 +2839574 +1845719 +1777398 +2839628 +753518 +2839883 +1137847 +2155456 +612148 +2839968 +1073696 +612178 +2155453 +747940 +527361 +2155383 +2839975 +2839773 +2839776 +1777409 +340198 +2839671 +1155222 +2839690 +2839841 +1325844 +1769007 +376232 +194259 +1137825 +959293 +527366 +2839783 +2477201 +2477212 +2839917 +1424817 +2839681 +416049 +2839850 +2839955 +2155413 +2839960 +753513 +1137835 +399568 +152938 +2753581 +1325842 +1777407 +2839619 +2084660 +527358 +747936 +2839640 +2839893 +1864099 +1142499 +2839610 +2839784 +747908 +340188 +2839724 +1073689 +2038403 +612168 +2839879 +218467 +2753579 +2324018 +1864046 +2155436 +2839956 +2839868 +446810 +2324015 +2839946 +399574 +238244 +940952 +2425171 +1396801 +1055199 +2839647 +2742749 +1777411 +612166 +1777434 +1242043 +1215424 +2384911 +2011931 +416063 +2016005 +399571 +1391992 +2155380 +152944 +747918 +152933 +2155432 +753516 +2839674 +2155449 +2155451 +1401042 +721859 +1137826 +465428 +2477209 +2839778 +446799 +2084661 +2787689 +2477174 +712818 +152937 +2155424 +1719832 +2839914 +747945 +1424812 +416059 +238243 +1073694 +2699300 +1424814 +612174 +340186 +2839961 +747910 +2297646 +1073692 +2477232 +753517 +1830314 +340182 +1396803 +1401052 +2839729 +2477198 +1777428 +1830302 +2839790 +1148895 +2839891 +2839933 +152935 +1682862 +1394512 +721863 +2839935 +1137819 +1682863 +2839919 +753503 +2477178 +2839932 +2753589 +612146 +2839767 +1242032 +2839577 +1797714 +1662174 +419376 +1864057 +399569 +1672456 +1830301 +1864061 +2839851 +2155403 +2839931 +2360250 +2839626 +2839824 +1815042 +2839742 +687604 +738035 +2839657 +238262 +1215422 +1394503 +1396794 +2839629 +1626162 +1391999 +747904 +2839589 +1183543 +1396804 +2261279 +721858 +446802 +1864098 +2839910 +1815044 +2839877 +747925 +1391986 +1682867 +1325843 +747931 +1396799 +2155390 +1155216 +11382 +2839705 +2436424 +2840074 +917971 +866976 +2532598 +1183563 +2581699 +2532637 +359150 +2324034 +399607 +1626170 +1142514 +152989 +902389 +152988 +465471 +2477256 +359156 +2436447 +359144 +1168107 +2643617 +1073713 +758400 +1864129 +271166 +399595 +2840059 +1215443 +465478 +1003783 +2155481 +1215447 +1830334 +1547960 +1682889 +2840036 +1914637 +416095 +1396806 +2436441 +1769013 +2425181 +1830330 +436126 +1769023 +1682887 +376257 +1626192 +1662192 +2028605 +1148907 +2028614 +1830353 +249920 +1766246 +478012 +2532629 +399636 +1864136 +1175760 +2840056 +2581705 +1137877 +1777447 +1769016 +1124617 +2581709 +1059605 +1547954 +1201296 +2581702 +446824 +399601 +2477266 +1519471 +1137870 +2425191 +1766248 +866952 +1424821 +1547983 +51647 +428015 +2084674 +2840080 +866977 +446815 +1155233 +1059599 +612179 +1381818 +1201295 +2324051 +1864121 +1201291 +1797746 +1242068 +758401 +2477254 +1728962 +2155541 +2643618 +1519477 +1148903 +1325852 +1815060 +1498252 +1073712 +1519470 +1201288 +11384 +1766258 +2581695 +2532627 +428013 +1769022 +428017 +51644 +249918 +1864158 +1065524 +902381 +1672480 +1830344 +2436443 +1864131 +84685 +206922 +1682885 +1682875 +1672470 +1830326 +1682873 +1183554 +1777442 +2155503 +1830331 +1343757 +1662186 +2532593 +2477250 +1142507 +2581723 +271160 +1137868 +2840082 +359173 +1682883 +2532601 +959316 +2840042 +2581701 +1059598 +1065520 +1672467 +2532621 +1201297 +1059604 +866975 +2084670 +1498253 +2028602 +2028582 +2425180 +465460 +416085 +1936192 +1059606 +1183560 +465461 +2532619 +291009 +1711380 +340207 +399598 +2532626 +917961 +1690441 +1547979 +2840005 +2477252 +2532617 +1797729 +1815057 +2155522 +2840060 +152968 +1626165 +2581710 +376244 +1201289 +194277 +1682871 +2155496 +1864168 +2532660 +1547967 +2261283 +2532606 +2436449 +194271 +2532658 +1864135 +2436423 +1055210 +2436550 +902437 +2155711 +428045 +1830392 +902448 +2360259 +334645 +1728970 +1662217 +1672489 +2532681 +2581744 +2155730 +1424849 +2038411 +1766276 +194286 +2068905 +902424 +1777474 +788919 +2477318 +249923 +788898 +2155724 +1484288 +11390 +2155682 +2155678 +2282747 +1137950 +2282769 +2155631 +1171724 +1137906 +1548040 +2297704 +527376 +2038422 +2324076 +758440 +2477370 +1797754 +2084699 +1690473 +1830407 +1498278 +1662234 +902410 +1864193 +1424863 +959343 +2477324 +2477406 +1864206 +2282773 +2084720 +1183582 +11395 +902458 +1171718 +2279736 +2279720 +2279723 +1548082 +11400 +1548085 +1065529 +2068906 +1548074 +2155718 +2084710 +11407 +788933 +1830384 +1777455 +2581760 +2477400 +1662219 +2477391 +758416 +1662198 +1424846 +1662231 +1830393 +1777461 +2279734 +1728971 +959344 +1484287 +902446 +2436578 +1830372 +2324084 +2155695 +2436571 +2436587 +428047 +1766279 +1405306 +2324094 +758435 +1148915 +959354 +758410 +1797779 +1548066 +788926 +2416774 +1830368 +2436467 +1137927 +2581748 +917986 +1672502 +1137940 +2477368 +2477375 +1137939 +2436576 +758425 +1797769 +2643631 +1662230 +1662221 +2643627 +2324055 +758405 +2477285 +2436536 +2084742 +612192 +1662222 +1797792 +1830380 +1548013 +2581797 +1690451 +866982 +2436588 +788886 +2297716 +2436480 +788942 +1215469 +2297687 +1864232 +1864208 +1864210 +1405320 +2477298 +1137922 +194289 +1392007 +2155623 +2436579 +2004593 +2425216 +959346 +1690456 +758411 +1864228 +788891 +866986 +194288 +1548041 +2477433 +2436494 +1690455 +2155592 +1424841 +2477430 +2084716 +758426 +1171714 +1797803 +959341 +2297694 +2436590 +2000048 +1424872 +2436468 +2436522 +2324082 +1065528 +1548091 +1797764 +866984 +1548018 +1864179 +2581778 +1273019 +788892 +2155622 +1864218 +959345 +2425222 +917981 +1498267 +2436486 +1171720 +2104047 +2282761 +2477367 +84698 +1424839 +2581727 +1728985 +2477424 +917972 +2324116 +1830399 +1711391 +2581752 +1215475 +2324090 +194279 +1548038 +2282752 +1137938 +902450 +1830379 +2038423 +1830378 +1424861 +2477297 +1405347 +2436552 +1392012 +2282745 +788889 +788881 +1424865 +1325860 +1711387 +902413 +1381821 +1672517 +84722 +2155761 +1797757 +2581790 +2436546 +1864225 +1797784 +2084723 +2155620 +1728988 +1055229 +2436672 +2787721 +1797870 +527408 +1548131 +2787754 +1797833 +758454 +2084751 +2279741 +2020021 +2787720 +1424905 +2854505 +2155832 +1797854 +1815063 +2436694 +2155823 +1055243 +1815062 +2436625 +1424898 +2297723 +2279738 +1797823 +2787715 +1424903 +2581847 +1498311 +1548111 +2581851 +1092054 +2436624 +2477467 +1137958 +1378045 +2827428 +1766324 +2581832 +84731 +465482 +1155241 +2787760 +194305 +1055236 +918018 +2436674 +194314 +11412 +2282793 +2425230 +2436676 +959359 +2084769 +2436677 +2297745 +902464 +1864245 +2155800 +1378046 +11439 +1155243 +2436666 +1815072 +2854524 +1498334 +1797858 +478015 +2436726 +2436713 +1777493 +2477443 +1797866 +238283 +1769032 +11432 +2436638 +2477469 +2155796 +1142518 +1161253 +2581872 +2436721 +2742751 +2854533 +527398 +11418 +959379 +490882 +2581841 +1183584 +2787711 +2436635 +1168108 +2827409 +218483 +2436659 +2436657 +1548102 +11427 +788973 +1065530 +2084755 +1797831 +758472 +2436692 +2436707 +687630 +2787755 +2854532 +2436685 +1055224 +2155830 +1548104 +527404 +1797819 +2155798 +1137954 +1484297 +758457 +2155789 +1073716 +2787724 +1137969 +2787703 +1766325 +2324126 +687625 +1484290 +1215484 +2279748 +1548121 +1137955 +2297757 +1183588 +959364 +1797828 +2787702 +2753601 +416114 +902467 +1830425 +2787757 +2297735 +1055231 +1960355 +2827423 +2477454 +1797846 +2425235 +2155813 +2436658 +1766323 +1065535 +2282823 +1548157 +1065554 +788997 +419399 +2155971 +2477535 +1830434 +2840103 +2297761 +2282828 +2068930 +1424976 +1936197 +1065566 +2297763 +1424995 +2155890 +2477516 +2155837 +1766333 +2155973 +1065561 +2436769 +1424922 +1864270 +1424944 +359177 +2155963 +1424979 +2068933 +194342 +1073721 +11443 +2532704 +2155892 +2155921 +478032 +446833 +2425252 +428069 +84748 +478026 +2068932 +1325866 +1766347 +1148936 +2787763 +1424917 +298609 +902492 +2155930 +2155972 +918035 +428059 +902481 +490889 +1815079 +1148924 +902493 +1548148 +2155951 +416124 +2155975 +2016012 +959403 +2297806 +1325870 +1424966 +2477492 +478028 +2477533 +2155855 +399670 +1672544 +218500 +2436786 +2155882 +1424948 +2155841 +2436790 +1424987 +2155838 +2581880 +416122 +1797924 +194345 +1055261 +902501 +2038458 +1138006 +1548168 +194341 +1864278 +2477572 +428060 +2425236 +1797916 +194339 +1548139 +2699312 +2477514 +2517318 +428071 +384491 +2436825 +527414 +789006 +2297764 +1183592 +416118 +2155863 +2436754 +1766328 +428079 +1424980 +343770 +1424960 +2477495 +2477562 +1864275 +1055268 +2425238 +1065549 +399666 +789011 +2297762 +1690522 +2282821 +1769033 +2155976 +2155878 +2425255 +399674 +2297777 +2155858 +788985 +1424935 +1387192 +902489 +788984 +1797927 +2477559 +918033 +1424951 +1470318 +1690511 +1273025 +2477486 +478034 +1424982 +399659 +1171730 +194325 +1766337 +2477498 +1766329 +1498346 +2477494 +2477569 +1766350 +2840111 +478035 +1830442 +2156006 +789021 +218502 +1273034 +2156022 +194353 +1728994 +527427 +1797934 +1498353 +2324137 +1672548 +2840109 +2532715 +2324132 +2156023 +2084825 +2155988 +497565 +902508 +1424997 +1183595 +1728993 +2436836 +1711398 +218503 +1425009 +2581911 +2156010 +1830443 +1425007 +2868808 +298610 +1148937 +11446 +1161258 +2156000 +2643726 +2787864 +2643721 +194363 +2581957 +250047 +291010 +1864422 +249985 +84788 +218554 +2643689 +2581952 +249949 +1425014 +768226 +1914670 +1498372 +11532 +527438 +1252703 +250069 +527440 +2787825 +1215520 +250002 +2384972 +354440 +2787780 +1830478 +2477624 +384499 +1498378 +446857 +1078027 +959429 +1548208 +153013 +1864429 +2787866 +1830462 +789040 +2324235 +2156160 +902518 +218525 +2787786 +1548268 +2156044 +1914708 +84851 +2156043 +2156197 +758491 +250095 +2384989 +2787784 +1065585 +2581919 +1706942 +2581921 +1046142 +789066 +249952 +1078016 +271171 +2038484 +2324245 +11487 +2324189 +1425041 +1864413 +2643744 +1706943 +789050 +218518 +250063 +2385032 +1777525 +285249 +1498380 +359178 +249998 +1864418 +2156049 +271179 +249941 +354474 +1548259 +687644 +2156170 +1830453 +1914727 +2643782 +527441 +1078031 +2038468 +2477619 +2156074 +1548200 +789056 +2643769 +1425064 +250051 +1830475 +238289 +2385004 +2643748 +2156031 +2156120 +11477 +1914668 +2643767 +1777517 +428097 +1003806 +2787831 +1498368 +2156205 +1548308 +1111133 +238292 +1729001 +1183606 +2581997 +687638 +84886 +194357 +2581969 +2156149 +1797951 +1183604 +2156065 +2787838 +1830509 +1425035 +527436 +2384974 +2477691 +1830466 +1548272 +194388 +1864367 +1706937 +866996 +2787850 +2532741 +687646 +2477625 +327239 +2753608 +1864346 +2156181 +2787797 +2581941 +478042 +866998 +1092064 +11529 +2324191 +2787787 +250075 +11497 +2156163 +2643774 +2581928 +2156055 +2787859 +11476 +1914688 +1914710 +84862 +1252695 +1864382 +2384964 +1711411 +2643658 +2532721 +2156172 +2384992 +250049 +250096 +1864403 +218537 +1548222 +1155247 +11507 +2156082 +1548290 +2643714 +721872 +250086 +250026 +1252702 +2324234 +84800 +343788 +1830503 +153008 +1830449 +2156153 +2385009 +2156104 +51678 +298615 +2477620 +1215505 +84787 +1914667 +1706939 +1777528 +1830524 +2000051 +428106 +1762435 +959447 +1864428 +2324214 +1830491 +1864411 +84778 +354470 +1425026 +2477661 +2581959 +1293238 +218548 +2156099 +249951 +2324152 +11475 +428103 +428089 +250009 +2324223 +2581950 +2643736 +250037 +11484 +2581936 +2384977 +1183612 +2156062 +687641 +250098 +789029 +2384970 +2156199 +2004596 +218542 +2156056 +1425036 +1864383 +866997 +384501 +1914703 +789060 +1425038 +1830512 +1914697 +2156097 +1548292 +959450 +1797965 +1390987 +1425075 +1183608 +327250 +1729008 +2477700 +2156208 +1797960 +1078021 +1215537 +2581955 +2532718 +1914675 +354458 +1864376 +2477701 +2436842 +2532740 +84776 +1864353 +218547 +2324143 +249965 +249992 +1864372 +1864373 +2581923 +2416777 +2324181 +1626218 +1111136 +1830474 +327240 +1777518 +218529 +354435 +2384998 +2477671 +1215541 +2156060 +1864320 +1498371 +1262823 +1215509 +2324161 +1864347 +1183613 +1484300 +2643795 +194450 +612266 +749180 +446889 +1672556 +959473 +1148942 +527468 +1711461 +2084865 +1389863 +1672559 +238300 +1647686 +2156275 +2084851 +527496 +2582009 +1548344 +2532752 +2385061 +918067 +2038499 +1183651 +1729019 +194462 +1084114 +1498386 +1124622 +789096 +867012 +1974801 +902522 +2385057 +918070 +2156281 +1864457 +612218 +2156228 +2360276 +1498384 +465495 +84893 +1548350 +2699336 +250114 +2699318 +2360295 +1988220 +1960368 +789087 +2038502 +1753192 +527500 +918077 +1711458 +153047 +1711465 +2731137 +2742760 +687662 +1830536 +1092069 +2477722 +1988225 +2532750 +2532758 +84902 +1974807 +1252717 +2582010 +1914730 +2643793 +867015 +1111145 +478068 +1325903 +2360296 +1111141 +1548335 +2068937 +2004597 +1845732 +789085 +1864462 +1293239 +478058 +1039823 +2156271 +446892 +298625 +687675 +1647687 +2582019 +1548332 +1183672 +1352479 +2753612 +1830540 +789089 +789094 +1387194 +527463 +1084116 +2643804 +1711439 +2156260 +250115 +867010 +1073722 +1830583 +1548346 +612226 +2156209 +327251 +918063 +959468 +1626222 +206937 +2532789 +612239 +446874 +1672560 +2282847 +2709859 +2582037 +2699326 +2385064 +867037 +1325901 +1548361 +940969 +1183665 +1655778 +1262827 +1729026 +2582025 +1498403 +2282848 +1425094 +1142523 +194424 +250113 +918081 +2699324 +153065 +687679 +84890 +11550 +1711437 +1830533 +1672566 +2643794 +1864430 +1830558 +490898 +2000064 +1974796 +2038509 +918062 +446887 +1719837 +687668 +612231 +238299 +1092075 +1548327 +194426 +667413 +2691816 +238296 +1352478 +1548333 +527456 +2425261 +1950990 +867023 +2282836 +465499 +2582018 +2156232 +1183661 +2156316 +2360332 +1003814 +789146 +1027730 +311884 +11562 +1484310 +1548411 +1171753 +2477727 +428124 +959482 +446911 +1830635 +1548384 +2156328 +687712 +687725 +1914736 +1498411 +959492 +527510 +2582123 +712834 +436157 +2156414 +1914759 +2416807 +2385095 +1864510 +789149 +1425120 +940974 +11579 +1183693 +436155 +789116 +1183717 +2753613 +2156362 +1864552 +1352493 +465512 +271192 +2582100 +2324256 +687704 +789111 +1381843 +311876 +1311295 +2156314 +2787905 +1215577 +1183710 +1830626 +2643822 +2156323 +359184 +446918 +2582086 +789167 +959476 +271197 +1183698 +238309 +1003825 +2416797 +271196 +2385099 +250147 +1626231 +1370261 +1302561 +1864541 +1830602 +218591 +428130 +478094 +1548402 +918098 +1183713 +2351919 +1273045 +1830640 +359183 +1864466 +2416806 +1425150 +867049 +250174 +721877 +497569 +2000083 +1548399 +1325950 +497572 +250154 +1657776 +1864502 +2721692 +2156371 +2156338 +2261310 +1370263 +867048 +867046 +2532835 +2156391 +1498409 +1425123 +1711494 +11570 +1027724 +1046145 +1325954 +1864483 +1548391 +612289 +527559 +354498 +2360312 +789160 +2261316 +1273054 +1830611 +1003819 +446931 +1830637 +194473 +527574 +789151 +153075 +1830631 +1092089 +2360327 +1864544 +2582117 +250173 +238303 +1974814 +1470339 +1092112 +612288 +1325922 +11575 +354504 +285268 +1183712 +1864555 +364958 +291019 +238304 +1711499 +2156430 +789165 +194513 +1797969 +330654 +1302566 +11568 +687708 +1027727 +250134 +1273052 +153085 +1103615 +2156435 +2156293 +1864528 +789139 +1941399 +2532804 +2156423 +250165 +478078 +250133 +1797970 +612273 +436156 +2787906 +1425151 +1302559 +1864473 +527511 +2324282 +2084896 +478087 +11576 +2787903 +194484 +51697 +1864550 +1215580 +376273 +1988227 +1626229 +2297850 +789130 +11598 +2156374 +11558 +959484 +51693 +11591 +84916 +2282850 +446910 +1215575 +1830622 +271204 +285265 +1988228 +271208 +2156302 +1548417 +527519 +2582057 +1951003 +428138 +1548416 +2582087 +2360318 +2297857 +527546 +1864475 +1302573 +789121 +2477849 +343800 +2156472 +1325964 +403199 +2477841 +2436872 +2297922 +1548434 +1777610 +2532856 +1626268 +2582168 +2156603 +51710 +2156546 +687738 +1548454 +2360335 +2156506 +1777589 +1672647 +376285 +1065617 +2008274 +2156456 +2025701 +1777607 +918135 +918145 +1936201 +1864563 +2084900 +51703 +1548532 +11606 +902553 +867079 +2477904 +11631 +153125 +2477779 +2324364 +406975 +2156590 +1960393 +2436881 +2156579 +2477873 +1325961 +85007 +2477745 +2004607 +1864584 +789204 +84990 +907918 +2699349 +1065598 +2477759 +1073729 +1690573 +1690561 +206947 +85010 +2436905 +2385139 +1148947 +2477882 +2422082 +1672612 +1325962 +758515 +2084930 +768241 +2156617 +2156618 +1548493 +1425168 +238329 +403205 +758520 +1626248 +1548546 +2532871 +1215600 +1148962 +2156493 +1777585 +406993 +2477801 +1484317 +1864569 +490905 +918122 +2513330 +1425178 +867068 +206952 +11635 +687752 +2324359 +1425174 +612306 +334664 +153110 +2297872 +1777578 +218607 +1548441 +2156586 +918120 +1662259 +406981 +153147 +1405361 +789184 +867081 +1073726 +1498464 +2156583 +1138029 +1148951 +1548443 +11648 +2261336 +2477857 +2000093 +2436867 +2261318 +1797994 +2477738 +2477782 +465519 +2477776 +406995 +2156555 +84988 +1215599 +218602 +194517 +2477842 +1548442 +1003837 +2513324 +2297926 +2422084 +2324375 +2324326 +1484316 +1672630 +2477764 +1762438 +1690558 +1065612 +940983 +2643832 +1777553 +1183739 +2156528 +250182 +2156599 +2156510 +1766358 +1470357 +2582174 +1845737 +1672629 +1672640 +2477851 +1777605 +238315 +2742769 +1682908 +11643 +918124 +1672631 +218609 +2038539 +2582161 +153141 +1548512 +2385145 +1519498 +918116 +1711511 +2477813 +403198 +1215596 +918136 +2324380 +1293248 +1777554 +2436855 +2643828 +2385144 +2324381 +1777582 +2699348 +1762439 +1055291 +1960388 +403209 +1484333 +1798001 +465514 +768233 +1626257 +2156542 +959509 +1073725 +1672604 +2062984 +1672576 +1325971 +2477907 +2477835 +2385147 +153099 +527575 +1138033 +85017 +2532861 +2297912 +51725 +2436886 +1055282 +1003833 +2324357 +84999 +1425173 +1470345 +1672598 +1719842 +2156630 +84995 +11619 +2532851 +85008 +343801 +2513326 +687751 +1815081 +1215602 +1762445 +1325975 +2477883 +612308 +2477829 +1711509 +194514 +789188 +206953 +206948 +2582140 +2436894 +612322 +194544 +687747 +789213 +687739 +1729069 +1672621 +1003845 +1548534 +11610 +2297881 +1138030 +789176 +85016 +478097 +2261332 +867099 +153155 +2324434 +612434 +2582187 +612411 +1830662 +1370266 +612342 +2324413 +941014 +1548554 +2643878 +1830676 +2582254 +2582188 +527631 +428142 +1201323 +612425 +918179 +2324447 +11681 +51735 +1242110 +527626 +867228 +1548557 +2156749 +1729098 +153152 +527643 +2582248 +687771 +238334 +1003853 +1798009 +2643886 +612366 +768244 +1370267 +789253 +1215612 +959536 +1690595 +1711523 +1626311 +2156806 +1548629 +1215623 +2477920 +1498467 +1729076 +2084945 +2156721 +1548597 +1729105 +2324457 +1548606 +465549 +1626295 +2156787 +867194 +612396 +2416819 +85028 +153149 +867200 +354509 +1626320 +527639 +2324409 +1864623 +2643856 +1039837 +2582185 +2582202 +1498497 +2084959 +959564 +687794 +918185 +612393 +2582223 +2038567 +1183747 +2532893 +153167 +768243 +2582232 +1548552 +2156818 +867190 +1078055 +1864616 +194552 +2532886 +2156746 +2582259 +959570 +867177 +1092121 +2156720 +1548628 +1729123 +1039845 +1084122 +2643884 +1647696 +465529 +1039841 +941011 +1672659 +712839 +2156759 +612337 +612408 +2416821 +1039847 +867209 +527635 +1672660 +334669 +1548549 +376304 +1941405 +687785 +2038562 +1409285 +2324397 +527661 +1914782 +612381 +1293252 +1914764 +612344 +687778 +1711517 +1864635 +194563 +1519505 +1798017 +11668 +51731 +428140 +1425216 +1626318 +2038561 +1027752 +1078057 +1078056 +2532879 +527627 +376306 +789265 +1626284 +1729089 +1387203 +2436932 +11687 +340224 +687786 +376301 +789275 +1864673 +1753201 +527596 +2477915 +11656 +2084970 +612351 +1548681 +2282868 +612346 +1690585 +465540 +789268 +918167 +2156751 +941013 +2324426 +1390991 +2156766 +1864651 +527598 +1548674 +1183743 +2062993 +1626279 +2156680 +364977 +712847 +918177 +2156819 +2084973 +918176 +1902470 +2582221 +2324432 +2385149 +612385 +85029 +2297941 +11666 +789289 +2360340 +2062995 +2582234 +364968 +11690 +959553 +1548661 +1027740 +2156839 +1092123 +1830674 +2156728 +446960 +1201316 +1302580 +1548660 +1201335 +1864643 +1242099 +1548652 +1626290 +1815095 +2156843 +1690594 +1864682 +2156756 +2477916 +1003893 +867205 +918181 +1111152 +1498503 +918163 +612347 +1798010 +376305 +1864678 +2582225 +612384 +1425197 +1626278 +2156689 +867159 +1830665 +2156673 +1548559 +1103624 +959572 +1830671 +2068962 +2084947 +867218 +2324396 +2477997 +527677 +2324508 +1215666 +721894 +11831 +1390992 +218673 +218650 +1078077 +403219 +365024 +218654 +218625 +1864743 +1078066 +334680 +376314 +2643902 +1914820 +1027760 +1548724 +218763 +11857 +285275 +11716 +1215672 +2582313 +2582300 +2787927 +721889 +85059 +2582292 +2643959 +1914827 +365019 +298663 +218632 +2477945 +1864742 +1078092 +1215693 +2324505 +1548731 +365047 +2532909 +365055 +2644020 +11880 +2477985 +1798028 +2643904 +2477984 +2385208 +2478005 +11762 +11741 +721901 +11752 +1548772 +2582297 +2156881 +1864733 +1548718 +721902 +1672672 +2643986 +1548762 +218643 +1370272 +721900 +1548735 +364995 +2385218 +2582318 +218770 +1729131 +1548782 +218688 +218718 +2297951 +218641 +11753 +1914812 +959636 +1864758 +959627 +1864777 +2643918 +218719 +2643940 +2582288 +1914860 +1425229 +2156867 +11811 +218708 +2478012 +1864735 +789310 +218726 +1215712 +2644008 +364988 +365017 +11717 +218645 +11707 +85046 +11845 +1548784 +298673 +11732 +2156865 +11761 +2416829 +1548756 +11894 +1215635 +218690 +298674 +959613 +1864711 +1215667 +2478015 +2385198 +2643979 +1864723 +11770 +1078074 +2477993 +527670 +2532910 +1548710 +298649 +959628 +2582296 +298648 +1078081 +1729162 +527684 +1548783 +1425238 +2643913 +11783 +2643892 +2156911 +2324509 +11810 +1548791 +11809 +2582310 +789307 +2324492 +1864753 +1864747 +11768 +1914828 +11803 +1914805 +1381849 +2156884 +11700 +1548696 +1914837 +1864754 +153173 +1864790 +867298 +465575 +1845749 +1003921 +238349 +1704500 +2156963 +250201 +2478049 +238371 +612446 +2351950 +389804 +867320 +2582321 +2827452 +1690610 +85073 +867283 +478105 +2157019 +2413669 +2156985 +758550 +218777 +2063022 +2416839 +194579 +11928 +2582367 +1142539 +11933 +291044 +85098 +1690620 +11900 +2156980 +2478051 +1936212 +1003917 +271241 +1864825 +2582398 +1273076 +2699358 +51786 +206970 +867315 +478099 +238347 +867289 +1864839 +2261409 +789334 +959675 +1864805 +2261398 +867293 +2000098 +1425254 +238359 +959682 +2038580 +2625438 +1864826 +85072 +2532933 +1039869 +867257 +1039877 +153174 +85084 +490907 +490910 +2436943 +2582344 +85093 +465554 +2478050 +1753214 +1215730 +2084995 +1864817 +2681120 +1409288 +1003932 +1003919 +1498515 +2532915 +238354 +2156983 +1003927 +1425267 +1425245 +1864828 +218774 +1215726 +2261383 +1819890 +959670 +1470386 +340227 +1470384 +2282871 +2156971 +2038573 +2827450 +918205 +354526 +1548826 +1242124 +2063012 +867246 +941026 +2728106 +2699357 +2644066 +2038578 +2385238 +11914 +2261366 +1425259 +51763 +2532913 +1653529 +1087893 +153202 +2068971 +2297961 +1729171 +218781 +1498509 +2324535 +1830705 +51775 +153180 +271238 +1960424 +867243 +2261397 +1273074 +1626363 +712854 +2309304 +2644056 +2413670 +2157009 +2699355 +11931 +2156995 +1644557 +238352 +11938 +2351956 +1003942 +1215728 +1704490 +1003914 +1548833 +789332 +2157053 +1864842 +238368 +2478056 +2582379 +2157067 +1242121 +1548818 +2644037 +2156954 +2157046 +238348 +11916 +789335 +1425243 +153205 +1626341 +1425256 +490911 +1103629 +340228 +1626356 +291043 +2385248 +1201343 +2261371 +1690608 +2644079 +85075 +1819889 +2068970 +291039 +1864824 +2104057 +789338 +2513355 +1548813 +446974 +2157014 +1027770 +2156993 +2644070 +2038579 +2582332 +1626326 +1682910 +2157093 +2385292 +2157075 +1548815 +789372 +1711532 +1548845 +1711540 +376340 +1548828 +2827466 +194593 +1864823 +1183788 +1103636 +1626354 +612447 +85065 +941027 +1914875 +403220 +612458 +2416842 +2582353 +1003926 +612465 +612437 +2063020 +1815100 +768252 +1548832 +1711531 +2324551 +85133 +1548972 +2532988 +2422103 +1161273 +1548875 +2324586 +85127 +1548924 +1155278 +1326008 +789376 +2532944 +85111 +789449 +1252736 +2532942 +1815114 +959696 +1864901 +218792 +446983 +1148981 +2157096 +465590 +1798092 +1215791 +1215739 +1830715 +1548887 +2422106 +343828 +1672708 +2385323 +1815122 +2582439 +1326018 +867339 +11953 +1845755 +85106 +867331 +194626 +1003946 +465592 +490942 +2532974 +2157181 +2582447 +1864871 +446982 +612473 +85149 +334683 +2324581 +1914924 +1548962 +1498537 +712857 +1914919 +1215796 +2478111 +1027775 +1729202 +2324605 +2532968 +250204 +490932 +2000103 +436178 +206975 +1183825 +2582411 +918226 +1914905 +1138038 +2416847 +959699 +1864940 +1003971 +1215750 +1864931 +2644109 +1425305 +1798053 +2513363 +1729236 +2157120 +959724 +1039883 +1111174 +1273090 +365068 +1470397 +902576 +218797 +2625441 +1548931 +2513357 +1252737 +384518 +1996552 +2478133 +1784396 +1215797 +1729180 +789391 +1548890 +2582424 +2532947 +51792 +1078097 +2324558 +1326014 +2324555 +1548886 +1864899 +959709 +1902501 +2385330 +2644124 +2157171 +465586 +789417 +1548873 +2422098 +527716 +2644092 +867367 +1690632 +1498542 +867324 +527712 +527714 +1171757 +1352512 +343848 +527718 +1672691 +490943 +2478127 +1815121 +1626391 +1498539 +1914904 +2478108 +1046159 +343844 +1215741 +298680 +1039887 +1960430 +436181 +1065633 +1242130 +2644106 +2582437 +1548881 +153263 +902587 +1798067 +1425302 +1798074 +1065634 +902589 +1155274 +1215795 +1498531 +238377 +2324606 +612490 +11970 +2385322 +2478102 +2157189 +250215 +2513364 +1830751 +959700 +1201351 +2157167 +1690630 +11977 +2582443 +250209 +85121 +2157137 +85108 +85116 +2324561 +2324557 +758559 +1682911 +11984 +1798095 +2478068 +1845758 +1864868 +941042 +1252738 +1078102 +478125 +612471 +2157186 +1548862 +2157202 +1974829 +687821 +1711574 +1753215 +1864937 +1003967 +218798 +867363 +712858 +1326029 +2532980 +941049 +1183840 +446984 +1242131 +51790 +2513368 +2157193 +490926 +941051 +2385313 +2385304 +1548919 +11962 +11951 +959720 +1830746 +687822 +941048 +1830737 +85101 +2157129 +2644103 +1729211 +2385301 +789400 +218787 +1830777 +789399 +1729204 +343818 +238372 +1662268 +1425300 +1111177 +1252731 +1183806 +789393 +354540 +1425306 +1548897 +1548892 +918264 +2582421 +1326034 +527717 +2324570 +1215777 +2422102 +436166 +478117 +194606 +51796 +153266 +1548971 +1548900 +1498540 +1065630 +1798075 +1864890 +1548878 +1498534 +85099 +1161278 +2157152 +1352518 +789466 +1548977 +918284 +2038608 +2513375 +2436956 +1626405 +250227 +403228 +959751 +1055310 +85160 +789497 +1425358 +902605 +1142550 +2753625 +2478171 +2157288 +1711584 +2478207 +1065656 +218815 +2582460 +1549026 +2422117 +2282880 +2298006 +2085028 +85167 +2360363 +1425320 +758583 +2735917 +2425296 +1549027 +1484354 +527741 +1864958 +1498552 +2298031 +2478194 +918310 +2282906 +1425345 +2436972 +2436960 +1425332 +1549023 +1549037 +2298007 +11991 +651012 +1138045 +403229 +2157232 +1273094 +194664 +2478181 +2787945 +2298003 +902613 +1549008 +2007649 +2157225 +2038614 +1262844 +1425310 +902623 +2478147 +2533000 +340232 +2085026 +428178 +1273095 +959734 +1549030 +2068995 +902597 +2644134 +153302 +238395 +902608 +789464 +1960443 +1183852 +194667 +2582491 +758587 +2298039 +2478198 +447000 +1242155 +347703 +1549013 +902603 +2297995 +2282875 +85162 +1148992 +1672735 +1425326 +2298008 +2478162 +959753 +1672731 +1704508 +1003982 +2436971 +51810 +250232 +2582483 +2532995 +1549000 +2309312 +1273096 +1003984 +1484364 +1215803 +1168135 +2533013 +2360364 +194638 +2298045 +1003976 +2478212 +327277 +687828 +2261424 +1470419 +1549056 +2425288 +867383 +85158 +11985 +1777653 +1326050 +1484355 +2157214 +407014 +867386 +2282886 +343853 +218803 +2157318 +85194 +2582476 +2478222 +902621 +2787937 +2582451 +789477 +2157274 +2422114 +941062 +2478160 +789491 +2478140 +2298042 +2068986 +1425336 +2582459 +2478175 +2787933 +918304 +12026 +789537 +250236 +12062 +194682 +527803 +867497 +271262 +2360385 +2157378 +2582539 +1273108 +867444 +1864991 +1549091 +527772 +2157338 +194676 +2157349 +1549153 +867479 +867490 +959791 +1830803 +1711652 +1711647 +789634 +1549183 +1092168 +1326058 +1864983 +867500 +789579 +250270 +2416851 +51827 +12093 +2385356 +867494 +1711618 +12064 +612537 +2157347 +1974838 +2157491 +85282 +85226 +1003986 +1409292 +2582494 +465613 +384528 +789526 +1914929 +2275628 +1381854 +327279 +1302588 +1549187 +1549218 +1027803 +867481 +918335 +218824 +478155 +2854603 +2854580 +250276 +354551 +2085036 +2416860 +1148997 +85213 +1960463 +2157546 +1155284 +758622 +2157416 +1470431 +1273107 +1690661 +1729260 +2157359 +2157463 +789617 +12023 +789570 +12096 +376352 +2008279 +2000115 +1864972 +2854613 +478143 +1644565 +1549188 +2157569 +867451 +1549201 +1865015 +2157468 +153334 +1549077 +1470440 +1549139 +789622 +2582528 +2157382 +194690 +2385362 +2644143 +2157332 +1425391 +194681 +959807 +1865013 +2854567 +85290 +612510 +2261427 +2324629 +311917 +1087898 +2157474 +1293269 +1672746 +2324637 +1865020 +789612 +447014 +2854575 +153343 +2085038 +1425397 +527756 +1498592 +612556 +1549072 +1830815 +2644156 +2854577 +1914933 +1936226 +2351969 +1549197 +527801 +2157372 +789603 +2854623 +1003997 +1549202 +867510 +85240 +2157516 +1498600 +354547 +789611 +2278213 +2360400 +1549200 +2085050 +85233 +2360389 +1549103 +789608 +2261436 +2157582 +2157403 +2582499 +2854597 +2360392 +2038621 +2582531 +1470435 +2157567 +1711631 +758626 +2582545 +285284 +2324626 +12017 +2787964 +758612 +2157612 +2854637 +85298 +2038623 +1549179 +1425394 +527778 +2157385 +1470427 +2157581 +153385 +1960460 +1425410 +1549176 +959782 +1549189 +1549215 +1864986 +2721699 +447012 +12072 +1092170 +2157344 +1549074 +1941435 +2360390 +1830806 +2157598 +2709873 +2582547 +2324646 +2854632 +2854565 +51831 +2644146 +2157440 +2157472 +867462 +1914962 +1425380 +12088 +1865007 +1549093 +1027796 +2787955 +867509 +389813 +85299 +2157528 +2157541 +1626428 +2324633 +153358 +918331 +285294 +465610 +2157335 +51820 +1549169 +1864984 +789635 +2854548 +1470426 +51832 +612555 +1183859 +2038628 +651016 +2385364 +2324663 +2533024 +959792 +2582546 +527785 +1519536 +51821 +2854553 +1647714 +1027811 +2385359 +1830804 +2385366 +2324661 +789511 +902630 +1039896 +612512 +2582550 +1865023 +2038627 +85258 +2157494 +2517330 +2854582 +2063037 +12083 +153351 +651015 +2157566 +527780 +1549208 +1549124 +2854642 +2085044 +2069003 +1311299 +687861 +2157703 +2069018 +2533032 +2582560 +2582596 +1498613 +758640 +687860 +1498619 +1690705 +1425486 +1711663 +2533079 +2644264 +2324713 +1425477 +2416890 +2582634 +2644223 +789658 +2324678 +2478259 +789671 +2644191 +1425451 +194704 +2533078 +1690689 +1425479 +1425475 +2324719 +2644227 +1498609 +2644258 +2157757 +12132 +298691 +285300 +2157636 +2644210 +194708 +2644289 +1865068 +2157736 +1865051 +2644290 +789682 +2157723 +1647734 +1425441 +1647728 +2533068 +2533069 +1498616 +1549244 +2533048 +1865084 +2157713 +2533042 +1352525 +1215823 +1915005 +1711661 +1914981 +2275630 +1647731 +2385401 +2324710 +2478283 +1498617 +2753627 +758663 +1549260 +1690688 +2582577 +2385432 +2085071 +2385413 +2582598 +2644187 +1690678 +2582567 +2582574 +2157673 +1183873 +1690710 +1549267 +1027818 +1549249 +1729281 +1273119 +1729264 +687850 +2360420 +2478277 +2157746 +2324707 +2069016 +1915003 +2157722 +2644234 +2298072 +1914986 +2582587 +2582648 +2582599 +2533028 +1690675 +2478260 +2157652 +2385436 +1549266 +2157755 +1498618 +1027821 +250293 +2644255 +1425456 +1027840 +1914987 +1425478 +2324718 +12129 +2582645 +2085079 +85309 +1798117 +2157643 +789666 +1690704 +1915020 +1672751 +1498622 +2644297 +1865059 +941081 +2533146 +1711675 +789746 +1378087 +85322 +959863 +1484391 +153420 +1498628 +2582769 +1425513 +2157816 +1729314 +2533110 +1626443 +2385476 +1711683 +2644309 +1004033 +1498626 +789739 +1262852 +85367 +1470444 +2298092 +1672768 +2437012 +1777696 +1830878 +354557 +2324737 +1078110 +2157767 +1798152 +918370 +2533109 +867564 +2478332 +2157771 +2533140 +2478326 +478157 +311925 +1004012 +1798193 +2038646 +1830853 +1729311 +1425523 +1672791 +1549294 +2533091 +2157796 +2157781 +1215847 +768307 +2157889 +2360428 +85359 +959879 +1326075 +12167 +2385489 +1974839 +1168137 +2298091 +1027851 +1865133 +1711684 +194738 +2085124 +1326089 +1273130 +1183893 +2385465 +1729341 +12190 +1915071 +902640 +2085158 +1004010 +2157812 +789754 +2085108 +1549293 +2533116 +12148 +2360426 +2157814 +365080 +2085156 +447022 +2385541 +1690717 +2360438 +789787 +1729358 +194760 +2157787 +2157858 +1242161 +1549291 +1798199 +867577 +1027848 +403237 +918360 +206986 +1762451 +2425306 +1865183 +1549307 +218838 +365079 +194758 +1915100 +1798146 +1865131 +1672794 +85339 +1777690 +2582715 +218843 +2582768 +2582757 +1549337 +12159 +959849 +902653 +1865163 +2533123 +2104064 +2582763 +465615 +2063041 +2324759 +1915105 +1865141 +1549321 +428195 +2582717 +1915099 +2324730 +2157871 +1711680 +1865164 +1729361 +2157799 +218855 +311926 +1425507 +1729310 +1672788 +959826 +2533164 +1626436 +1865132 +1865177 +959876 +2582740 +2644312 +218853 +867567 +1865129 +1004007 +1549339 +2324738 +1215846 +2478324 +959834 +1084140 +2582725 +2385560 +2157877 +51854 +1549287 +2582654 +918398 +902665 +85371 +1672796 +918362 +1777691 +2582651 +1183881 +2261446 +1830871 +789696 +2385497 +2157921 +12147 +1865157 +1425519 +527818 +758704 +428193 +2157833 +2157827 +2309320 +1729324 +206990 +1915042 +1798142 +789695 +1798153 +2085117 +1549358 +2298098 +1672795 +2157852 +867572 +1682917 +2533161 +2085118 +1484400 +2157916 +1915076 +959886 +2533133 +447024 +2582689 +2582703 +1865117 +85377 +2085142 +2157929 +1498644 +758689 +902649 +867528 +2533166 +1425506 +768298 +1915034 +2644333 +2385547 +1672760 +789781 +1111198 +447032 +85324 +2644315 +2582735 +1549326 +1762453 +1183885 +51861 +2582662 +902651 +2385528 +1215838 +1326088 +1549309 +959901 +1086378 +1425535 +2385521 +1484397 +354559 +2644336 +1039903 +1004028 +2157886 +2385550 +1425522 +902666 +918407 +194731 +354556 +687866 +1183883 +298695 +687871 +153428 +959898 +1252767 +2644332 +250300 +2478319 +2298118 +1815137 +1549375 +1729393 +1215879 +1672809 +789824 +918422 +1183918 +2385565 +1183896 +428238 +2582799 +428234 +85391 +2157972 +1672808 +902679 +527829 +2157963 +1183906 +789832 +1719862 +1865206 +1484413 +1326107 +746623 +1425547 +2298136 +2085211 +2478358 +1549398 +334693 +527833 +789813 +2038669 +1711710 +1798203 +1484414 +1960479 +12205 +12217 +85389 +1111202 +1498667 +1092198 +343866 +789822 +789827 +447036 +2157967 +2437027 +1549413 +1183912 +1027861 +1711719 +789815 +1798201 +1711700 +1690720 +2644357 +789807 +789841 +2385568 +1027857 +1690723 +2309323 +1865203 +1549417 +1183897 +1729366 +376357 +2157954 +1915113 +238416 +2385569 +1711712 +194773 +285311 +789802 +376358 +218859 +12222 +1690722 +428230 +12214 +428226 +902676 +1865216 +1711722 +1065671 +1171774 +428245 +1425571 +2582786 +2157942 +291061 +941083 +1004050 +2157977 +1729413 +721930 +2158085 +153451 +612578 +1549548 +2324830 +2582863 +1111214 +789874 +1425588 +2644413 +918450 +1865281 +1549465 +1798238 +2582884 +1672834 +1865315 +2158081 +2324815 +85415 +2158110 +2157989 +291064 +789924 +334695 +2158082 +238418 +447054 +1470455 +1865255 +2360447 +612583 +1027876 +403243 +959946 +1326116 +2158162 +1111223 +902695 +2158071 +789901 +1027867 +1092211 +1273146 +1798237 +1262854 +2644427 +758738 +687893 +902690 +2038684 +789858 +1915197 +1865275 +1777712 +447052 +612569 +2158088 +12259 +1065675 +2385617 +85440 +959959 +789894 +2478396 +1549536 +2644390 +2324822 +1252799 +1549530 +1815140 +194831 +789843 +1161291 +612574 +1865261 +1549434 +478170 +1672838 +1549479 +1549543 +85424 +1215890 +354577 +1183938 +194841 +2085215 +2324821 +1830908 +2324808 +2582883 +959934 +1798231 +918461 +2158180 +85425 +959974 +1865284 +2533228 +2324792 +1915159 +918435 +1498675 +1055332 +218871 +2478383 +1865265 +2324848 +1027872 +2324786 +354568 +1915170 +1425607 +1915148 +1798247 +51869 +194818 +1370283 +959957 +2324843 +250320 +2478397 +2478411 +1729397 +2298138 +194858 +1549519 +2533210 +2063046 +2582885 +2158100 +2158175 +2324764 +2533214 +2158046 +85417 +12262 +1023518 +12252 +1711737 +2437029 +2158000 +1915179 +85420 +354590 +2416912 +2385601 +85408 +1183932 +298699 +1729438 +1936235 +2644416 +527854 +354571 +2158005 +959958 +1183937 +2416908 +959955 +12243 +2158018 +1027880 +1027877 +2582880 +867591 +527876 +1215883 +206995 +436206 +194830 +1690740 +1549444 +2158136 +1865310 +1425604 +959962 +194852 +2681128 +1549487 +867605 +1644582 +1915157 +2324780 +1865270 +2416905 +2158121 +1711730 +918432 +1915193 +1183927 +1830907 +2478417 +2158145 +2158078 +1425618 +1915163 +1262859 +2158049 +2158012 +1865231 +1690747 +1626452 +194845 +2582868 +2582853 +2644382 +1498683 +447053 +1549515 +1915135 +298698 +1865308 +2582857 +1865297 +2158023 +1865268 +902689 +1915152 +1729408 +789912 +2644358 +1865398 +85528 +2721714 +1915239 +1865345 +428265 +1830968 +2158547 +918524 +2582926 +85514 +2478535 +2158358 +447073 +2158346 +2158332 +1549596 +2158231 +789999 +1549679 +2324945 +1498737 +2533239 +1092232 +790003 +2158229 +1065689 +1425654 +2158523 +527879 +1425703 +194926 +1326148 +2158402 +1690758 +2385685 +1215949 +2158647 +2385668 +2158380 +1549633 +1830951 +960012 +12368 +1425671 +721936 +902704 +85542 +2437057 +12345 +1777739 +687947 +2582908 +687915 +2085291 +478180 +687925 +2069049 +2158603 +960042 +2644456 +1766369 +447070 +365114 +2709880 +2478510 +1425658 +2478429 +1498723 +2582937 +2158422 +2582979 +2478427 +2298193 +2026952 +2533279 +218925 +1549582 +12377 +1830983 +1092224 +1078118 +1111249 +2324989 +1865323 +2385638 +2085290 +2158220 +1425723 +478188 +343899 +2644474 +2360483 +527895 +2158333 +1425782 +1183968 +428260 +1273162 +2298149 +1549653 +1215955 +2158528 +2298186 +2437068 +194884 +2298196 +2583005 +2533243 +758758 +2478525 +918498 +12403 +2324905 +2478500 +789995 +2583086 +2533348 +790047 +2644495 +1498714 +960008 +2582955 +2478520 +2282943 +1484429 +1425727 +2582992 +1549694 +2324950 +2298170 +918512 +2533244 +1111255 +2533270 +2085248 +2582971 +2385702 +2583072 +2158635 +1729471 +1830936 +2158367 +1865420 +2582996 +2298174 +2360464 +85480 +2644448 +1819908 +1183958 +1549662 +2644489 +2583049 +250335 +527899 +2038719 +2583076 +1672851 +2325018 +2582933 +2158454 +2325006 +2158638 +194896 +1215960 +343880 +2158411 +918490 +1498704 +1183970 +902711 +2158573 +1798261 +2385663 +2158350 +194872 +1549613 +1078131 +2069052 +2282954 +1549610 +790041 +1798276 +85557 +2324969 +1086393 +1425754 +902715 +2158515 +2360471 +1798287 +1027889 +2324865 +1273158 +2533369 +2533291 +2324859 +2583037 +2038725 +1865370 +343896 +1865378 +2582939 +1915214 +2158348 +12431 +2324944 +1549687 +2583000 +2158563 +2279756 +2324985 +1183960 +447065 +2385690 +2582914 +1711750 +1672862 +85502 +2324940 +2721711 +2324862 +1425794 +1065695 +746625 +2038726 +2583012 +2582990 +2158338 +2158561 +1065688 +2158610 +2158417 +527960 +1138057 +2324937 +2158282 +1425752 +1065709 +2582981 +790048 +527929 +218928 +1865353 +790013 +428285 +918476 +2437053 +960017 +194930 +2085317 +2324860 +960020 +2324861 +1549632 +758782 +1183949 +1111228 +790012 +1915228 +12314 +2582912 +2478526 +1777724 +194879 +447083 +2158349 +2416931 +1425701 +2158311 +2324995 +1425708 +2437033 +1055337 +527932 +2437072 +960018 +2533293 +2158221 +1865399 +2583104 +2158306 +1549608 +365102 +403256 +918486 +2011968 +2583040 +1273152 +12421 +1498728 +2158430 +327300 +687926 +403244 +527920 +194910 +2583059 +1425741 +12351 +2699382 +334701 +2298194 +960038 +2385684 +12357 +85567 +2478443 +85524 +2085277 +2583062 +2158232 +2158440 +2158230 +1865344 +1706970 +1027888 +960006 +2158218 +758773 +1830985 +1065684 +1425672 +2158421 +1425683 +2158419 +2158652 +2085236 +2158276 +2385628 +2478458 +2158662 +2478558 +1865377 +12289 +85454 +250333 +960040 +2478425 +2000121 +2385703 +2644491 +2298162 +2158243 +1252821 +478195 +527940 +1065708 +2004622 +2533265 +2038721 +1215950 +2158618 +1798259 +1183959 +2583123 +1549676 +1425647 +1498722 +1672844 +2069042 +2158211 +1498733 +527889 +1549699 +2158261 +2298155 +2038746 +1690763 +1498711 +918519 +2324895 +721935 +2282944 +1830943 +250356 +2038751 +1425644 +1549709 +2583003 +789953 +2437032 +250332 +2158263 +2085316 +2583084 +1830963 +1865409 +1644583 +85494 +343881 +527943 +1425706 +1865362 +2085327 +250342 +1092234 +1798249 +1915230 +2583060 +2478554 +428294 +789965 +478182 +2085334 +250339 +2158351 +2385681 +1183967 +2478537 +2425313 +2038742 +2385658 +527894 +2385653 +2085264 +527901 +2583032 +1425645 +1865391 +2298172 +527953 +85534 +2478437 +1352536 +12434 +2360469 +1425686 +1549641 +2085285 +1658006 +2425333 +2425597 +2855225 +2261492 +1665059 +1470546 +2854810 +2158687 +195003 +867666 +2063127 +153716 +1815157 +1658031 +1777795 +1777797 +2854902 +1657996 +207029 +153695 +2425496 +2855180 +1657836 +2298298 +207067 +902769 +2085408 +2854945 +2425416 +1784428 +153721 +153511 +1798292 +2063108 +2513394 +153728 +1155291 +790055 +2478611 +2063140 +902838 +1142623 +2854660 +2854888 +902826 +2513402 +2437133 +2425476 +2854809 +85611 +2583133 +2855097 +1658098 +2854973 +207041 +1425816 +1425855 +908021 +1470491 +1777767 +1657972 +2063141 +2282969 +153588 +2261515 +2855207 +1658097 +2854798 +2261505 +2298266 +2742802 +2855276 +2742814 +1498749 +2855229 +2158709 +1425841 +907980 +2261507 +908013 +712878 +2309333 +2854678 +2533390 +1784433 +207044 +2158701 +2855234 +2854951 +153685 +1777781 +908033 +908029 +2104127 +207096 +2855193 +2298289 +1657833 +2085372 +1777755 +153577 +2261574 +153517 +2063091 +1658092 +1815147 +2855104 +2478591 +2298273 +2742805 +2854740 +2437093 +153661 +1766376 +867667 +2038786 +908026 +2425518 +153723 +1658044 +902837 +908116 +2854885 +2854956 +2261516 +902832 +902829 +1657878 +2298233 +907992 +1470576 +2309395 +153650 +2261526 +1142593 +194999 +1657964 +2425387 +153669 +1658053 +2261542 +1149024 +908094 +2855117 +2855018 +153518 +1777787 +867655 +153579 +153557 +2437135 +2854929 +2309385 +2063126 +2104111 +1470519 +1657825 +2425567 +1784427 +2298283 +1549727 +2298290 +1657913 +2855110 +2425439 +207005 +2513401 +153553 +85607 +2261493 +1519568 +153595 +2854759 +1766372 +2425546 +207037 +2854848 +2104112 +2513396 +207060 +1657814 +1658018 +1425852 +2854893 +2282965 +2282964 +1519578 +2425444 +2425516 +1784432 +2855023 +2425438 +2085367 +1658109 +2038793 +2854771 +2261481 +2425499 +2309396 +1055345 +2261531 +2854984 +2513403 +2854814 +2425491 +2854899 +2437086 +1004056 +2104129 +1519564 +1425839 +2855197 +2855258 +2261487 +2855167 +2038796 +2854925 +1777764 +1470558 +2063107 +153574 +2854676 +2437134 +1766380 +207062 +1425868 +1784454 +1662299 +2425550 +907932 +2158710 +2425531 +1519565 +2425611 +207075 +2158758 +153599 +1777801 +867631 +902725 +908078 +1658079 +1658001 +2425397 +2855069 +1657861 +2854796 +2425502 +2085370 +2425479 +902849 +2282976 +1626469 +2425481 +1657912 +2063099 +902759 +2425601 +867628 +2085405 +2261537 +2038779 +2085415 +2855048 +1425826 +2854852 +687953 +1657984 +1657851 +1665056 +1155294 +2513397 +2855254 +2855029 +1798299 +1425838 +1657860 +2425409 +908064 +2425353 +2158779 +1658133 +2085427 +1657818 +1658096 +907976 +153608 +1425829 +153660 +902820 +2085390 +195010 +1519563 +2437161 +2742801 +1658126 +2298232 +2085434 +2425519 +2854844 +2261503 +2855065 +1470569 +2855045 +2158768 +207006 +153485 +153527 +218934 +2158676 +2425509 +2513407 +907930 +2855109 +2854755 +1470579 +2309332 +1425836 +2742815 +2261535 +902762 +1657931 +1549721 +153524 +2854886 +2298277 +1004055 +2855230 +2298240 +2158734 +2158717 +1784413 +2854976 +2063083 +1626480 +2425559 +2063112 +1657789 +2261491 +2854722 +2063128 +908044 +2425547 +2425599 +1777799 +1657790 +2425542 +2478587 +2854871 +2261579 +2104072 +2425431 +2261525 +153480 +207105 +194995 +1657929 +194974 +1658110 +1142611 +2158781 +1657975 +2583132 +2478600 +2855084 +153677 +902875 +1626468 +2478624 +12472 +195028 +1549749 +12506 +330739 +1626510 +51944 +2437183 +1549760 +1138069 +1549773 +918558 +403278 +1549789 +2158825 +51989 +195019 +2425645 +12565 +327343 +407041 +85626 +1425931 +51981 +1425945 +1498797 +768336 +918537 +867718 +2063170 +1142626 +2158841 +2063171 +2425643 +51956 +334711 +51913 +1498779 +941130 +1498785 +1425873 +2038813 +330733 +941114 +1039911 +768333 +790084 +2069074 +51903 +867711 +1004065 +403284 +195035 +2425649 +2513417 +407053 +2478644 +1549732 +51968 +330688 +12470 +2158892 +2085495 +2069063 +1626504 +2158812 +153776 +1549782 +1470630 +2158899 +960057 +12509 +330755 +327331 +327324 +1498789 +2425636 +2085485 +330725 +330770 +2038809 +327328 +85622 +768316 +1484451 +1470601 +407050 +867708 +1665064 +1425894 +12549 +1484449 +428295 +330690 +1405418 +768328 +12464 +1549751 +612597 +1498790 +2069082 +1498751 +330727 +12556 +1470638 +768329 +407033 +941100 +12453 +238428 +407024 +768327 +218945 +1405419 +153777 +941112 +218944 +327349 +527962 +330774 +327317 +51888 +330749 +1004064 +2513416 +902877 +2069096 +758789 +867705 +238443 +867696 +330685 +2069106 +407074 +1409295 +1470618 +2069060 +1470604 +85628 +330778 +527964 +1470631 +238461 +1498795 +51879 +1626514 +918552 +2158833 +1626526 +2038821 +2069098 +1626532 +51984 +238464 +51891 +12474 +1549770 +867698 +1470642 +1549769 +867753 +330698 +2069072 +790088 +1142629 +330705 +1766415 +51878 +12578 +195076 +153782 +2283008 +1830995 +2478680 +2085508 +340249 +768362 +195057 +1798308 +2437232 +1865426 +52010 +1711781 +1498800 +1777849 +2085516 +2085524 +2437187 +1425957 +1662342 +2478677 +2000126 +1665077 +334725 +1055378 +2583137 +1055385 +52002 +1183988 +1626548 +918579 +1777896 +2533411 +195038 +2437226 +1766448 +1762555 +902922 +2425657 +1777895 +2533414 +867784 +1762542 +85652 +2158983 +85655 +2261626 +758830 +2158961 +867760 +1662340 +2478657 +1865425 +2011974 +1326165 +1766428 +1777880 +2437251 +768353 +1798316 +790123 +12577 +790112 +2437196 +2437241 +1672894 +2437212 +2158929 +2298325 +1762532 +1762497 +918584 +359206 +2735922 +758821 +2533408 +1498813 +2309407 +1762493 +918562 +2437256 +85635 +2437253 +1762515 +749206 +2583139 +12580 +902893 +153790 +1498822 +2583135 +12575 +1831013 +2425667 +1138093 +790094 +207125 +2000131 +311932 +2104135 +1762537 +867778 +1762523 +941140 +2085574 +1149030 +2385719 +1662321 +768351 +918592 +327360 +941161 +1138088 +1777863 +758835 +343912 +941160 +1762492 +1055383 +1777883 +2298346 +2085562 +2298319 +1549802 +941142 +2158982 +12598 +960063 +1498812 +2742835 +918624 +2158938 +2283004 +918644 +1777871 +758827 +1138099 +790096 +2158946 +768364 +12596 +1138081 +2158964 +902888 +918635 +334716 +1777835 +2158963 +1766449 +2437217 +1766421 +2298315 +1762501 +1665074 +2085559 +52001 +1055374 +1762563 +612601 +2478694 +1762466 +85650 +12611 +902909 +1762508 +153793 +687963 +918615 +2279767 +1766451 +1378098 +1426020 +1484504 +1658180 +867870 +1672935 +343919 +1672932 +1138103 +2788013 +1302601 +1498891 +1149048 +749212 +1426029 +403342 +2478711 +1498897 +2085631 +1777960 +1073755 +2788000 +960075 +1215962 +2298392 +2085627 +2159096 +867827 +365126 +1777968 +2085633 +2159062 +1184003 +1426026 +2533459 +153811 +12627 +2729152 +790161 +790205 +1073757 +2085607 +2360497 +941166 +1426040 +2787997 +2063192 +1498890 +2533467 +2085588 +85663 +2437290 +1766454 +195100 +1626561 +790166 +1549826 +2158989 +1498884 +2425700 +2788026 +12631 +1549838 +334740 +758861 +1777927 +1798324 +687987 +2159012 +768379 +1004085 +340253 +790155 +1425995 +238495 +2478714 +790199 +527971 +1960504 +867831 +2298387 +2787983 +1766459 +1004090 +465626 +365124 +1865443 +2533466 +1215969 +2085589 +2069123 +2159083 +12621 +790185 +758860 +1831038 +2437293 +2159035 +1498871 +376366 +407090 +2159037 +1777971 +2422147 +1690801 +1672915 +960084 +1175795 +1672928 +1519633 +2788006 +687985 +1142644 +327411 +867812 +2437268 +1658163 +2742849 +2583178 +407095 +2159080 +1865466 +867815 +1065727 +2699386 +2788012 +1484510 +428301 +867852 +1142637 +2742845 +1426034 +790133 +738070 +1426043 +867825 +1425987 +918665 +1831040 +867816 +2298376 +1831021 +1960497 +867806 +465625 +85662 +1777938 +790164 +527974 +365121 +2309410 +2533422 +1672930 +902948 +327406 +1055394 +219000 +195145 +867875 +2085581 +2437281 +1658182 +2279765 +867837 +330813 +1470671 +1149047 +447127 +2788005 +687966 +2279761 +291068 +1426048 +738069 +1184012 +1215967 +334743 +2437271 +2425694 +1426028 +2159064 +1155317 +790149 +1426015 +218994 +490955 +2038850 +2159077 +2422124 +1426045 +2437292 +2425692 +327391 +238492 +1831048 +1865457 +1690797 +2533446 +2788004 +403330 +403313 +1426030 +1672926 +195120 +1665078 +2425706 +428309 +941168 +2742853 +1915240 +334735 +2085611 +153822 +407099 +340258 +2159029 +403338 +1092243 +2517334 +403314 +1470667 +2425707 +1549839 +2283038 +1662353 +902951 +790173 +867844 +2279771 +428311 +195082 +867822 +612609 +2159040 +1762582 +2298395 +2159204 +1960505 +1762614 +688011 +1777983 +1065747 +688008 +2085780 +1658189 +2159169 +2699406 +2085706 +1498956 +1549883 +1798337 +2478731 +2298442 +2283059 +2583234 +1777994 +1777998 +2533502 +1662365 +2298461 +749215 +902962 +407103 +867884 +2437304 +1426200 +1762634 +2533493 +1065762 +790267 +902978 +2425738 +2085643 +2478740 +2298407 +1819926 +790242 +1662360 +2298439 +195189 +2437334 +1426121 +2159181 +758892 +1831077 +2437327 +1065753 +428330 +2038862 +403358 +2283090 +1470711 +2325063 +2283089 +1777995 +960098 +195163 +918689 +790221 +941186 +2360510 +1662372 +2478764 +2437309 +1426105 +334763 +918722 +2298417 +2085783 +195201 +2069159 +2583248 +2478749 +2085663 +1865474 +2159209 +960094 +2159180 +1326187 +2085791 +2159102 +1798342 +1658202 +465629 +746663 +1470684 +2583205 +2478767 +2437319 +2533527 +2583250 +2425775 +2583247 +2298419 +2437398 +2085738 +2038859 +1065755 +2085735 +2283133 +1426214 +1662357 +85677 +1766466 +12633 +2437345 +1498949 +2425725 +2159168 +2298450 +428331 +1662363 +2583190 +447132 +1470706 +1498945 +1065761 +758879 +790229 +1055423 +2283093 +790243 +1055420 +195204 +2283056 +2478746 +1426183 +2533538 +2069174 +790254 +1426141 +918694 +2533504 +2069203 +2437306 +207139 +2742869 +2085798 +2159163 +2298429 +1103661 +2437400 +2069169 +12681 +2437385 +1426120 +1405436 +195200 +2437375 +2159195 +1426153 +1498973 +1426219 +612626 +2360501 +52025 +2159167 +1672940 +195206 +1426104 +2085693 +1519645 +1549875 +2283104 +2478759 +902982 +1762613 +918710 +1352548 +1831051 +2159110 +2437343 +2283109 +1777980 +612620 +918714 +219019 +2437388 +960096 +2478745 +2298457 +2742859 +2283111 +2085793 +2385727 +2298481 +1777978 +2159172 +2085762 +2085776 +2069178 +2325054 +2159174 +1498932 +867891 +1426125 +2159178 +1426186 +1381867 +2583201 +768391 +1426075 +1766462 +960092 +2425763 +1762612 +758900 +1819925 +2159186 +12678 +1426203 +1149056 +2159226 +902970 +790279 +2699408 +2385729 +2478768 +918707 +867880 +2283085 +2069148 +1498951 +12659 +2437387 +1626566 +153833 +2085669 +1426139 +758928 +867909 +918725 +2325065 +2425768 +758901 +790235 +1073767 +2085685 +1798338 +1498942 +2159107 +1426209 +291069 +52031 +334765 +527987 +1777974 +1672952 +1426066 +1549916 +2085687 +712886 +1426146 +1762647 +2583213 +1798344 +2583185 +1155322 +1055425 +790219 +2437366 +2159294 +2038871 +2159374 +1711804 +2038875 +1273201 +1865493 +1426229 +2325150 +1549936 +1549996 +790330 +2325114 +1549932 +1549984 +2159269 +1398520 +2159350 +2085811 +219037 +2325214 +1690817 +12720 +2425781 +1729491 +960110 +403367 +2038879 +1215984 +758944 +2085807 +2038872 +2159386 +1426292 +1426251 +688012 +2325095 +1690814 +2478779 +2038874 +428334 +2159332 +2159309 +2583256 +790347 +2699412 +2159271 +2478784 +1549967 +2159331 +1426300 +2478804 +2159244 +195227 +1426284 +447142 +790328 +790291 +2699411 +1549993 +2478788 +2159393 +2478866 +1549948 +2583276 +2159274 +1273197 +12703 +2478829 +528001 +960108 +2478819 +2325175 +1326223 +2038878 +2583270 +790323 +2478837 +1549962 +2478885 +219035 +2478876 +2085809 +1426314 +1426228 +1549945 +2699414 +1549981 +2325084 +2011982 +1484537 +1690831 +447145 +2644515 +2283135 +1690833 +1426281 +1326235 +2159262 +1273185 +2437412 +2478854 +758938 +2325142 +2478799 +12715 +688019 +2325090 +1865501 +1215983 +2325202 +2325178 +960113 +1273198 +1549994 +2437410 +195230 +2533575 +2478848 +1046178 +2159250 +2644519 +2325170 +2644532 +1729500 +2583354 +2038903 +2644615 +918760 +250380 +1470739 +219049 +758964 +2004630 +2478933 +612649 +2309428 +1690845 +758992 +790371 +790400 +1499010 +2159545 +1293294 +1865542 +759013 +2753659 +1626586 +1065778 +2325243 +1729502 +2351989 +2753658 +2478903 +1711809 +2513455 +1960520 +867963 +867971 +1662378 +1673003 +1550120 +2478934 +2298536 +2479042 +1498999 +1778014 +759014 +2583290 +941200 +2478951 +1519668 +2325247 +1729504 +2038912 +2159549 +1915247 +2279779 +1499019 +1484538 +2325252 +1499023 +2644555 +2298530 +153852 +1550154 +688042 +528025 +768429 +2298567 +1124661 +758993 +2325232 +688037 +1426345 +2385764 +768407 +2325250 +1626578 +1831091 +1831089 +1550058 +238534 +2479032 +1550162 +1499011 +2583319 +1729515 +790407 +1960515 +2721720 +528033 +903007 +2159635 +2479181 +12724 +612647 +2261651 +528030 +250396 +2159412 +1798379 +2085843 +1111264 +1550012 +1499022 +2753668 +2159632 +867953 +790389 +2437449 +2479172 +2298542 +2479056 +1690883 +758965 +960167 +1798367 +960169 +1550132 +1138126 +2479195 +1352563 +2279782 +1184031 +2325244 +768406 +1499037 +2159586 +1004122 +1550161 +2513444 +960160 +790373 +2159622 +2583289 +1326265 +790404 +2742877 +2478979 +651026 +1672980 +2644576 +2709894 +351933 +2479020 +1498994 +867931 +2038890 +153872 +2385757 +867925 +758998 +768419 +1550105 +2159547 +688034 +1815175 +2159424 +238526 +1672983 +1690855 +1216006 +1672997 +1065774 +2385785 +2159518 +1798352 +1055457 +2385775 +2159655 +2478919 +1550156 +12745 +960155 +2479138 +1550083 +903022 +2159446 +612642 +2583336 +2298562 +1626573 +1550030 +2298518 +1499012 +2753657 +2644559 +1124666 +238532 +1550020 +2309423 +1352559 +1550024 +2159641 +2298534 +85760 +2479016 +1626606 +1550023 +1519671 +1778030 +85759 +2583308 +1426333 +2644599 +790384 +903029 +52045 +2583291 +2159633 +1326287 +2753660 +1690852 +2644597 +2159410 +768405 +2479017 +1216003 +2479192 +1865527 +2479139 +688028 +1326263 +2729174 +351910 +2533596 +2479072 +758987 +2159429 +2533623 +903019 +960150 +941190 +1470727 +1550060 +759007 +1426331 +1831099 +1550165 +2159416 +1550159 +768400 +2261669 +238533 +2533619 +960154 +1753234 +1704515 +1216009 +2709891 +612654 +612666 +612650 +1865523 +867939 +1004112 +1865534 +2159611 +2325236 +1672993 +688049 +2513452 +1550100 +351947 +2298580 +1352560 +1550082 +2479159 +1201375 +1499021 +2385767 +1690862 +2385753 +1499000 +2159593 +153853 +903028 +2644617 +1499017 +1242172 +1550018 +2478917 +2583305 +1974856 +2159654 +1326278 +867962 +1690880 +1690881 +768418 +1865520 +759002 +1550117 +2085886 +2699417 +351919 +1550073 +1729497 +2360526 +1626601 +1124662 +1201378 +1550170 +2385795 +12747 +2159664 +153864 +2583361 +1426326 +2644621 +2478978 +2159628 +2159521 +2478973 +2159644 +688046 +2325224 +2279781 +1672977 +918775 +1550115 +2038888 +2385770 +2298535 +2479206 +2437447 +2644611 +2479079 +1798381 +2742879 +1974871 +85767 +2753702 +651029 +2159720 +2753722 +2753687 +2159724 +2325281 +918778 +2159703 +2325300 +1550225 +528054 +1326302 +2753689 +2325312 +2583386 +1865584 +2583427 +2008301 +1988303 +528123 +2583380 +1865596 +2385823 +250403 +2721723 +2004636 +2479268 +2644700 +1391006 +2325314 +2479240 +1092261 +2325291 +2385809 +1915267 +2644702 +790446 +1391024 +960190 +790435 +528145 +528132 +1550197 +1352568 +1988322 +759030 +651040 +1326324 +1831131 +2721729 +2644692 +2709917 +2360529 +2644644 +1550186 +1370305 +528130 +960203 +1988302 +1915259 +1184057 +1865566 +2479247 +749237 +1865590 +960185 +528079 +1184054 +1915296 +1550231 +528129 +918787 +1426412 +343937 +12753 +1111271 +1988292 +2644684 +2644709 +1690920 +1988319 +85779 +1974863 +1216022 +2325285 +2644680 +1370300 +2008292 +790451 +2709901 +2753695 +1798405 +1831115 +2753737 +918785 +2159722 +2479258 +790439 +1184060 +1915269 +2008296 +960205 +651034 +2735934 +2533625 +1729517 +1673012 +2159716 +1391010 +528063 +528062 +2583418 +1078167 +1915286 +2479227 +1941459 +1778036 +688060 +2583378 +1690900 +918781 +1988290 +790448 +2583392 +1550194 +1391020 +790445 +2479231 +1550215 +688059 +1729524 +1326301 +2011987 +1915277 +1778038 +1391022 +1550316 +2085905 +195266 +2479305 +2583494 +868010 +1550238 +153906 +1690934 +1550288 +2416964 +1550277 +1084155 +1865633 +768437 +903044 +153903 +85800 +1865619 +2533649 +960229 +2159765 +1798437 +2583506 +195294 +2644756 +2644732 +2159768 +1084149 +1550313 +1550280 +2583447 +2325432 +790544 +1550252 +1550325 +1690933 +2069234 +2325342 +1027913 +85792 +195289 +1831148 +1865622 +2085919 +2416953 +285331 +1550324 +195284 +2533648 +903063 +2069232 +1915368 +52053 +1778040 +2437462 +1798419 +2159866 +1426422 +153886 +1550343 +2479328 +2069236 +903040 +1915372 +2583461 +2479392 +1216034 +2159750 +2159851 +790505 +2325415 +2159853 +2583466 +867991 +1039918 +153901 +1915328 +1798438 +2644761 +790506 +85808 +2360531 +1729538 +195287 +612675 +1023523 +153890 +2325343 +2159821 +1798426 +2159767 +2159905 +2159762 +327426 +1915322 +2479347 +1798417 +2325374 +12773 +903053 +1550295 +868021 +867982 +918794 +2325331 +1550261 +867981 +1673022 +867996 +2325389 +334775 +1915349 +1426435 +2004639 +2159806 +1405463 +2583463 +790485 +1915331 +153905 +1426424 +2583553 +153881 +1326335 +1078184 +2644752 +1753239 +1550320 +1798446 +2298592 +1084152 +1865639 +85815 +1915332 +1130103 +2069240 +2325340 +2360536 +1078181 +1470748 +790546 +2159790 +2644716 +2583525 +1084160 +2352009 +2069226 +960232 +2479302 +867983 +1550234 +1915364 +903052 +2644818 +759038 +790511 +790541 +2325412 +2325378 +1831157 +2416955 +868014 +1550235 +1078186 +1550250 +1405464 +311937 +2644787 +2644738 +2644720 +2385827 +1915352 +790501 +868006 +2159792 +250414 +2159842 +790489 +2325339 +2583499 +1426448 +2479386 +2479383 +2517345 +2583432 +1819951 +2325385 +2325347 +2583439 +2159753 +612903 +868089 +153932 +1004149 +1951029 +612777 +1352597 +1124682 +1124680 +465640 +688093 +1550369 +1729577 +612828 +868095 +1936247 +667462 +1124677 +612889 +2159941 +1352606 +1626638 +2644841 +612907 +1326348 +1626657 +612879 +528154 +1985092 +1004170 +612798 +1499058 +1729558 +1819952 +2261683 +1027918 +612817 +490957 +1626629 +1004148 +2352016 +651060 +1366127 +1311304 +2261681 +1302613 +941207 +2085951 +153915 +612825 +612821 +153930 +2416970 +2325459 +1550384 +1499068 +868085 +1653546 +1519694 +1470767 +2352023 +2159946 +1201382 +2385899 +790554 +2644853 +2583596 +688092 +712921 +1753269 +1519691 +1819955 +2063227 +688083 +1389885 +612729 +612725 +2159975 +612689 +667466 +2583567 +1027921 +612909 +2325452 +1004135 +2007653 +1004177 +1004150 +1729584 +2038940 +1039945 +918818 +868054 +941208 +651055 +1293300 +712924 +1865659 +2416969 +1974881 +1370335 +612928 +1974899 +1626670 +1819957 +1381883 +749241 +1519696 +612759 +1753240 +1326350 +1470758 +1387241 +1902520 +1865642 +868101 +2278220 +790556 +2644847 +667438 +712902 +1499060 +1092272 +2533685 +960240 +612723 +2681132 +612778 +1184069 +1311301 +2533712 +667437 +612893 +651058 +790555 +2533727 +1103684 +1366126 +1729562 +2007655 +1519692 +1819953 +1004168 +1311328 +1201388 +2159983 +1352614 +612709 +2583578 +1389870 +1004171 +667490 +1103673 +1004131 +612894 +2261677 +2533667 +1311314 +1004125 +651063 +688078 +1073780 +790570 +1242178 +1004142 +1039924 +2583569 +1352608 +868063 +2533692 +612710 +1626668 +1753260 +667473 +2159947 +2085939 +1974904 +1004141 +1550379 +1499071 +667486 +1426455 +2644826 +688085 +1729570 +311944 +868086 +2261722 +2261709 +153935 +612724 +868059 +1941470 +612789 +1352619 +1326347 +1426476 +1519682 +612676 +1201386 +746677 +667471 +1398528 +153949 +1519700 +612878 +2416968 +528200 +721975 +1103667 +612829 +612802 +376384 +2513473 +1004175 +2261685 +1626653 +2261731 +1626664 +2625451 +2278219 +1988335 +1426459 +1426465 +85827 +1941473 +2644903 +1252826 +2684804 +2298612 +2063233 +1665085 +612936 +2583651 +2583696 +1078205 +1644594 +1391035 +2160058 +497605 +1092279 +2325473 +1690942 +1550413 +478232 +1711825 +2753745 +528216 +2160102 +1046186 +1273238 +2038957 +1960548 +1084165 +1391026 +1729604 +528250 +1974910 +1499093 +12780 +2038954 +528240 +250434 +1499083 +1626680 +238552 +1915415 +1273247 +1550400 +2160038 +2160061 +2385919 +1370343 +2160053 +2085969 +768438 +447158 +2533735 +2160130 +1370340 +2583699 +2385911 +2583641 +1426505 +2160113 +1550393 +528226 +2160094 +1130104 +1711838 +153961 +2840127 +790587 +1391031 +1719870 +2385913 +2788057 +1711831 +250444 +1550412 +2085966 +2788048 +960257 +1729607 +2788053 +1302635 +2644891 +1273241 +219064 +1273264 +1273240 +2325489 +1550397 +1426498 +2709929 +1519704 +2583616 +1302633 +528235 +2583652 +1729601 +790591 +2385929 +1960552 +1499075 +1690950 +1550398 +1753270 +2160118 +2000149 +2385935 +2160096 +478229 +1078200 +2583625 +2325465 +1865674 +2533730 +12785 +528248 +85840 +2160136 +1405470 +1499082 +790588 +501580 +2160039 +2644905 +2352025 +1988344 +528224 +1132034 +1690938 +1326358 +1550434 +343942 +2644881 +790575 +2583707 +2583729 +2645172 +2416997 +2533749 +1865756 +2417008 +1027944 +1040061 +1027968 +2583794 +1027976 +311979 +285355 +2644923 +2386029 +298723 +2385977 +1039996 +1729622 +1039951 +1252842 +311997 +1653577 +2583755 +2417039 +285379 +2417064 +1023531 +2645039 +1865709 +2416987 +2583747 +1111285 +1039991 +1644609 +2417068 +2417027 +1936251 +1647800 +1039992 +291096 +2645031 +2386060 +1039952 +2275661 +2645042 +291132 +1111286 +2644916 +1865760 +2645181 +291107 +1027958 +2644942 +1039984 +1915433 +2645080 +1644623 +1729637 +1039973 +1865733 +1729644 +2386026 +2386012 +285377 +1046210 +2275670 +1865736 +2275668 +291125 +2645078 +1040000 +1915441 +1644640 +285369 +2385960 +291148 +1729658 +1216059 +1040013 +2386008 +1753280 +311991 +1039962 +291129 +311966 +1027999 +1040011 +1729643 +1729610 +291090 +2417072 +1252844 +285359 +2645111 +2645136 +1729682 +291130 +1915454 +1915467 +2645163 +2386080 +2417020 +291078 +1046243 +1027982 +1902523 +2645112 +1046232 +2386073 +1915457 +2385976 +1027969 +2385946 +1706985 +2385999 +1644620 +1644646 +291092 +2645102 +2417011 +311964 +2645082 +1865702 +2386038 +1046248 +1046201 +2417050 +1647767 +2386048 +1027951 +2645137 +2583705 +2644925 +311965 +2386021 +2583731 +311983 +2645175 +311963 +2583708 +1027980 +311953 +2417003 +1046239 +2583759 +2533750 +1865757 +1865714 +291143 +2645161 +1039961 +2645027 +1865717 +1046197 +1046200 +2644960 +1111284 +2583769 +285346 +1729635 +1729614 +2417030 +2645097 +1711843 +312121 +2645376 +2681355 +1046305 +2645362 +1125005 +291241 +2645421 +1262875 +1124946 +1753346 +2645399 +312408 +1753523 +2583843 +312279 +312808 +291752 +291324 +312034 +312560 +1753347 +291676 +313279 +291459 +1753456 +491196 +2417079 +1936576 +2645252 +1936266 +390059 +1132094 +2645408 +1915596 +490999 +313004 +2681362 +291637 +2645464 +312817 +2645456 +2645553 +291909 +1753422 +2681297 +312073 +313143 +2417146 +313147 +1242203 +1915551 +2681303 +2413767 +313261 +2386149 +2417086 +1132142 +2645216 +1124737 +1753324 +2625541 +1132058 +1936554 +2645462 +291578 +1753343 +291252 +1262873 +312731 +1046258 +312983 +1915598 +1242224 +389871 +312740 +291859 +1936300 +1132101 +1132209 +312916 +312638 +312282 +291864 +1936557 +1729726 +1936586 +313190 +390044 +312425 +313287 +1902580 +1936481 +1936512 +291513 +1936393 +291491 +313180 +312352 +1915550 +389881 +312236 +291919 +2645511 +312693 +1124904 +312470 +312300 +1902618 +291696 +291431 +1902625 +313238 +1753384 +2625540 +1263030 +291238 +1046281 +2645286 +1753364 +312244 +1124769 +1902549 +2386140 +1753406 +390060 +2583907 +1902617 +291618 +390057 +1132200 +2645592 +2583929 +313270 +291839 +291518 +291936 +1915556 +491043 +313152 +389917 +2386126 +1753466 +1242209 +491201 +2625482 +1262871 +389885 +2681350 +1865774 +1263052 +291877 +1132057 +389864 +312921 +491177 +1753309 +2681235 +312472 +312962 +2645508 +389870 +1124968 +2645280 +313022 +312840 +390093 +1865770 +2413756 +312102 +1936583 +1753514 +1124754 +312762 +1865761 +1655847 +1936285 +2645206 +2681174 +1132051 +390067 +2583844 +1046290 +313259 +491084 +2645318 +2417110 +1046297 +312363 +1124942 +2625546 +312589 +312536 +313124 +1915502 +465650 +1936448 +2625491 +1262988 +1936588 +291496 +312458 +1936483 +491210 +313167 +1046251 +313210 +312614 +312453 +313067 +2645335 +312335 +1936362 +312607 +1902619 +312327 +2645482 +1902597 +2681163 +291643 +312934 +389858 +491050 +291836 +1262934 +1040145 +1936589 +2645357 +291329 +1865787 +491103 +491075 +1753418 +1936377 +1936398 +291201 +291392 +312207 +312466 +313158 +1936423 +2386136 +2681204 +491070 +312635 +1262889 +1753502 +312237 +1111293 +291671 +2413709 +312165 +312303 +1111294 +2645463 +291381 +1655831 +313017 +2645571 +313218 +1216079 +389824 +312400 +1902609 +2645295 +312899 +291890 +1915579 +1936295 +1124865 +312684 +2386107 +1753515 +312953 +389962 +312275 +291709 +312057 +291606 +2645306 +291734 +2625522 +1132207 +312405 +491119 +1915566 +1262993 +1040079 +491098 +291221 +312827 +312571 +312452 +285390 +291634 +389978 +2645283 +312355 +312959 +2645257 +2413783 +1915524 +312558 +312009 +291277 +1124866 +1124761 +1124827 +390082 +1936471 +2645391 +1263025 +490987 +291466 +313208 +1936349 +291777 +389989 +2681256 +491023 +313291 +2386125 +1242271 +390055 +1132055 +1936318 +1132072 +1753397 +2681232 +291940 +2386132 +2386137 +312864 +1130114 +313117 +1262958 +313101 +291393 +1263044 +2645285 +1132107 +2386151 +1046326 +312866 +312898 +389912 +491107 +1936270 +491148 +1252863 +491129 +291165 +1902567 +291586 +2645312 +2413685 +291524 +1915541 +312826 +1936382 +312798 +389852 +291245 +312836 +2681171 +2645311 +313068 +1753408 +291346 +312982 +390015 +291873 +1262970 +2645458 +312920 +1124826 +2583915 +291404 +312727 +312861 +291794 +2583867 +2417118 +312435 +1936381 +2645298 +1936309 +490978 +312950 +291914 +1902550 +291487 +291247 +491117 +2417148 +291583 +390077 +1753326 +1936338 +312040 +2645550 +312530 +1132123 +313072 +1865806 +312107 +389860 +312579 +1046283 +389980 +376394 +1124954 +291283 +2583849 +1242207 +1046287 +312621 +359211 +312468 +1936532 +390073 +491049 +1753400 +1124929 +1753381 +2625514 +1753288 +1124783 +312598 +1124751 +312404 +1046288 +313272 +1262923 +312784 +1252856 +291673 +291853 +1915572 +390078 +2645598 +1132225 +1124796 +312498 +1132239 +291923 +291625 +2417089 +312446 +1132105 +313007 +311998 +312665 +312794 +2417094 +1124867 +2625523 +1729692 +390011 +1936530 +291874 +291551 +291871 +291808 +1262898 +2625560 +1729724 +312917 +1263072 +1242266 +312426 +312463 +2681250 +384566 +1753383 +1124931 +1902570 +1753342 +1915581 +1936477 +389930 +1124787 +312730 +1124938 +291287 +1132158 +2645396 +313066 +313154 +478234 +312144 +312070 +1040103 +1936565 +1124814 +291361 +1902555 +1753476 +390018 +2645256 +1936288 +312161 +1655839 +312922 +291520 +312611 +1124874 +2645556 +389878 +389890 +1936401 +389958 +313048 +312695 +1040107 +384556 +2681158 +2681209 +1262999 +291665 +1936290 +491106 +1653609 +1753505 +312517 +2417100 +1902575 +1262913 +1040138 +1263008 +2681195 +291901 +491012 +2788073 +491057 +1124923 +312887 +1936516 +312151 +1865802 +291460 +1242252 +1262996 +1132215 +1753482 +1132157 +312516 +312683 +1132063 +1242237 +2583895 +291250 +2413699 +478250 +291723 +312159 +1902611 +312041 +312118 +2413744 +291463 +1915490 +2386160 +1936428 +1753530 +1262952 +312215 +312147 +1936606 +2681254 +1262881 +1132081 +1132251 +1865798 +2386094 +312586 +436229 +2645504 +2417084 +1124750 +2645326 +313161 +1124791 +1040069 +1124746 +1426579 +1405472 +688126 +2298618 +1690961 +1784472 +1216124 +2583976 +2160269 +1798498 +1865866 +85861 +759083 +1704537 +2160295 +1004202 +1550494 +2160325 +1087906 +612988 +2625578 +1865857 +2583983 +528270 +1092289 +2160352 +52067 +918852 +1865837 +2160316 +2479532 +2085976 +2160387 +2298635 +1798490 +918837 +960324 +2868831 +2583994 +1815192 +613007 +528301 +721996 +2584074 +2479513 +2160284 +2533760 +2479598 +960325 +2417159 +1484565 +768446 +1690969 +1798507 +868186 +2479554 +1865873 +2584079 +327427 +2645631 +1690968 +1242302 +376405 +2085993 +2583958 +790632 +2160209 +2160392 +1815185 +2645609 +2275692 +868123 +2261751 +1865874 +1426584 +2160304 +1242303 +759064 +868125 +2160179 +2533831 +1691007 +1865823 +1831216 +688115 +613012 +1550589 +2160364 +2386238 +334779 +1184089 +1704536 +2298650 +2479503 +1242306 +2160271 +2086043 +528300 +2584011 +1798502 +868146 +2584015 +528263 +528286 +960284 +2479471 +960308 +790608 +2069264 +2325517 +1550546 +2298644 +612950 +1326384 +790640 +2584053 +1550567 +612965 +2533786 +1798492 +1690998 +1941480 +918824 +2437482 +2160411 +2479482 +918861 +1550583 +1798469 +1484582 +1216114 +1915624 +1711863 +1004188 +688134 +2352036 +2325610 +1470796 +12819 +52084 +1550514 +2645619 +2513487 +2160404 +447171 +2325507 +868171 +2004645 +1711875 +1550512 +2261746 +1865887 +1092288 +612973 +2298624 +1352634 +1550536 +2645614 +1673037 +2868833 +759082 +2360570 +1798471 +12815 +688128 +1729729 +612996 +790627 +2386184 +2160239 +1644672 +2160170 +2086052 +2584084 +1550506 +1644674 +759080 +1078218 +1550487 +2386246 +2325519 +2160386 +1915602 +528255 +1915604 +2085994 +1711857 +1865852 +1184084 +908135 +2309438 +2513493 +868182 +1168156 +1550505 +2533779 +1263083 +612946 +790653 +613001 +2160201 +2160406 +1550540 +195315 +2160307 +2160293 +2298634 +2645604 +613017 +960269 +2645669 +2479583 +2584017 +868131 +2085980 +1184083 +2085977 +2583996 +612994 +1988351 +2069259 +153982 +2160299 +1125007 +1550574 +1690979 +960303 +1426571 +2086009 +2160182 +1499141 +85848 +195308 +868184 +1673043 +1865858 +2645677 +12834 +2160302 +1078222 +2160454 +365139 +868165 +2549298 +1673039 +1426541 +528254 +1138131 +903100 +2261747 +759060 +2625579 +2533827 +2645648 +1865829 +2583960 +613013 +1426559 +1078225 +2325499 +2008309 +2160183 +918828 +2325602 +465666 +2160191 +2325539 +2583999 +2868869 +759057 +2868863 +1078224 +1915614 +2533813 +1865828 +612960 +1326376 +1168151 +2479580 +2160270 +2437476 +1550556 +2584065 +12795 +1004189 +1470802 +1626687 +1004210 +1845787 +2533803 +334778 +2533809 +2038995 +12833 +2645665 +2298638 +1550485 +1626701 +1690967 +2868834 +2479586 +1184074 +1550569 +768456 +2160301 +1550613 +2086034 +790629 +1111305 +2513483 +1831218 +2325506 +1626689 +1831200 +1426556 +2261743 +2583985 +2360576 +2069252 +960312 +1673046 +2360566 +2437475 +2069249 +1252868 +2533756 +1691001 +1550472 +2298643 +1004205 +2160357 +651075 +2645683 +2479530 +2479562 +2278238 +2584253 +1132264 +384590 +2788074 +2645753 +313349 +2645793 +1028075 +313322 +2278235 +292017 +2584262 +313367 +285454 +2386348 +291992 +285405 +2584168 +2855329 +2645695 +2584181 +2584289 +313400 +1655888 +1040157 +1936624 +2645724 +2645777 +2413793 +2584210 +1040207 +285428 +2681382 +1125030 +1655889 +313381 +1644697 +1023539 +285431 +2584112 +2645749 +1729777 +1023540 +1028092 +313325 +2645789 +2645735 +1028066 +2275706 +1263098 +2584129 +2584161 +1644757 +2645713 +2584261 +1644677 +1040228 +313364 +1028032 +1028082 +2386343 +298751 +1753547 +390123 +2584186 +292009 +298750 +2584174 +2584102 +2275723 +2386375 +2625586 +1111319 +1040166 +2386338 +2645760 +2413792 +285409 +1865912 +1132257 +1644679 +2868898 +1753555 +2584252 +1040158 +2584193 +1040155 +1644775 +2827470 +1040202 +1902639 +1729764 +285436 +1040152 +313371 +1729773 +313393 +1040176 +1653632 +1644676 +1647811 +1865923 +2645812 +2386350 +1644772 +1028033 +2584213 +2645778 +2417185 +1711883 +2584173 +354637 +1644702 +1111310 +2868911 +376418 +2584284 +1915656 +1644704 +365151 +2386320 +2645811 +2584265 +2855290 +1242319 +1242308 +2584108 +1040190 +2386358 +1040160 +390127 +1644692 +2533835 +2584189 +2625599 +1028042 +1729804 +2386367 +2645696 +1644774 +2584110 +2584255 +1040197 +1040204 +1040180 +298740 +1644761 +1252873 +1028018 +2386335 +2386315 +2645780 +2584227 +1644756 +1647838 +1915648 +1644725 +1644776 +1711881 +298753 +1040187 +291980 +291972 +1028097 +1647832 +1028080 +1644688 +2625593 +298755 +1028076 +2386345 +1644710 +2584246 +2645765 +2584194 +2584266 +313392 +313386 +1647844 +2855315 +1865935 +1644733 +2625596 +1865913 +1040216 +2584281 +1125016 +291945 +384571 +2479618 +1484586 +1729829 +1111328 +1130135 +1865965 +1915698 +2004646 +2160592 +528355 +1691039 +1711889 +2479624 +1626735 +1550663 +768468 +1626720 +384607 +478270 +918865 +1711904 +2160575 +528310 +2160493 +868218 +528333 +1626749 +1028121 +613041 +2584382 +1915694 +2386425 +2160593 +2479604 +2645857 +1293315 +1326406 +2261790 +52092 +2386420 +2160468 +1644792 +1293321 +2645863 +1293313 +2584318 +528335 +2160528 +2160461 +1028112 +271308 +2584315 +2417189 +2386410 +688146 +1647855 +2645887 +1130136 +1004234 +613043 +2645913 +1216146 +868197 +2160513 +2160620 +2160559 +2360587 +1426633 +1004235 +1936627 +1519716 +2584400 +1470836 +1004241 +1729812 +528350 +1470830 +1729837 +1426666 +2584307 +2069269 +12843 +2584330 +2261782 +2261781 +1426626 +271310 +1326398 +2645866 +1519720 +868203 +2645815 +1711912 +2386418 +2360588 +528318 +2160474 +960337 +1040282 +1673057 +2386428 +250448 +2584381 +478267 +1711900 +2160567 +292033 +478254 +712935 +1028125 +2584306 +1302638 +1352638 +868229 +1951037 +2160518 +1626747 +2699423 +2160464 +2533859 +2160560 +1381891 +2584376 +2645881 +2645818 +1936626 +1711888 +2261766 +1405485 +271316 +1004224 +12848 +1653640 +2645872 +790703 +2584347 +1915683 +790696 +271315 +2160520 +941239 +2160508 +2086069 +2039012 +2160494 +2160612 +868221 +2386417 +2645833 +12844 +941230 +1778061 +903116 +313411 +1729830 +2584403 +1915685 +1426623 +2645838 +1028120 +528354 +1550660 +1370350 +1040278 +2325806 +2086148 +2584497 +1915709 +2479754 +759127 +1798560 +1499162 +2645948 +2160769 +1078265 +2479674 +2325821 +12980 +2325783 +1078254 +759154 +2437500 +2069272 +2386443 +1149092 +960352 +2086163 +528377 +2160730 +1004256 +2011997 +960425 +12897 +2086206 +2086194 +1798530 +1902647 +2479634 +2479632 +1960580 +2645922 +1798609 +1092310 +2283176 +918883 +2742888 +2437549 +1798526 +2513509 +1766474 +1326426 +2086173 +2584455 +2584472 +2437514 +2533922 +2584506 +1273301 +12945 +941242 +2325687 +2533950 +2160761 +960426 +403379 +250473 +2533999 +1484594 +2533934 +2360605 +1798543 +2437526 +2160725 +1866011 +1499183 +250474 +1405498 +1647856 +528366 +1426742 +2533885 +2086093 +2283189 +2160758 +1092311 +1831250 +2533945 +2160669 +960369 +12938 +2160799 +2298679 +2086186 +12910 +1815211 +2584448 +1778085 +2533896 +2533983 +1352644 +2325656 +759139 +2160656 +1405490 +1484593 +1673087 +2533996 +1426718 +2325840 +2283172 +1426727 +2479821 +2086080 +2325877 +2325863 +2584435 +1084193 +1798517 +1798556 +2533958 +2479742 +918878 +2160768 +1550703 +1798597 +1216155 +2325774 +941244 +759122 +1798544 +2160703 +2533902 +2325734 +790712 +1798620 +2086197 +918900 +1798527 +2160738 +2283192 +2479782 +2086147 +2533954 +1798624 +52100 +759130 +2325793 +1865984 +1866007 +2298691 +960370 +2160763 +12875 +2386452 +1499181 +2417194 +1673071 +2325718 +1798594 +1915728 +12916 +2425816 +1550678 +250479 +1915729 +1798613 +2479721 +1778067 +2160678 +2584505 +12885 +2039020 +1798587 +12949 +12987 +2584415 +2360611 +918910 +960371 +12905 +2325654 +2160806 +1778068 +2437536 +2533942 +528373 +2584529 +1653643 +2479662 +2479689 +2437534 +1798596 +2479778 +2283183 +2479675 +2160744 +2479774 +271322 +2437515 +12888 +250482 +2160645 +1815201 +960355 +2479651 +2086119 +12935 +428359 +250465 +1004264 +1391052 +2004647 +1426709 +2086083 +2645923 +52101 +2533916 +1831242 +1078262 +1499174 +2584521 +2325868 +2584411 +2160651 +2160690 +2325870 +1216151 +1831251 +2479644 +2325682 +2160786 +478275 +2479766 +2479737 +465679 +2645928 +1673088 +1326419 +2533949 +12931 +2261800 +2437511 +2437544 +2645966 +2325722 +2584468 +2325808 +2325705 +1831240 +2479820 +2584513 +2479807 +1499184 +2584548 +2160635 +1004255 +2160694 +960383 +759102 +1550681 +491230 +13003 +2325665 +2360610 +2386469 +2325651 +2325727 +1798564 +2160847 +2160889 +2479972 +790740 +2584585 +2386473 +2534009 +2735951 +2646002 +1550748 +2160874 +528420 +2479955 +1691110 +722005 +1550739 +1915750 +722009 +2479893 +2160934 +2021984 +528385 +1065800 +2753773 +2160869 +1960583 +2646008 +2721761 +2479930 +2039057 +1691087 +2325891 +1691116 +2160895 +1691122 +528392 +1394529 +2646028 +1691075 +2721754 +1352666 +2646056 +1381897 +1302647 +2735950 +2479881 +1673101 +1691111 +2584550 +1484600 +2479865 +2325896 +2645996 +2479842 +2721758 +1352660 +2739673 +2021986 +528434 +2721764 +2584564 +2646044 +2584609 +1915752 +2160982 +2479876 +2646050 +2479887 +1387260 +1691126 +2086214 +2479920 +2753768 +2021990 +1550728 +2039039 +1691136 +1960584 +2646015 +2645983 +2325925 +1387266 +2479849 +722011 +2584605 +2646022 +2479839 +2161003 +2646032 +2160876 +2753769 +2160947 +2721763 +2753772 +2160901 +1915755 +2584555 +1691096 +790736 +2161002 +2479966 +1302649 +1691137 +790743 +1866067 +85920 +1691156 +528453 +85922 +2298724 +1326468 +1252886 +1326458 +1326436 +2646081 +1691143 +960435 +1798651 +1111333 +2298718 +751897 +1691164 +1426763 +1798655 +2325957 +2016015 +2325958 +688157 +1550775 +85913 +651096 +2646073 +1426760 +2161025 +1915795 +960430 +85905 +2480068 +2684812 +1798674 +85910 +2480100 +2325934 +85903 +2739704 +2000157 +528463 +1778104 +478279 +1216157 +1691182 +1550776 +2746624 +1915777 +751915 +1550777 +1866054 +2386493 +1499195 +2161045 +1326479 +1273326 +250490 +2425819 +1866048 +1960616 +1326431 +2480071 +1691180 +790757 +960442 +1866051 +85921 +528462 +1691181 +2479991 +2480073 +2480054 +1326435 +2480116 +2386488 +751918 +1550793 +1550762 +1831261 +2646078 +1426755 +1798652 +1691162 +2480070 +735402 +2016020 +2161061 +2161057 +790754 +960434 +2534019 +1798664 +2479993 +2021995 +2325948 +651087 +2021991 +2746622 +1161313 +85899 +1798661 +1394533 +2161012 +85918 +85901 +2437564 +735405 +2479985 +751891 +1960610 +2721765 +1866063 +1302658 +1915776 +85904 +1866066 +384609 +1550784 +1028132 +960436 +2325941 +2646099 +2753785 +1273329 +2479999 +2326023 +428365 +759177 +1184133 +2161164 +1161338 +2646147 +1831279 +1065818 +960526 +790787 +2161113 +447208 +528491 +1065821 +528472 +2788086 +2325999 +688183 +528486 +2480237 +960514 +1798689 +396526 +2480207 +1426773 +334797 +2534026 +85968 +1550823 +2161135 +2788084 +52111 +868270 +960453 +1426776 +13042 +1184137 +2298736 +1798709 +1201404 +1626770 +2480286 +85936 +250493 +1798724 +2646109 +2646137 +1815217 +271337 +396524 +1673145 +2480199 +2646122 +759178 +2326000 +1729884 +1484608 +1815214 +238569 +1673130 +1673114 +960519 +790851 +790842 +2646116 +1626786 +1138144 +1055469 +1550841 +918937 +1778108 +1831278 +85933 +1326481 +2261813 +1004277 +2480172 +2480218 +1831281 +1815222 +2161120 +1673135 +2283198 +712940 +528482 +2298741 +2480157 +2480197 +790860 +327434 +271327 +1915797 +2161121 +154000 +1626776 +85963 +1046364 +2480281 +2646139 +1550848 +1866087 +13034 +2480147 +2386497 +2480143 +447212 +1798703 +1352691 +1484609 +428362 +2646142 +1866110 +2480171 +1242324 +1673138 +2161103 +960501 +2298754 +1798698 +1168159 +2161190 +2480132 +1798718 +2437581 +1831276 +1155337 +2360627 +1111340 +960507 +238573 +2584674 +1815228 +271336 +13048 +2016030 +868247 +2584682 +2386513 +790844 +465685 +2584675 +1673117 +1050638 +2480291 +1673129 +960490 +313415 +1184131 +1915824 +1470865 +2480131 +2161157 +2480179 +1845795 +13031 +2261807 +790824 +960494 +1673109 +1263111 +2480246 +1394537 +1550879 +960535 +2646117 +1915800 +354642 +1902653 +960529 +903134 +1155338 +941262 +2161136 +399694 +688172 +960461 +2480195 +1550829 +2646131 +2326003 +1125033 +1381903 +2480121 +1819966 +1866078 +2326013 +1831280 +2326004 +960471 +790828 +1111349 +1831273 +1065820 +1168161 +960475 +354644 +250500 +347710 +960472 +403392 +13041 +2480140 +960483 +447216 +1133013 +1798690 +2480214 +195324 +2161158 +903136 +2480181 +1550895 +2413796 +2161122 +960512 +1673154 +2063247 +868268 +2480257 +154011 +960531 +2039071 +1550878 +1487866 +2480276 +1936632 +941263 +2161137 +2480225 +1426795 +52128 +207177 +1050642 +2326028 +1711927 +2534034 +688190 +1673161 +903145 +1499218 +271344 +2298767 +868288 +1409313 +2283202 +2584693 +2086243 +918973 +1711926 +2352062 +2261829 +2480300 +1550915 +2480306 +868282 +2584700 +2480301 +1326486 +2261824 +1653644 +1051769 +759187 +1662391 +1866114 +1673158 +868301 +1550918 +2039076 +1550919 +1902654 +238583 +52126 +1499224 +313417 +1519740 +13052 +1426806 +746690 +271350 +2279786 +1769037 +868303 +2283205 +790897 +790891 +2534035 +2360634 +195345 +2326037 +1484616 +918977 +688192 +1673165 +790896 +1381905 +1499228 +52130 +1784480 +292040 +1866132 +419418 +2480318 +154031 +2086245 +2646162 +2326043 +868304 +1252898 +154065 +271386 +271387 +347715 +410763 +419422 +2161247 +407121 +1168165 +419408 +2480326 +2326051 +271382 +2584708 +154038 +207204 +347722 +1626802 +347721 +271367 +207190 +419425 +1087913 +207198 +376434 +1673166 +478292 +1784479 +419406 +2480315 +491243 +2480323 +271366 +271383 +1550928 +2298774 +2352064 +207183 +2161285 +2480409 +2753807 +751928 +1691241 +751953 +1915842 +1673171 +2039117 +1326504 +2326082 +1691234 +2298776 +1798744 +1138153 +1326497 +2739707 +2086253 +2480434 +688216 +688220 +2480344 +1426849 +2000176 +1691200 +2480487 +2326118 +2480372 +2386545 +2326116 +2086257 +2161253 +1326529 +2480479 +2161287 +2425831 +1831306 +528530 +2039114 +1426861 +2022011 +1065837 +1691198 +1326534 +2480404 +2584746 +1426869 +2646195 +1426868 +528528 +1426832 +1711931 +1673170 +1065836 +2161315 +1065830 +2746639 +1974941 +1988385 +528529 +1550970 +1111363 +2584741 +2016035 +2326054 +1988373 +751937 +2480470 +2480342 +2386539 +2646181 +960547 +1550949 +2534052 +1426858 +2480419 +1326513 +2386536 +2086271 +2086247 +1426816 +688212 +1387278 +2739717 +2699436 +2161331 +1426814 +2480402 +528515 +1426842 +2004655 +751940 +2753804 +2012004 +2684830 +2534050 +2298784 +2326099 +1691233 +2684827 +1550950 +751931 +2161303 +1326514 +2584732 +1550932 +2360637 +2039103 +1831310 +1988379 +2161291 +403397 +1184159 +528521 +2086264 +2161294 +2326094 +2646205 +2161317 +1065834 +960552 +1866134 +2646237 +1426859 +2709978 +2788091 +1550962 +1766488 +2480421 +1499232 +2646234 +2534054 +1326545 +2480369 +2480596 +1550993 +2298805 +2161360 +2386573 +2086286 +2691886 +2022023 +2386559 +1394561 +2827531 +2000195 +2480511 +1216187 +2753825 +2721778 +2386592 +2827495 +2646274 +2437613 +1719888 +2298787 +2691885 +2386585 +1915856 +1394557 +2534060 +2827475 +2039163 +2827514 +2039178 +1326566 +2161359 +2746647 +1326608 +2480538 +1974965 +2746653 +1988391 +2004666 +2386590 +2480687 +2480652 +2735958 +528549 +2480663 +2827481 +2480533 +2827517 +2721781 +2646297 +2480675 +2004671 +2584813 +2480643 +2386572 +1394544 +2161337 +528547 +1798747 +1326578 +2709981 +2480537 +2039189 +2646283 +2480612 +2298806 +2480678 +528551 +2480535 +2161369 +2086279 +2480530 +2039144 +2646301 +1184162 +2298814 +2480524 +1729916 +2161398 +2480499 +1499239 +2480577 +1866151 +2480495 +2480593 +1915852 +2691889 +2386580 +2827494 +2691880 +2480548 +1326588 +2004668 +2691883 +2646318 +1326604 +2735964 +2161341 +2746649 +1381913 +1216185 +2691878 +2480532 +1394555 +1394552 +2016050 +2386561 +2161357 +1550988 +528553 +2646329 +1551009 +2827499 +2480634 +2480656 +2480566 +2584789 +2086290 +1550999 +219101 +722026 +1398546 +2086289 +528543 +2584776 +2161413 +2161378 +1988395 +2827473 +2039165 +1378111 +2788093 +1974953 +2584810 +2326206 +2161512 +1866186 +918993 +1711942 +2584835 +2386630 +2584881 +2681404 +2534092 +2584829 +1866180 +2585003 +2840149 +868320 +528634 +2480737 +2646431 +613145 +313421 +2646463 +1798770 +1092348 +2161508 +790922 +2646522 +2646534 +1216210 +2584815 +2646572 +85993 +2480730 +2681405 +941292 +2368678 +2584921 +613154 +1087919 +2840181 +1936636 +491272 +2584939 +2480760 +1046368 +2326144 +2646485 +285465 +1023553 +2646591 +2646398 +1242352 +491268 +2840175 +1815243 +1798765 +1916083 +52145 +1125038 +2261866 +2086316 +1691255 +2534119 +1915953 +2161463 +2161421 +1024781 +292055 +1551040 +2646511 +1004327 +868315 +868334 +2584970 +2584994 +1647862 +1092355 +1915957 +2584855 +1915916 +2646478 +1470902 +1916049 +1028153 +2326147 +2386650 +2063254 +85986 +1004334 +1831331 +1111397 +1040318 +1915979 +2360665 +52150 +2646494 +1974972 +1916011 +2646454 +1155341 +250511 +2161612 +1175799 +2161558 +1073803 +13093 +1242341 +1831320 +1916027 +790900 +1916046 +1866201 +2352082 +2646386 +2646416 +2646613 +491270 +2646519 +2326168 +2840167 +2298824 +1103728 +2161456 +1087916 +2261875 +1086402 +2534072 +2646359 +2646558 +1915966 +2480765 +2261880 +1729940 +1729929 +2413802 +2480783 +2646582 +2646457 +1753569 +1551079 +2326134 +1915929 +2039229 +1216237 +1866199 +1626829 +1916079 +2161446 +2534140 +2386699 +2584875 +1866177 +1916025 +2161481 +2584889 +1040334 +2584987 +1815258 +1711952 +712954 +1216243 +2161606 +1111403 +1470899 +1729939 +1941501 +1915893 +1988400 +2584820 +1753567 +1409324 +1936644 +2585011 +1719898 +2386620 +2840183 +1915999 +1092342 +2326136 +2386695 +1626824 +1866166 +1499253 +1691251 +2480740 +1711949 +960602 +1216194 +868336 +1647871 +2480731 +285470 +1216197 +2584898 +285463 +2069282 +960591 +1426888 +1499256 +2584819 +2352108 +1092360 +2161527 +2161520 +2584957 +2161581 +2352103 +2534115 +2584833 +195354 +2413819 +2086303 +2261865 +313420 +1175800 +528659 +2646458 +1470898 +1242338 +292058 +2386685 +2161524 +2513533 +2646594 +1551074 +918986 +2646445 +2039230 +1916030 +2161419 +2646391 +1111399 +1915962 +292063 +1653647 +2326128 +2161439 +2261867 +918980 +1974966 +1426889 +1866185 +1499267 +1519752 +1626839 +2584995 +2584845 +868344 +1729952 +2039227 +13099 +376442 +447230 +2326179 +1915924 +154113 +2354389 +528646 +1729928 +918996 +1004321 +2480779 +2161433 +1216209 +2161526 +2646606 +1103711 +271392 +2352089 +2086291 +2646580 +2386691 +52141 +1216235 +2646421 +285460 +1831358 +2584997 +2584925 +1866158 +1866164 +85979 +1915914 +688247 +1916020 +1216229 +327453 +613125 +1138155 +2646424 +2480780 +2584850 +1499272 +1719892 +2646502 +1915950 +86002 +1216193 +1866200 +1915873 +2584996 +2039220 +2261857 +359239 +2584967 +2534117 +1866165 +2584873 +1941494 +219103 +2326197 +2534134 +1023564 +1941496 +2161480 +1916006 +528651 +1103714 +207217 +1915990 +154096 +528658 +2584984 +154114 +1484624 +1866297 +2646684 +2386711 +2298836 +403399 +2480841 +688269 +13125 +688273 +1866279 +2386720 +1866305 +759207 +195364 +1691280 +1551146 +2161678 +790938 +447232 +2069288 +528749 +2585181 +722031 +2699446 +2161723 +1405520 +207225 +195367 +1252906 +2513539 +1866303 +1902681 +790960 +960621 +2646690 +2161703 +195368 +2585210 +790951 +1484623 +2480806 +1426918 +528688 +2646689 +790962 +2788123 +2691897 +790952 +1381920 +688297 +1184204 +1426935 +1916102 +219124 +1078280 +613167 +1960644 +2534173 +1426947 +722028 +1711958 +1086411 +2585111 +2585021 +2585132 +428384 +528753 +2646688 +960632 +2646642 +2326212 +2161688 +722035 +1370376 +1326642 +1704553 +2480791 +1551131 +2386731 +960626 +1138158 +2161717 +960619 +1273354 +1866242 +2585040 +1273373 +1103733 +2585214 +219111 +447258 +1326665 +2585051 +2585081 +1866290 +528683 +1831398 +219121 +1729966 +1960646 +195363 +1111413 +1326650 +1551096 +2326210 +688302 +1626841 +238604 +1729975 +2480813 +2585191 +790940 +613166 +2386743 +86019 +250515 +219110 +1866241 +688289 +1831399 +528752 +447243 +1626846 +2585168 +1866233 +1499300 +2585128 +1551098 +2437624 +1691268 +2753848 +376450 +2480804 +790955 +2646653 +1866243 +334808 +2646696 +2534180 +2585025 +2360675 +1352720 +2480840 +688280 +960618 +465723 +1551113 +1916127 +1691270 +1394570 +790947 +1326648 +1273345 +1551149 +1551102 +1902682 +2386777 +688272 +2585042 +1831366 +2646678 +919014 +1551117 +1626844 +1391054 +1729980 +2646683 +2480837 +1916124 +759206 +1711960 +1551152 +2480789 +2161681 +528714 +919024 +298785 +688299 +1273371 +1426927 +2386751 +1326636 +2161691 +2646691 +1711954 +1916121 +2326215 +2585138 +2161661 +219112 +1866286 +1798789 +2585156 +376452 +1960634 +2534157 +2039249 +384621 +528726 +528701 +2480800 +298775 +1551161 +1831386 +2161654 +1216253 +447264 +2646645 +1711964 +2585056 +2086331 +2480838 +2585091 +528741 +298789 +1184222 +1831375 +2086337 +903171 +1916101 +1729987 +1092373 +2646662 +1184199 +1691276 +13130 +1252960 +1916134 +86041 +2298841 +1866323 +960652 +2360689 +2386801 +2039256 +1161366 +1916136 +2161731 +1866341 +1252954 +1216264 +13127 +354651 +1161358 +1252953 +1252928 +1988410 +1184242 +1960647 +1252924 +1691290 +2585245 +960650 +2480863 +195372 +1691305 +688319 +250524 +1691302 +1551198 +1161353 +1252907 +2585229 +1798803 +250525 +1831409 +2386806 +2161730 +1798796 +1252929 +86029 +1216268 +1161384 +1216261 +688321 +195375 +688322 +1916147 +219129 +1916145 +960646 +1111438 +2646725 +2326246 +960639 +1798802 +1916130 +2326247 +790991 +688312 +1092385 +1551189 +1252947 +334813 +1252918 +960657 +722041 +2326249 +219133 +2585248 +919045 +2480900 +1626864 +1216290 +1691322 +13159 +376481 +2480876 +2585268 +528819 +2480880 +1916190 +1004343 +1626862 +1902694 +195381 +1426964 +2681423 +1626889 +1028184 +2585291 +1004344 +154133 +1626882 +1798820 +528840 +376474 +238639 +528835 +2585318 +1519784 +790997 +2753855 +1092387 +2646773 +1499311 +1201429 +1673222 +791025 +1936665 +1242366 +688350 +2161763 +1815263 +1111461 +2437636 +2549305 +528786 +791010 +1142668 +2646770 +2585294 +1916254 +2022039 +613191 +2739740 +2585325 +1691323 +688338 +1040341 +528826 +1673231 +2646862 +2161749 +1551257 +1974986 +2480979 +790996 +919037 +238638 +941313 +791007 +1916220 +613173 +1024785 +613184 +528825 +2261894 +1273387 +919047 +1936664 +465725 +1103734 +1916216 +86055 +2480990 +447323 +1815276 +1184250 +1326677 +376454 +238626 +1815294 +1691320 +1673228 +1242391 +1201431 +2646831 +1626890 +1519785 +2480914 +2585251 +1691340 +2480957 +2326267 +1387287 +1551273 +1815287 +2746669 +712967 +1916246 +2480885 +2534243 +1815286 +1426968 +1092386 +2480873 +1551246 +2480882 +1916201 +86063 +13158 +347729 +2326261 +1381924 +919043 +712976 +2161754 +376483 +2585297 +1916209 +1916202 +1242379 +2753856 +2585277 +2646787 +2480927 +941335 +2534241 +1815293 +1936668 +2585286 +1352753 +1760552 +52183 +376475 +2646820 +1902696 +528845 +1730004 +1398566 +1111464 +1691331 +1242370 +238640 +2326285 +271401 +2386817 +1916222 +334816 +2480998 +2646808 +1387286 +1389897 +2360691 +2585320 +1778134 +688368 +365162 +2646866 +2585273 +2480877 +2016066 +2585309 +465730 +613199 +1216317 +528799 +759211 +2513554 +1387280 +2746667 +195380 +1551254 +2480908 +1626893 +613198 +1866381 +528849 +2480923 +219136 +941328 +238610 +738090 +2480933 +2585280 +1370386 +2261888 +2480953 +1916240 +1293332 +2480964 +2480970 +960659 +1551212 +2646768 +1326689 +1242397 +2386829 +2000222 +2481060 +2646965 +2585336 +390145 +1719906 +86069 +1023569 +1866430 +351960 +1730018 +960716 +2326296 +791040 +743820 +528868 +688380 +960757 +2481035 +1691368 +688389 +1626915 +1111498 +52192 +497643 +688407 +1078289 +528889 +688415 +1394590 +2481058 +2534250 +1470923 +86071 +1647883 +1711983 +1551305 +238647 +2161848 +919059 +347735 +1960658 +13162 +2481088 +2585390 +1084197 +1974996 +1551292 +2646904 +2326327 +960737 +1216350 +2326322 +2161791 +2016077 +2585345 +447357 +528907 +2585351 +751990 +1691359 +960728 +2161795 +1065870 +2481105 +1551290 +2646905 +528903 +1352767 +1065869 +1004369 +195383 +1916263 +2386844 +2585383 +791033 +1626901 +941339 +1866461 +1730013 +86083 +1866455 +1142670 +2646895 +1960659 +1730026 +960692 +688402 +327461 +2646896 +1263121 +1757411 +1866474 +791052 +2437646 +722051 +1711977 +2161830 +613217 +447326 +759217 +2585361 +2585378 +13167 +2646913 +86089 +86075 +1391062 +2746671 +1753582 +351966 +1370401 +2646885 +1149124 +1326728 +868383 +528869 +2481046 +1125060 +1149125 +722052 +422557 +1161400 +528855 +2585366 +1831422 +528901 +791065 +2161810 +1916284 +285487 +2585392 +1499321 +1519793 +2481032 +2161847 +1866475 +2646903 +1673245 +2016090 +2827540 +2646946 +2481118 +960748 +2161807 +2326339 +613204 +2386842 +1426991 +2646971 +219152 +2039259 +1704565 +2585381 +1551337 +334835 +2585368 +2326294 +2161818 +2104179 +2283222 +960752 +1551327 +1866458 +2753863 +1866412 +2386838 +960758 +403410 +1499315 +1394579 +1974997 +2326320 +2298855 +791056 +354654 +154152 +1326705 +1831428 +868408 +2646931 +1941510 +1073824 +1111516 +2086361 +154142 +428394 +2646880 +1149127 +1866433 +2326330 +1499329 +2585388 +1988429 +1216333 +1004368 +1866490 +919064 +1626908 +2481111 +1916272 +2004685 +1352761 +960718 +2646871 +2360694 +791034 +1389902 +688387 +2022068 +447353 +1778146 +447368 +2481178 +1551443 +1184303 +447374 +2086370 +154169 +2086368 +447389 +791092 +1798930 +2481261 +1798925 +2481216 +1988446 +195408 +1216409 +1499341 +528911 +1730031 +1798893 +868428 +1798928 +1626938 +1149146 +1111528 +86136 +1216397 +903187 +1499334 +1551433 +1142671 +1916322 +2298869 +1626935 +1551468 +195397 +2261908 +250532 +2481202 +1426995 +1086415 +1142673 +238671 +2481245 +1149148 +735447 +1065887 +2646989 +868420 +1673291 +2481219 +271406 +1073843 +1798879 +2022084 +903179 +1831454 +2481244 +1916330 +2481147 +688459 +86100 +2298876 +2437656 +2481206 +2481252 +1065903 +688438 +688444 +1662414 +712992 +1866503 +1798902 +1073832 +2481230 +1626942 +712995 +1626923 +1065901 +1326729 +1673279 +2481156 +2298875 +2386848 +960794 +613226 +919078 +86107 +1665099 +1551392 +2585404 +2161910 +1798931 +1326742 +465747 +1766494 +759225 +2161891 +919067 +1427005 +791128 +1138168 +2086373 +1065890 +1673260 +1551379 +195396 +13196 +1798934 +1662412 +2481203 +2481250 +447376 +2354390 +2161905 +86116 +1427000 +1184292 +791115 +422581 +238662 +1155346 +238666 +1184299 +1673254 +1866509 +1691381 +497675 +1499335 +1184307 +1242404 +154163 +1798943 +613230 +1216400 +1484640 +688455 +1216404 +1073829 +1427006 +528933 +1798940 +1626932 +1149131 +2481210 +1065879 +86101 +403425 +1065907 +2000235 +2481264 +207241 +428398 +1798885 +1138183 +791090 +422592 +1326739 +1551462 +1073850 +528935 +422584 +791086 +2481200 +759227 +1138185 +52199 +2646980 +1073851 +497671 +1092401 +688440 +2788139 +2681426 +1866525 +1798884 +2161877 +1387302 +1798947 +1389904 +497674 +1499338 +791114 +447379 +1216388 +1216413 +2004696 +1798859 +1184295 +1798876 +2161872 +2481242 +903178 +1326732 +1326766 +2386862 +207252 +491295 +868469 +1142685 +868567 +1551562 +1730043 +1263130 +1902708 +1627058 +688492 +1470991 +1626976 +1519816 +941401 +1866553 +2086377 +390150 +1142677 +2352155 +752008 +941366 +2585424 +1263123 +613303 +2162059 +1815374 +868550 +271462 +1627055 +613275 +1125066 +1004464 +1936682 +1381930 +1125068 +238696 +2352180 +1902706 +1916332 +1627004 +154260 +2513572 +688490 +688497 +2326378 +1815363 +1073860 +491299 +154241 +960835 +1004400 +2326412 +1352771 +752009 +1820008 +1691390 +2585433 +868449 +2162045 +528970 +919091 +154304 +52216 +2360707 +219168 +422607 +1815334 +334842 +868562 +1948096 +2437674 +52217 +1242436 +1470960 +154213 +2513605 +195410 +1706991 +868473 +1662425 +1662422 +2585453 +154226 +1004471 +1111544 +1551478 +436263 +154282 +613325 +2513574 +1004463 +1627047 +347751 +2162018 +2298904 +868519 +2063291 +2513587 +1691397 +1084205 +1902711 +1103757 +2162069 +1627081 +688496 +713008 +334854 +422605 +359255 +1111539 +154263 +1125069 +1815319 +13199 +1242447 +1004405 +2437662 +52246 +1168167 +1551520 +2326440 +1665106 +416174 +868478 +1551553 +2585452 +791151 +960830 +960819 +908153 +2481305 +868490 +2261973 +271460 +1916336 +2261924 +154185 +1627050 +868534 +1201446 +2261944 +2421689 +347747 +688475 +1845820 +908150 +1470938 +195419 +52220 +1326763 +1815378 +1551519 +1711994 +2261926 +271442 +1778164 +347739 +2162052 +1551506 +613324 +436260 +2352156 +1175810 +2425842 +2298888 +2261993 +447398 +1866557 +1778160 +1551492 +154265 +2063276 +52204 +941362 +1866538 +1626967 +154224 +376546 +713023 +1551573 +2262019 +2585440 +868507 +868456 +52242 +2162004 +1004443 +1134814 +1975008 +941393 +376534 +2437676 +868489 +1398587 +1627042 +447401 +2162040 +1902735 +1470999 +2326379 +1691408 +2352179 +1902771 +1168177 +1706992 +1866536 +1815326 +613261 +1551537 +2016114 +1004432 +613258 +868560 +1055489 +613305 +465754 +334856 +613234 +1778165 +154264 +1960670 +2161922 +2161974 +1936686 +1470935 +154297 +738095 +2283228 +2261934 +2585423 +347764 +1184327 +1845827 +2517357 +960803 +1487884 +868523 +2161928 +752003 +347750 +868497 +2326422 +2309465 +1073857 +941400 +376541 +2513599 +688486 +2161924 +960802 +1626982 +238682 +271444 +2413834 +1960668 +52221 +743827 +2000249 +399707 +207254 +219171 +399725 +1004494 +2731161 +1073864 +1551480 +422631 +1866533 +688474 +2326392 +868595 +1626972 +1866546 +376537 +1707798 +1902732 +292078 +868492 +1004465 +422602 +1201455 +1409326 +2437675 +376543 +613292 +1551567 +1682950 +868549 +1155358 +613246 +428400 +868495 +2063305 +903193 +868487 +868479 +1004484 +271461 +1216425 +1168178 +1004429 +2444263 +1975007 +2585428 +436287 +868518 +1936679 +2261939 +1470959 +1902709 +2549308 +422629 +465773 +1055487 +1004413 +1719916 +154267 +334860 +2161995 +868485 +2262014 +207266 +2161942 +735450 +1004450 +667498 +399702 +1326764 +1626978 +2104193 +1902731 +528959 +1626989 +2161935 +960808 +1902764 +2534272 +1673306 +1551521 +1142688 +1902756 +1201444 +2513592 +1691392 +2326393 +2386864 +2326405 +2161990 +1866551 +2298919 +2298885 +2735966 +2161919 +941402 +1902705 +2298899 +528944 +1866577 +1551513 +1778157 +154207 +868530 +1626974 +2481317 +2162071 +1798967 +154247 +422622 +1916333 +1778162 +1326770 +2481373 +960896 +1184330 +334874 +1799009 +1184331 +271467 +1138198 +1149180 +52275 +960894 +1798977 +1370413 +688506 +941433 +2063336 +2481369 +1370412 +1161411 +1551586 +2481418 +2481347 +2162113 +1627098 +2104199 +1394605 +1092411 +1184333 +1004548 +1161461 +1427047 +1704598 +2481417 +1551580 +1398592 +2000254 +396563 +1161456 +1691458 +1551581 +1004525 +1471031 +613358 +1551605 +1427052 +528979 +1471032 +941437 +1216440 +154324 +960889 +2481403 +1161454 +1138196 +1471005 +1691433 +52264 +359259 +2162127 +941442 +13206 +1004504 +1719929 +2481345 +1427034 +2481360 +1149169 +1691432 +2039282 +2437680 +1149175 +1427042 +919119 +1662426 +1161432 +1691443 +154319 +238722 +2298922 +1691437 +1138201 +1798996 +347785 +2162106 +768500 +1161442 +2481387 +2162131 +1799016 +1627108 +1161415 +1551578 +1133024 +1691447 +238721 +2481395 +2481363 +2262021 +1799033 +1216437 +1799034 +2326462 +941438 +613363 +271475 +1798979 +2481381 +347802 +1798976 +1471004 +1161452 +2063332 +1004531 +1216443 +390169 +1398589 +2481419 +207288 +2481389 +2298923 +2326476 +347798 +2162093 +1161437 +1065924 +52253 +1471009 +428405 +1627297 +1627157 +941510 +713054 +1815450 +154364 +2427808 +2262204 +1627200 +1799036 +2262177 +1471065 +941506 +1471044 +399778 +613401 +2513705 +1103789 +1073889 +1627149 +1627165 +238733 +271498 +330875 +238736 +1293373 +613399 +1487906 +1487910 +1103785 +1627226 +1073905 +941473 +941468 +1519874 +613427 +1142711 +347839 +613445 +2513678 +422663 +613482 +1627221 +868618 +1073912 +1142727 +2513709 +2063399 +613444 +868617 +1004596 +2759831 +713062 +271516 +1073932 +399754 +1519959 +743844 +491321 +491324 +1004570 +1155363 +1902796 +2162153 +1815420 +416180 +2063429 +2262245 +1040351 +2262083 +2262073 +1471077 +2444267 +1627319 +2262205 +1845855 +1092413 +1242491 +1059631 +941483 +238775 +154367 +1004555 +2063415 +416236 +1627180 +1409332 +1201465 +1519921 +154382 +613366 +868639 +2513704 +868640 +1311348 +941521 +960908 +238747 +1682975 +2309474 +868709 +422668 +2063347 +238758 +1627251 +941457 +1627132 +1293357 +1815428 +2262197 +1815446 +2063431 +2162143 +1004572 +154334 +2262084 +868687 +1004590 +2162166 +2368688 +1627137 +1627315 +1519961 +1134819 +2162133 +154379 +1004587 +1471167 +1845847 +1519880 +868648 +1004595 +2625618 +1471055 +465782 +465784 +1409330 +1073923 +1815427 +1627197 +1242484 +2352212 +1627277 +868677 +1073929 +1073877 +1627324 +2444282 +1103782 +154352 +1471115 +613411 +1142700 +1004564 +2625621 +154378 +154355 +2386895 +1155384 +1627274 +1175820 +1627194 +376562 +1343773 +2063380 +207307 +1815451 +1471126 +2262150 +2262057 +347826 +1155383 +2262215 +1627249 +613387 +422664 +1004556 +2684838 +1242475 +1389916 +330887 +2028624 +359265 +2262145 +1242482 +416216 +2063370 +1519923 +465791 +2162165 +1627299 +713061 +868700 +2262226 +416193 +1142742 +1103767 +1683005 +1902793 +1519979 +2262157 +1471099 +1665125 +2063423 +2749253 +1519873 +941451 +52287 +1073884 +1665137 +1142751 +868688 +491315 +1627232 +2262243 +743836 +1815408 +271515 +1519992 +1168186 +1389915 +1059647 +2262188 +1627290 +1409341 +1142750 +1326775 +1519949 +1845864 +2513680 +330865 +1627224 +1487889 +154366 +207300 +2262202 +1487904 +713040 +1293366 +2262144 +2104216 +941480 +2063417 +1627233 +1665133 +2104214 +1519981 +1409337 +1627211 +868614 +1471066 +613479 +399780 +2549321 +1682984 +416219 +292088 +1073911 +238782 +1004579 +1242471 +1627280 +1385873 +1519917 +2086398 +154376 +2427811 +1073910 +1627295 +2262244 +1627298 +941519 +1487912 +1385868 +1389911 +1040350 +1004614 +1519926 +1815409 +154332 +1627250 +1059646 +1627296 +2481439 +1471129 +1627292 +868637 +1142737 +1471132 +2262053 +1134822 +1073906 +1484647 +768515 +1902779 +1682997 +399769 +613448 +2262212 +1175813 +1175819 +347847 +2437728 +1499378 +2855393 +334901 +154384 +960986 +2000261 +2298960 +52338 +2425848 +1059653 +2481516 +1138226 +791199 +1004623 +2855389 +195430 +491330 +2788192 +1673393 +2855427 +2283241 +2481573 +941536 +2788166 +1916351 +1394613 +2585476 +2481475 +1815461 +403440 +1055503 +2788213 +1766504 +1142775 +1326782 +2481551 +1778196 +2437713 +86177 +1149211 +1815462 +1815463 +422682 +2016138 +1138213 +1551697 +238785 +2788209 +1673382 +207316 +1161474 +1142765 +396580 +791196 +2481460 +1161502 +1427075 +868746 +2868922 +752022 +613494 +1161500 +1551738 +791178 +1134838 +1168195 +791206 +1551686 +2481557 +1352781 +613484 +2326506 +2585484 +447406 +1673350 +1133026 +154420 +1799064 +2855424 +403438 +1799053 +2788199 +713066 +334879 +759243 +1004622 +2855397 +1520000 +399812 +2437714 +1778198 +2788179 +416247 +651110 +2827553 +207315 +2437737 +1059651 +2481469 +2386900 +399817 +1551673 +1673392 +2481488 +1142790 +2437747 +1673390 +2788249 +1551741 +13229 +919140 +2855406 +422673 +2012028 +688527 +1055509 +1155393 +219197 +1065942 +791188 +1673364 +2039304 +1815459 +2162222 +2437708 +1799079 +2481607 +1551755 +1142788 +2162175 +2788222 +2298942 +1551709 +2788239 +791181 +2481453 +396585 +2481554 +2437761 +1673407 +688526 +1799095 +1551675 +1326791 +1138207 +2437717 +2481529 +86214 +960944 +1326785 +2855398 +868769 +791195 +2326494 +1133036 +271534 +2481474 +1975011 +403451 +919134 +1050658 +2298989 +2827569 +1073935 +1683012 +2788263 +1799081 +528993 +791194 +1168203 +2298979 +1142781 +2481562 +195432 +2827556 +1815477 +1778175 +2855437 +1673356 +2827594 +868731 +1799082 +1673378 +2437689 +2481498 +960988 +1133043 +2827589 +1551711 +403443 +919151 +919141 +2855442 +86198 +1551740 +2016130 +1551674 +2855435 +1778197 +13222 +2481598 +2004705 +1799080 +1138212 +2513727 +688523 +86217 +2016139 +347851 +1326792 +2481530 +903219 +1133046 +403448 +1778184 +271518 +1134835 +1975012 +919145 +2481552 +2788207 +2162216 +791208 +422685 +1627338 +2481465 +941532 +1673395 +960962 +250552 +2481489 +2326514 +791190 +2513728 +238790 +613491 +2753873 +2298990 +52330 +396583 +2437742 +1138232 +2481456 +250547 +2016145 +1161465 +2481537 +334881 +1161469 +1778199 +2481709 +2788276 +2788278 +2481780 +2481713 +2481725 +1078298 +2691907 +2326527 +752025 +2481742 +1216457 +154441 +2481820 +1149231 +1065948 +219216 +2788270 +154439 +2481799 +1133049 +2481767 +2481817 +1326806 +1398604 +447409 +1866602 +2481809 +154476 +2481737 +359274 +1551797 +2481796 +868799 +327501 +2326525 +1084228 +2481726 +903230 +2481784 +1326797 +2481814 +271537 +1078300 +1551815 +1799098 +1078302 +2481716 +2481743 +2788277 +86224 +868788 +1766527 +2481755 +416248 +1815499 +2481739 +154460 +86231 +2827608 +52345 +2481825 +2481729 +1326815 +2481698 +2481723 +2481715 +2481661 +1293384 +376585 +2481667 +1551825 +1149237 +1988460 +2481740 +2481782 +903226 +396606 +154462 +919165 +403465 +1149225 +2481747 +2481663 +1673432 +154470 +1084227 +791213 +1551782 +2481791 +2016154 +2162290 +1627370 +1499408 +791259 +791244 +919182 +86246 +1866620 +347865 +1936693 +1866621 +1499405 +961039 +2481836 +195459 +1242519 +1427098 +2326567 +2162263 +1662442 +1866616 +1004647 +791294 +1902800 +1627367 +919189 +791276 +1499401 +1520010 +688551 +1551859 +961034 +2481860 +2481875 +919179 +1055512 +1673460 +2326576 +2437791 +334932 +1831492 +961063 +1778232 +1799100 +2437788 +1381938 +961037 +2326553 +465819 +752034 +195456 +334929 +86235 +1831490 +2162284 +1065972 +791235 +941551 +1073954 +529066 +1427103 +1662444 +2746692 +961073 +688552 +1055515 +1004649 +207329 +919190 +1766537 +961033 +688547 +1799103 +791222 +86249 +529065 +1866618 +529048 +1673441 +2299003 +2162291 +1326843 +1326826 +2437783 +86262 +1326839 +1627376 +2425857 +86247 +2481840 +2481834 +2481848 +2162279 +2262280 +529036 +2326538 +2647041 +1551870 +961042 +1184345 +529064 +2298998 +207332 +1149242 +688545 +2162270 +2086405 +2299000 +1427092 +688534 +1799101 +791282 +327505 +1484664 +1551921 +2585521 +2482058 +86331 +447420 +86295 +1691546 +250565 +292093 +365170 +1552017 +791304 +447428 +86281 +2481990 +1673500 +1055518 +1799126 +195530 +2326587 +1551942 +1691583 +1499422 +2086416 +1253015 +52358 +2299027 +2162321 +961094 +195511 +410771 +2162418 +1552085 +1627422 +1691608 +154483 +2162294 +86362 +86279 +1552025 +1691560 +13323 +1552074 +1627398 +2481950 +1111557 +2481922 +1184374 +195538 +1916364 +1253008 +688576 +961084 +219233 +154519 +1673519 +2326613 +1627406 +2482131 +250568 +1960679 +2162445 +1866626 +1499450 +868810 +1730062 +1499421 +2481937 +1902801 +271547 +86304 +2585527 +1055536 +1673547 +13268 +2162397 +195504 +86316 +1673471 +903252 +2481898 +1552070 +1551948 +1753615 +961085 +86322 +1673523 +1552093 +478347 +1866639 +2000266 +2437797 +1352791 +919213 +447429 +354659 +154487 +2299030 +1691569 +1370425 +403483 +447416 +1253034 +1499425 +1551940 +2386912 +1627415 +1691592 +1065981 +1073965 +1552046 +195498 +428424 +86301 +195472 +1161543 +1551947 +2482112 +1499456 +250592 +1673483 +250570 +791344 +1831512 +1673472 +791380 +2162304 +868817 +52377 +1866666 +2481918 +13321 +713077 +1520023 +491337 +688566 +2162302 +86289 +410764 +1161556 +1551881 +334941 +1673505 +1866658 +195468 +1866657 +1065979 +1552006 +2162354 +529078 +1691557 +1552029 +791373 +1691525 +688589 +1155404 +2162329 +1691575 +2162435 +2481963 +2162312 +2481946 +961120 +86347 +1551917 +1092428 +52370 +52378 +1673546 +219225 +1691543 +1916359 +941552 +154511 +1627397 +1662461 +1149252 +1691540 +2647052 +2162356 +529097 +86309 +1253002 +1161579 +2585513 +1799145 +1092423 +1551956 +1552013 +2326597 +1427113 +1520024 +1778249 +2162446 +1627399 +1627423 +2482043 +1627393 +1778244 +961080 +1552041 +1184380 +1161551 +313444 +1551998 +1149263 +1161507 +195523 +961091 +2437814 +2482083 +1975014 +2481961 +2162363 +219240 +1216477 +2481928 +2647074 +376589 +903257 +2162333 +154499 +1627390 +207335 +250580 +1784485 +1201496 +1184376 +465821 +919211 +2482069 +207334 +2016158 +1551920 +1092430 +1168224 +1712014 +1073963 +13262 +1138265 +1087935 +1004676 +791368 +2481965 +1552069 +868831 +1691588 +271552 +154478 +410766 +1730075 +2481976 +1004666 +285490 +791370 +2647088 +2753884 +2647051 +376590 +1149257 +1691514 +250586 +868829 +1253012 +1866628 +2022103 +1691548 +1293386 +347869 +2482055 +1552088 +1551975 +1149277 +1427106 +1799146 +1004678 +1004688 +1133051 +407147 +1551967 +2481981 +13316 +2299045 +1149253 +1184375 +1552004 +1866671 +1149258 +941558 +250572 +2162347 +1552056 +1866650 +791317 +2162441 +2162409 +2039312 +1552035 +207337 +1799138 +1551925 +2481955 +334946 +941554 +1691517 +2482082 +86341 +1691605 +2482001 +1023572 +1125076 +86303 +1471186 +2162300 +1551972 +2481936 +195490 +2162459 +791406 +1552167 +154535 +1084251 +1936697 +407168 +1552127 +1719958 +1552119 +613522 +2039332 +2482352 +1242528 +1552175 +2162478 +1691691 +961132 +347896 +219264 +1673585 +52407 +334980 +1103798 +1130139 +86394 +1216532 +613519 +2022107 +86374 +2482220 +1149303 +154544 +1066005 +1293388 +86409 +2437829 +1552129 +2482261 +1866683 +2482242 +961150 +2482318 +2162477 +1799175 +2585565 +1161622 +2482192 +86379 +743860 +2513756 +688622 +919236 +478379 +2086421 +195568 +1866704 +2482241 +447458 +1149335 +1691695 +2162455 +961136 +2788285 +2788297 +1084233 +219260 +2482224 +491341 +2162525 +743856 +2647089 +1799180 +741388 +447456 +410778 +86376 +2482367 +1066006 +2437824 +365181 +2681444 +1691616 +688610 +1149301 +447439 +1427139 +1691694 +1161620 +2437852 +1253054 +941564 +1216529 +1831523 +2753887 +154530 +1712018 +1499490 +1552118 +1201500 +1161660 +52406 +1799245 +1799239 +250606 +1691707 +2299088 +1168256 +2549326 +1055545 +52402 +529108 +2585577 +1155426 +2753890 +376599 +2162526 +2482368 +1004710 +410792 +2425863 +2482212 +1673561 +961127 +1691666 +428435 +919225 +1627434 +1242540 +2513768 +1155413 +1398616 +250600 +1799176 +961163 +1216528 +1168261 +1092431 +86371 +2788301 +1253046 +1133061 +1370426 +1161627 +250603 +529112 +2162546 +961129 +1046380 +1799197 +1216524 +86390 +1242529 +2437836 +1073972 +1673551 +1161626 +2482245 +2788284 +1149333 +2162470 +403505 +1499469 +2482233 +13377 +903278 +1552182 +2585586 +1092433 +1216507 +2482170 +1691617 +2262298 +759256 +447455 +2513747 +491353 +2647121 +2482218 +2162467 +2162554 +2482179 +2482285 +919232 +195552 +478351 +1691700 +961164 +396620 +529109 +1161630 +1111566 +1168251 +1673581 +478369 +613523 +478371 +1149368 +1004712 +86400 +529121 +1155408 +2788311 +1552181 +2482324 +1831526 +1916389 +2788305 +1799237 +2482308 +1242536 +1691620 +2482297 +1242549 +1799264 +2162533 +1799246 +1673554 +2647111 +1730087 +791399 +903276 +2647112 +2162480 +1552142 +1427141 +2162548 +961155 +2299077 +86372 +1730083 +746725 +1552188 +1242547 +478360 +1381952 +1084234 +1831527 +1916390 +2482302 +688612 +403498 +1184392 +2162510 +613530 +13388 +1691716 +1171802 +1149311 +1352798 +1484674 +219258 +1149354 +1133060 +1242544 +250621 +478436 +1673624 +13440 +195693 +919334 +2482488 +1866750 +1820031 +2162658 +1427262 +1820027 +2437888 +1427183 +1253105 +2386950 +2585670 +2162709 +1050665 +1778275 +1866853 +1866839 +688654 +1778288 +2482458 +791570 +919289 +1161706 +1427227 +86455 +791484 +1405553 +2326774 +419473 +903289 +1405561 +791612 +1820036 +1216562 +2482401 +2585618 +86444 +2162803 +688702 +2299094 +1484684 +1712035 +195689 +903313 +2482438 +791630 +2647127 +2326681 +1427279 +419487 +2534339 +2585607 +688665 +2386945 +1730095 +2482498 +2437893 +791451 +1427205 +2585658 +791430 +1427156 +195590 +1799308 +195622 +2162793 +2299122 +1253124 +2647154 +2326684 +1066033 +219283 +2026971 +195670 +219287 +1499495 +1066043 +2326676 +1552216 +2326677 +791548 +1552376 +478417 +2482453 +1092443 +529179 +1799289 +529183 +791463 +2326780 +1730137 +195651 +1916393 +961196 +2482443 +919295 +2534332 +2162567 +1484693 +2162641 +688689 +903320 +688708 +1552271 +419482 +688694 +1499573 +2585593 +2482487 +1552314 +1066020 +1427198 +2482410 +791534 +961204 +1831542 +2585649 +1184407 +13406 +2326739 +2684841 +1831551 +791623 +1484680 +961219 +13405 +2326761 +2386970 +1066024 +419438 +1427250 +1831533 +1866765 +1712022 +2162631 +1427180 +195637 +919312 +791471 +1866799 +1552295 +1161673 +13435 +1673606 +1552265 +1831574 +2482400 +791598 +1662473 +195607 +2585681 +1066026 +1552215 +2326631 +1427196 +2647170 +1916402 +1216547 +759265 +1405567 +195661 +2386977 +1427217 +1662490 +1499494 +2162750 +1831567 +2585655 +1427181 +2162603 +1066018 +1673595 +2482521 +738104 +1216563 +2299158 +1866744 +1326863 +1552344 +791564 +1766576 +529188 +2482455 +2326724 +2039352 +2482379 +1866854 +2162719 +1046382 +2162708 +2482516 +2162780 +2039365 +410798 +1427199 +1778290 +2326773 +1111580 +791522 +2162775 +2534338 +1552259 +1799292 +1866713 +1799272 +1499513 +195621 +1552289 +1184403 +2162584 +2086450 +2482526 +961222 +1831562 +86436 +2162649 +1552334 +1552315 +1028202 +2326668 +478393 +1484677 +791558 +1427195 +13423 +1673594 +419503 +1184405 +1405558 +791457 +195680 +961176 +2326624 +1820025 +1673597 +1866759 +759272 +1427157 +2326750 +2069308 +791467 +2162753 +219294 +2162795 +1552372 +250668 +1484683 +1866866 +688664 +1149375 +1092445 +13422 +2283255 +1552279 +2647134 +2283261 +1552373 +1730105 +2534322 +1712045 +688687 +688643 +2534328 +2386986 +1673622 +2482406 +195694 +2326722 +1405582 +1055567 +2647169 +1111578 +2482450 +1644797 +2482519 +1552238 +791410 +2162669 +2326733 +2386951 +1552366 +1916398 +1216553 +86430 +529160 +1499529 +195630 +2162794 +791523 +961215 +478389 +1499538 +1552356 +2482414 +759287 +410805 +1552214 +1161679 +250651 +2386953 +1778285 +919316 +791615 +1499518 +1253081 +1427175 +195676 +1866724 +1831565 +2162650 +791574 +2482429 +1499578 +2647126 +2026967 +1778289 +1916420 +759269 +1831570 +1499554 +2534345 +1673645 +903324 +2326635 +2326767 +2647172 +250629 +1552276 +195600 +2482466 +1427249 +1499579 +961211 +2482372 +1161669 +1552363 +1730123 +2386995 +1766570 +1662479 +791508 +1552267 +428448 +1405587 +791655 +1902813 +1484706 +2482562 +791662 +2585728 +1552422 +478449 +1902822 +722078 +2482564 +919352 +2012043 +529207 +354671 +1916445 +688721 +1552418 +2437902 +961260 +1216581 +2437905 +2482609 +1916448 +1916426 +1815532 +1427310 +1766588 +868851 +961256 +1866893 +1184440 +1161738 +1201509 +2326823 +1073981 +1155434 +1845885 +2482637 +1799352 +1161762 +2753896 +2534353 +419509 +2299160 +868848 +1427300 +1184454 +2482574 +2326806 +207374 +13454 +613547 +1799341 +2482556 +347910 +352006 +384652 +1398620 +1552432 +351987 +2482642 +1799328 +961247 +1866891 +868866 +1552394 +2326791 +1730140 +195708 +334987 +713097 +1253146 +667523 +86492 +688716 +791663 +2482588 +154566 +2840201 +2482549 +1866929 +2585721 +2482630 +1184446 +667519 +688727 +529203 +207366 +1216598 +250687 +1161750 +1149400 +1427294 +428464 +86499 +1253134 +1130145 +1216589 +529193 +2387018 +2482585 +1055577 +1916433 +1673662 +154559 +154565 +2482635 +195725 +1673666 +1066047 +919338 +327526 +868859 +1161761 +154558 +2326814 +1201516 +2004715 +1184449 +1073985 +2482581 +1050686 +688734 +2437918 +1149387 +1799375 +1627457 +1216587 +2299167 +347913 +219299 +961245 +903360 +1084266 +1866923 +2326825 +359281 +2039382 +2326803 +613544 +86501 +2482608 +1055573 +352002 +1402275 +1866886 +529195 +529213 +403529 +1253150 +1902814 +354670 +1253128 +351994 +13446 +2425890 +1161754 +1184455 +1866934 +154564 +2482620 +1902819 +743864 +919355 +1799319 +1138289 +688739 +2162858 +407188 +352010 +1055579 +2482580 +2425889 +2326808 +1627450 +791653 +2585748 +791681 +791644 +1552411 +1004723 +351992 +2585720 +491378 +1130143 +868861 +271583 +868854 +195713 +2647225 +2647235 +1066045 +13457 +529232 +2647237 +219307 +1867040 +768553 +2482746 +250713 +1662511 +1004748 +1201518 +1662504 +419534 +365192 +688762 +2326874 +1133077 +1055584 +1691767 +529231 +2162951 +667534 +1352810 +722098 +919374 +1552483 +919406 +941585 +2162893 +250767 +1799424 +2585759 +1691761 +1988472 +961336 +961326 +250773 +1867009 +2326842 +1916458 +2086486 +2585764 +1552468 +1111618 +1867038 +1552476 +250731 +154583 +529273 +1799430 +688748 +1092480 +1216624 +688795 +2163009 +1867003 +2162928 +1394629 +961302 +2482690 +2482709 +195747 +961329 +1471210 +667526 +1730178 +1799405 +1820043 +791698 +1216612 +2022122 +768551 +1253158 +2086472 +250762 +919365 +1867042 +1673672 +613556 +1161786 +1662515 +1471218 +2753917 +1293391 +2000282 +86535 +2482717 +1184489 +238841 +529263 +2585763 +613605 +613577 +2437948 +403535 +961349 +2162874 +1184466 +1427345 +410819 +1867053 +1799408 +1004745 +1471216 +961346 +250727 +271603 +13467 +2647244 +2299234 +2753912 +1092471 +1066061 +1055599 +2425903 +2086459 +219304 +1866999 +2262305 +1673696 +1867031 +2000276 +1149438 +13479 +1867045 +868879 +195739 +1778326 +1520046 +1055607 +529260 +2482665 +2437937 +613567 +759298 +2299219 +2086484 +961320 +2534384 +2735973 +1427333 +1799394 +365194 +2585789 +2585797 +961277 +1799385 +238840 +403533 +1799422 +529220 +2482739 +613589 +919384 +1831633 +746732 +1427324 +1673680 +1133074 +2283274 +868875 +2482661 +2585802 +903378 +2299183 +2086489 +768550 +154585 +2517371 +1673711 +2482696 +2162954 +2326844 +1149435 +2753918 +1184482 +1138294 +2585801 +1866993 +1111624 +2162973 +250701 +2162934 +447503 +419541 +1184507 +919375 +2326873 +688788 +759294 +2482742 +529256 +13471 +1138310 +961275 +1691757 +529289 +529235 +428471 +86537 +2482726 +1055602 +961278 +1916461 +2534374 +961268 +428473 +961295 +271617 +1799399 +1326886 +1691770 +919401 +961347 +2437926 +688751 +529248 +1216613 +791703 +1499635 +2360760 +961265 +919394 +529236 +2162902 +1149424 +1216607 +688773 +2437934 +497718 +2534368 +2585787 +2039405 +1149431 +1867004 +2387025 +688775 +1799410 +2299209 +1499630 +1216621 +419515 +419542 +529271 +1552496 +497720 +1171812 +868869 +1820046 +1055585 +529325 +919415 +1673748 +2534394 +868886 +2326885 +403542 +1242562 +1552505 +1673742 +1242569 +1155442 +1778338 +428493 +868884 +2647272 +1730183 +613609 +219357 +1149478 +1916480 +403544 +335001 +384656 +154598 +791741 +1133089 +13485 +1066083 +2163014 +791746 +1799432 +1799487 +313448 +2000289 +1092485 +688801 +1673733 +2647268 +219337 +2299252 +13488 +1673746 +868885 +1951057 +743865 +407190 +2299246 +961359 +1916486 +1552510 +1552558 +1216648 +2482789 +219340 +1134853 +13506 +478482 +1867108 +219349 +1155436 +1216678 +1216677 +1799491 +52440 +347917 +1552520 +941593 +1799438 +868883 +334998 +2437953 +1216665 +1916474 +1216681 +1087938 +1867058 +365203 +2482768 +1673754 +529321 +238843 +2482834 +2437960 +2163012 +1799464 +195796 +2647279 +1133086 +86554 +919429 +1673741 +1867075 +1799467 +529328 +410831 +613610 +1216652 +961366 +195766 +722101 +1552522 +688805 +903382 +1673749 +1867081 +13482 +403546 +491392 +1778330 +1552523 +407192 +354674 +13507 +1149492 +1799489 +529317 +2163030 +1040359 +2482783 +2482776 +1778342 +219333 +52452 +791748 +1216638 +238842 +1730187 +403541 +219360 +396635 +2482842 +1552599 +1155458 +791765 +1155475 +768556 +1149504 +1766617 +1552579 +1004794 +327538 +154635 +13519 +868892 +2163078 +941609 +207384 +2163070 +1627482 +2585825 +1815552 +1051779 +2482942 +2163087 +1134872 +1799507 +1627496 +2012053 +1799544 +1769064 +1951058 +1683067 +13514 +407201 +1378142 +1149535 +1867114 +1769065 +1704642 +2437975 +1168324 +1004770 +219367 +1799514 +1627529 +2482870 +154617 +1004796 +1168320 +2262339 +1627504 +2437995 +868926 +1133095 +403569 +1799521 +903387 +2438010 +1138322 +1815564 +1778354 +1051780 +868920 +1766605 +1149536 +1149517 +1799549 +52453 +52464 +1799530 +1552584 +154618 +1155480 +410835 +154622 +2163051 +407251 +1004769 +2262312 +52472 +868908 +207403 +1778351 +407235 +1149541 +271647 +1520062 +1769068 +52465 +428503 +2746721 +1552604 +219370 +2788347 +1161822 +2438014 +2163061 +1155466 +1074023 +2309510 +52462 +1378141 +1133103 +1673773 +1004807 +195800 +1168318 +1484711 +2352256 +238888 +2352258 +1778347 +1168317 +403564 +2262308 +407199 +2163079 +1704647 +1683042 +403553 +407202 +2513798 +2163073 +407238 +2022140 +407260 +1142807 +154632 +1138325 +1051785 +791751 +1133105 +1168327 +403555 +1168290 +1155459 +2746722 +961375 +868901 +1766606 +1815575 +1784510 +396638 +1155464 +1168294 +1168310 +1242574 +1074004 +2022139 +2482947 +613615 +1471233 +2299274 +407227 +713112 +2788342 +2788341 +1673783 +2262327 +2482941 +2437982 +1161802 +1134882 +1815549 +238859 +2840202 +1799542 +868942 +1799566 +407239 +1040360 +2326920 +2788340 +407216 +1168325 +403567 +1799516 +2299266 +1520059 +1704648 +1134879 +407243 +2163075 +1799559 +396636 +410837 +407263 +2163076 +1552601 +2437993 +2482892 +1074005 +1778359 +791760 +1155446 +529333 +2482923 +52479 +1691804 +1161801 +1691796 +2482864 +1168309 +1552603 +2326913 +207404 +2513786 +1799503 +1161810 +1815572 +768558 +1784503 +154631 +271630 +868943 +407245 +2788369 +1381971 +1627503 +154641 +1815593 +2788456 +1427415 +2086511 +86625 +768564 +1499682 +396661 +2746726 +2299289 +1552682 +919491 +1552673 +403573 +2482959 +2482988 +738111 +2163195 +416283 +154648 +1673839 +348031 +1161881 +1155483 +2788475 +2104245 +1552629 +250793 +1059664 +347928 +1778386 +13545 +1161880 +2163241 +868952 +2163188 +416292 +250802 +529349 +2262392 +2163268 +195814 +2421702 +271681 +2163199 +1134894 +416262 +1084280 +422709 +271667 +207413 +1799606 +2788454 +2163147 +791821 +352016 +1352823 +86666 +1673818 +2788483 +1084295 +791795 +347997 +396650 +330930 +2482995 +2788378 +154693 +2699459 +271686 +2262378 +330913 +1673892 +1552624 +1552651 +2788453 +1040361 +2163138 +869026 +869034 +2788476 +2483026 +2004723 +2746725 +1799617 +154679 +399825 +154680 +2788423 +330931 +868984 +868967 +86609 +219374 +13534 +1662525 +941648 +1766661 +961382 +941642 +2483053 +1815610 +2163148 +1673888 +2163158 +868980 +1161845 +2482978 +2352264 +1520090 +2735975 +1004824 +1133117 +868963 +2163185 +2534404 +292100 +1902836 +1184530 +1078325 +791830 +52482 +1627584 +86617 +2788388 +2425929 +1766628 +2163173 +2262379 +154642 +1074038 +1326913 +1552620 +2299296 +869020 +2069319 +348029 +1766620 +1867117 +1627550 +1520099 +919484 +347977 +791820 +2163127 +86620 +2163149 +1263159 +1078321 +1059663 +2483015 +1941515 +1627547 +1815584 +422708 +347999 +529339 +961384 +52506 +2163140 +2163121 +2483048 +1161848 +347929 +86593 +1520074 +941644 +2788398 +154713 +52520 +1394639 +271708 +2086540 +238910 +1778388 +791785 +154663 +2163177 +2086521 +154675 +2299290 +250799 +1084292 +2585832 +271683 +154709 +2855483 +1662527 +2483019 +2482973 +271713 +1867116 +1084296 +2086525 +1161837 +154664 +154661 +2513816 +791822 +347950 +869014 +1161879 +347948 +1673855 +941631 +86638 +688828 +961389 +1627552 +330905 +2483035 +1149564 +2741619 +2163172 +1142828 +919489 +2788407 +2309516 +2326925 +154742 +2483039 +1627545 +2086524 +2482961 +961404 +2788420 +2788382 +2483018 +1216688 +154726 +330915 +2163165 +52486 +2262359 +1799626 +1168347 +2163283 +2299305 +1471261 +768566 +330920 +1168336 +941656 +1471249 +2163090 +1263156 +2012058 +1161832 +2483046 +2482957 +238898 +1778375 +1778391 +752059 +869023 +688839 +2788468 +1799583 +1665155 +791812 +1778370 +2788465 +2326929 +1766634 +396649 +868955 +2483023 +1520064 +1471264 +238918 +2788452 +869015 +154718 +416273 +1552660 +2163276 +13541 +1133114 +1673862 +2163153 +1520087 +1627585 +2163103 +1138336 +2482998 +52519 +1552652 +1799609 +2483074 +2788393 +2163203 +2788471 +1394634 +154668 +2788434 +868989 +86632 +1683079 +1326924 +2788633 +1138361 +335034 +1766684 +869048 +1552813 +2483105 +2086546 +1074063 +1387325 +1815637 +1059666 +52529 +348036 +2438100 +1387323 +1161905 +791926 +1552825 +2163353 +1831664 +1627610 +961425 +791936 +759321 +869081 +1552839 +2299353 +1409359 +1799650 +416335 +416334 +1142865 +2163387 +1499748 +759327 +1799630 +1778424 +422717 +2788584 +869075 +403576 +919526 +422720 +1662538 +422733 +1552757 +1662531 +416312 +1427448 +961410 +1627620 +1658230 +195830 +791906 +422782 +13587 +1867136 +2483218 +335027 +1066116 +1552843 +1520117 +2299389 +2438162 +2262399 +2788656 +2788661 +1499760 +1673963 +1627614 +2483094 +1627638 +2016206 +1815644 +791945 +2163329 +2438116 +2788663 +1427451 +903407 +1427416 +352033 +1552793 +1766671 +1499712 +52546 +1499697 +1273430 +1552809 +1766691 +2438070 +403580 +961436 +422764 +1683096 +768568 +1138356 +869064 +2746734 +2299328 +1552812 +529359 +271721 +2483214 +919501 +1394642 +941676 +1484736 +1552701 +791878 +1074071 +396673 +2483146 +791882 +86698 +2483187 +2585857 +422740 +2299368 +1050709 +651115 +86730 +1831663 +759337 +1704652 +1142844 +2585861 +2262411 +2163400 +2483112 +271733 +422792 +2309528 +1627625 +154748 +1078341 +2163397 +903412 +1471267 +1673920 +1499716 +52532 +1499695 +2438160 +1673941 +2788660 +2163332 +791921 +1867135 +330950 +1133131 +2483172 +1326934 +416314 +1719963 +1658242 +941689 +2746731 +1168368 +2163399 +1673923 +2741629 +13598 +2163359 +1815632 +2741628 +2262418 +1960696 +86707 +238942 +2788616 +1499754 +86695 +2438159 +2016203 +1766672 +2163420 +1133145 +2069333 +1673961 +335039 +2585854 +2438099 +1326926 +791911 +869066 +1499759 +1766693 +2438062 +2069355 +1902840 +1552724 +399847 +1691830 +2483164 +396674 +1133134 +2163417 +416308 +422726 +1161914 +2262401 +2163350 +1815645 +2438118 +1662537 +1471270 +2438084 +791886 +1627632 +1499726 +422715 +1149608 +2483102 +2731178 +2299323 +529370 +919515 +529367 +1484720 +1499723 +422783 +1138367 +1084311 +335028 +1149600 +791924 +1960690 +2513839 +1960692 +1662543 +52535 +1662555 +13578 +1059665 +1520111 +961418 +86732 +271730 +2438092 +1273434 +2483179 +2483199 +1778436 +2163346 +1484731 +2163398 +1273425 +1133132 +13596 +1552837 +1552777 +2163358 +759343 +2163351 +1627640 +2163363 +1499707 +1683094 +13608 +2483156 +238939 +1766705 +869049 +1673960 +2016208 +2163288 +869085 +1352829 +86703 +1552747 +2326960 +1552828 +2585849 +961412 +1134906 +1149585 +1778405 +1766669 +2788505 +1149601 +1552786 +348048 +2444297 +1066136 +1155498 +2163318 +791912 +1134909 +1691825 +1552748 +491403 +1520125 +2585842 +1155491 +1673931 +416330 +2425971 +1398641 +903405 +1066106 +2483190 +422723 +1134910 +2163515 +2063440 +399904 +1815655 +2086583 +2016214 +416345 +335056 +1799660 +2513860 +2438253 +2438229 +1004867 +154794 +1662575 +154784 +2163588 +752087 +1487968 +1674004 +2326979 +86768 +1799687 +238952 +2483252 +1815659 +1902845 +238972 +2483271 +2262462 +1149615 +52606 +2299411 +13618 +335063 +1552874 +2163529 +1867145 +2425992 +2438234 +2438217 +1552879 +2425980 +1552949 +2326995 +869112 +1293398 +238954 +2327002 +403597 +1662562 +1552878 +1552925 +2549327 +1815678 +2438239 +2069371 +961466 +13634 +154785 +292102 +399889 +154817 +399892 +2163444 +1552915 +2163506 +1665170 +13635 +869104 +403596 +1004855 +13616 +2163530 +869142 +2163477 +1552871 +2262441 +1627703 +13614 +396709 +154791 +2262436 +1704669 +1691838 +2710011 +2163481 +1627694 +52571 +2086588 +1552888 +961452 +2163503 +86764 +376616 +2163485 +1552954 +154792 +2427837 +86758 +1201528 +348078 +1074104 +2299391 +1427474 +2513854 +1799675 +1815705 +2039435 +1074079 +1815667 +86754 +791978 +2262466 +1683107 +2427840 +869103 +2444313 +941727 +1499770 +2283305 +1142875 +1815696 +2163469 +1778465 +1815699 +1766707 +961473 +1627716 +1627691 +1142911 +791997 +1074105 +2421747 +1184535 +1142916 +2000299 +869088 +529389 +2438240 +2421746 +1778458 +941706 +1665177 +1683108 +2262425 +941712 +52552 +746757 +1326945 +271742 +2513858 +13638 +1059673 +869138 +399913 +250820 +1552853 +1683103 +238971 +1627669 +52568 +1394648 +2483219 +961475 +1674017 +2163575 +2647290 +1627659 +919540 +1815670 +1778459 +1084313 +2585873 +1149619 +1691860 +399878 +1799672 +1499768 +1394650 +335060 +1142902 +2163589 +1142908 +2327004 +399893 +2438226 +1799663 +2163533 +869133 +2262424 +52578 +335044 +2283310 +1142910 +1133155 +1683106 +1552868 +2163545 +13628 +1867142 +1293399 +1627657 +396707 +219406 +1552942 +86763 +1691849 +154802 +2069366 +399912 +1704670 +1142915 +1142871 +2855503 +2438224 +1704661 +1815693 +961470 +1867148 +1662563 +2326984 +1134920 +2326997 +2016212 +1627695 +1815669 +1499762 +13624 +961478 +2438199 +919539 +1138390 +154787 +1242587 +1821753 +1627717 +961483 +52593 +1552926 +722108 +1815648 +1409362 +1662569 +2039436 +1074081 +1799671 +869118 +1552916 +1815671 +2326991 +2163497 +2163514 +2163474 +2855506 +1134915 +1552892 +396694 +52596 +1066167 +2534422 +1520261 +2855685 +2444344 +1004951 +2309550 +869207 +613712 +2309555 +908177 +1155527 +239000 +1004916 +2413854 +2028643 +961488 +1004889 +1683143 +869209 +1902865 +869161 +52664 +416368 +869231 +271754 +1004944 +613711 +2513915 +613774 +2262546 +1103806 +2855624 +239056 +1155525 +1520180 +1471363 +2855717 +207451 +1074115 +613708 +2444335 +2855652 +1815767 +1074109 +1627733 +1520191 +2855807 +465856 +2438265 +239042 +1004904 +941768 +1142950 +1665183 +1948099 +1004896 +1520171 +869206 +2855750 +1074157 +1004934 +2309551 +422859 +1074159 +1902851 +52618 +613746 +239073 +1902857 +2483292 +2309618 +2855707 +2262510 +465862 +2513921 +154874 +869186 +768613 +2855746 +613728 +1815743 +941788 +2483295 +416376 +2104271 +2016229 +2855866 +2444328 +1201534 +403598 +271759 +348100 +908182 +416386 +154877 +1845903 +2855836 +1683150 +1074129 +2016227 +2855722 +1627758 +313454 +2855732 +1471339 +2855600 +2689143 +2063471 +613661 +1004936 +1520247 +1293410 +1155539 +348111 +2309638 +1471359 +2028644 +1004902 +1471320 +1471364 +1074119 +2309548 +422849 +2309584 +2163598 +1520204 +1815751 +1385880 +2855610 +2012067 +2309571 +2855816 +2855646 +2855559 +1665200 +1815730 +713147 +2689136 +2513909 +422845 +2513919 +2513886 +2855553 +908176 +2309602 +2513901 +271811 +2104279 +613705 +908179 +941737 +2309627 +2513881 +330973 +869183 +869167 +743875 +416411 +52681 +613731 +239078 +941780 +1074135 +2855727 +1004891 +2028645 +2513885 +1074116 +1520178 +941749 +2855509 +238986 +1665188 +2262501 +2352300 +154884 +154834 +1683129 +1520181 +1627777 +1520238 +2309572 +2063461 +1074134 +2855551 +352042 +1074151 +2855578 +1665199 +1184539 +1683117 +2262482 +743883 +2262474 +2309578 +1487978 +1074107 +1004961 +1665235 +869223 +1520179 +2309594 +154907 +2262538 +2012066 +1815737 +2513934 +1471315 +768604 +238994 +1352839 +1471325 +416393 +52686 +2855569 +1815782 +2855573 +422862 +238977 +2855598 +154843 +1263162 +2483293 +2855616 +1004959 +416380 +2309610 +207478 +2855867 +238975 +2309623 +2438264 +239009 +713134 +1520183 +2086591 +2063479 +271761 +2438268 +1665182 +1142964 +416389 +2309596 +1520186 +1902853 +1627740 +239017 +2262472 +1815726 +2855823 +154895 +422832 +1142970 +154886 +613673 +869174 +2427845 +2855602 +2444350 +52624 +1471347 +1004964 +1665220 +2513912 +869232 +2855658 +768599 +613723 +2855613 +713132 +1520250 +2855622 +1343789 +1520220 +1059681 +1074138 +2855724 +2855604 +2309613 +2063452 +238981 +869489 +399962 +1520274 +52699 +1902871 +155023 +2299482 +1553006 +869464 +1628013 +2749279 +1815912 +2585895 +13678 +869344 +1627968 +2262668 +2299461 +1627989 +869328 +2438282 +1168387 +869455 +2309655 +86788 +613907 +2327072 +2513959 +52772 +52823 +1471392 +2759839 +1704713 +2022148 +465866 +1662583 +713185 +1815911 +155118 +2299491 +1628102 +1815786 +2327042 +2513965 +1553030 +2004733 +154974 +613835 +2513977 +52828 +1799696 +1799741 +2513979 +2016239 +961530 +869348 +1553025 +155126 +2513989 +1730199 +2163725 +1201544 +869314 +52870 +1553042 +869295 +359296 +1005018 +1168390 +1627861 +759369 +2352372 +1471499 +2483448 +688875 +86790 +2352413 +13691 +1815932 +2063508 +1175831 +869458 +1815879 +1005068 +1005121 +154920 +1674063 +2753935 +1005127 +2352408 +1263165 +2438297 +2483404 +1815943 +2299454 +1552987 +1799719 +792003 +869287 +2309653 +239135 +529436 +1059700 +2163831 +2299446 +2513967 +1902882 +869266 +2163649 +1005146 +1499774 +335066 +331007 +13649 +2163650 +941838 +1627877 +2262580 +2262749 +1674132 +869436 +792062 +2483392 +2262611 +52751 +1815939 +2262706 +399972 +154934 +399970 +869302 +2262721 +1055651 +1143066 +529446 +919571 +1074170 +155106 +239134 +348128 +1520336 +1815787 +2039443 +941852 +919563 +1674106 +869453 +239138 +86814 +1683158 +1553002 +713188 +869245 +1059699 +2327018 +613799 +155039 +1916500 +1005012 +239141 +13662 +1902870 +155051 +1627919 +2104319 +2299470 +2104340 +1815826 +2262787 +919566 +2352397 +86800 +1005062 +2104330 +1074199 +1683184 +1674087 +2352336 +792026 +52732 +2299430 +941859 +2262598 +2483489 +1815827 +1133158 +1133164 +2063520 +1815841 +154998 +752092 +1704697 +2163651 +941808 +2327037 +2016249 +399954 +1553048 +155030 +2039454 +2710012 +735459 +1004997 +1815972 +2104341 +1168386 +2262765 +86774 +271847 +1704702 +613824 +2299473 +52832 +1628001 +2299429 +2016250 +2262638 +416419 +1005013 +2483336 +2283323 +2483307 +271979 +155001 +1683201 +399944 +52796 +2534431 +1815930 +1520282 +1074187 +359298 +869401 +613848 +2262723 +1005128 +1815881 +1627996 +2513942 +768642 +667542 +941827 +1815791 +2514015 +2163773 +1487985 +1815929 +2016260 +1627993 +869292 +2749276 +2283317 +961536 +1815900 +1674039 +2004729 +331020 +2483490 +2163681 +1627869 +86782 +1627906 +1405612 +1066171 +1553022 +1627990 +155123 +1394665 +1815820 +1815859 +2163755 +155035 +271980 +1005141 +1815906 +2262712 +1691886 +1427492 +1471476 +1553008 +1815783 +613895 +961518 +271891 +1398655 +1161925 +2299441 +330985 +1143053 +961492 +271949 +1005049 +1719975 +1293421 +271943 +2513998 +1078359 +1683178 +792060 +1201536 +1815963 +271845 +1005001 +2163731 +1471532 +2438316 +613795 +348147 +2759838 +52717 +2514043 +2016257 +613831 +1627920 +1627858 +1628082 +271920 +961533 +869337 +1409377 +1683177 +2022152 +2262581 +239123 +1471502 +2749281 +2004732 +1627836 +1627881 +1487987 +792014 +2262592 +1216701 +1175835 +399969 +2514014 +2483350 +2262718 +941860 +1674103 +1674081 +2483306 +1799709 +688885 +2262805 +869354 +1175832 +1471512 +1815840 +2262683 +792023 +2163692 +1627984 +1683183 +1674048 +327614 +1815892 +2513972 +1143054 +1553034 +1691890 +2352394 +154982 +2513949 +1005109 +2352319 +1066177 +1005060 +1471467 +1084348 +271833 +2699471 +1815997 +207504 +1988484 +1845906 +52770 +52756 +2534429 +1471418 +52771 +52737 +1674100 +1391068 +1005125 +52738 +1815844 +1778512 +1553044 +869324 +2352399 +2262617 +2262776 +1143081 +2483374 +335069 +1427488 +613893 +1427499 +1326966 +1553075 +1471422 +2262695 +529441 +941813 +1242608 +1627976 +2352316 +869387 +869385 +2163617 +2163807 +271916 +1427495 +1484749 +2283314 +2163654 +2327026 +2069379 +961527 +869434 +154967 +1683190 +2513960 +1084350 +2163765 +1487997 +2262697 +2327100 +1471472 +1499793 +613882 +941868 +2352390 +613814 +869351 +869429 +768625 +465864 +331017 +13685 +155108 +155064 +1674124 +2327041 +2483329 +941864 +399957 +2163674 +207486 +1134943 +1553004 +155050 +2063497 +1815813 +752097 +1143005 +2483315 +1370446 +1005032 +2262643 +1662577 +869389 +529431 +239125 +1409374 +1143026 +2163786 +2163780 +2163602 +2585876 +330990 +792017 +1627853 +2483420 +743887 +1471430 +271967 +1552980 +1161924 +1005000 +1627822 +1815993 +1066174 +1628087 +2163747 +613804 +271874 +2327033 +1293419 +13686 +1427519 +271921 +1143056 +1381979 +2438288 +869265 +155124 +1143009 +2262717 +869443 +1627934 +1175833 +1674051 +13657 +1627927 +155060 +1005092 +2514051 +2327066 +2104349 +2012068 +2585889 +1242606 +2483470 +271865 +1471419 +1143014 +1138416 +613879 +271974 +1471509 +2514011 +86819 +869313 +613878 +1778522 +1674038 +2327056 +1487993 +1471405 +869359 +1155567 +1674071 +2262687 +399965 +1520288 +869278 +1674096 +613857 +155021 +1184543 +869470 +1381982 +13708 +1867177 +1831691 +2647340 +2483618 +2299515 +529487 +941898 +2387092 +792114 +941895 +1066192 +1799770 +2585994 +1405619 +13728 +13737 +2483519 +2438323 +1143088 +613911 +1005167 +2163927 +1499798 +2534434 +2283330 +2483582 +1553138 +1831677 +86826 +2647334 +13739 +2163866 +403607 +1820062 +1867194 +941902 +2483527 +1398658 +1662587 +1936715 +2438319 +13705 +1484755 +2483591 +1078366 +327622 +195859 +1674138 +2163879 +1553084 +2585991 +1553108 +2163873 +1799759 +465876 +1553133 +327628 +2283329 +1628109 +2534448 +2514068 +2327118 +2163859 +1553116 +529458 +1242611 +1916503 +1730204 +792110 +919590 +13704 +1674151 +1766729 +86827 +529477 +2483588 +1111645 +2163897 +1628121 +195857 +2483599 +1691903 +2483626 +919592 +2163856 +1831689 +1916505 +2483523 +2534446 +155130 +2012071 +722111 +447533 +195861 +2483612 +529493 +1902897 +2327137 +2483578 +2438340 +759377 +1867211 +52877 +86832 +738130 +2387109 +2327136 +2163885 +1916506 +2163944 +919611 +869514 +1427572 +2387108 +2163852 +1674144 +2534437 +2585980 +335078 +13712 +2534436 +1799748 +2585969 +2163889 +86834 +2585903 +1427566 +2483619 +1628113 +2163951 +613912 +2483537 +1916517 +2163946 +2483547 +2647337 +1778525 +1691913 +2483521 +1916520 +908190 +2327138 +2387093 +447547 +2327218 +1484758 +1352852 +2788685 +2483753 +792159 +2438396 +2327238 +1302687 +1184549 +1302689 +1778541 +2483698 +792151 +1799805 +13750 +2299563 +1149647 +1149642 +2483676 +2327208 +2327242 +2426015 +2647347 +2163999 +1273443 +961604 +961598 +1138432 +2438358 +1149661 +919627 +2483663 +1778550 +1302688 +2647348 +13779 +403611 +2163990 +792147 +792117 +2327205 +2299572 +1553161 +1553164 +1273446 +529495 +2086648 +2086644 +2483668 +1427603 +529500 +792155 +2163969 +1553142 +2483717 +2483664 +2163964 +403623 +2163961 +961586 +1055660 +2327182 +688901 +13776 +195867 +2163998 +1674174 +1138427 +2483654 +961609 +1778543 +2585999 +403631 +2483649 +1326981 +1799806 +1216708 +2327202 +2483755 +961584 +1553175 +1553140 +2086630 +2327189 +13771 +1427613 +1553191 +1499820 +403637 +1216707 +1149655 +1799794 +2164006 +195871 +1499817 +1553193 +2327186 +1370450 +961582 +2483672 +2483801 +1138438 +1427655 +2039475 +1553260 +1427616 +2164090 +155157 +2483794 +2691920 +1730216 +1553215 +792174 +1138439 +13818 +2164154 +2283352 +327634 +1427628 +396739 +792191 +2855926 +1553308 +1553245 +2039491 +1055674 +1674246 +447559 +428511 +86844 +396744 +2164199 +2164141 +86899 +2586018 +1674230 +961655 +2438434 +2855952 +1778571 +2438410 +2016272 +1691938 +86900 +2164175 +2299609 +86873 +396752 +2438443 +2164069 +2164202 +2327269 +919652 +2164048 +2164179 +13806 +155140 +2299573 +1691970 +2327272 +1691950 +2483879 +2426031 +86876 +2164167 +613913 +1553227 +219430 +2164147 +2164183 +2855934 +2164184 +2164017 +2164196 +195891 +1691935 +2855884 +1078400 +396737 +1867223 +1778566 +1078393 +961656 +1674196 +529526 +2438423 +1691946 +2164128 +1149682 +447561 +2855912 +919645 +1778581 +2299601 +86923 +961623 +52881 +1674206 +1553259 +961640 +2438421 +2426030 +2421764 +2483817 +1149678 +2483838 +1674223 +52895 +2855911 +1691955 +2483888 +86874 +1394690 +529502 +403648 +903454 +1553300 +2164049 +1078392 +961663 +792167 +2164134 +86910 +86924 +2746763 +529519 +396722 +1427625 +1674217 +2086665 +2164125 +2039484 +2164204 +1055662 +2855916 +403643 +335089 +1184555 +2483791 +1326989 +13809 +1427632 +1553211 +1674214 +1553253 +1427627 +2164159 +2164218 +2855925 +1499843 +1078379 +1553255 +688906 +792165 +792202 +2164297 +1553319 +2327324 +1845916 +1553396 +2327339 +1674277 +1499869 +1488003 +1730239 +447570 +1831716 +2327338 +1327004 +1553314 +961681 +1867274 +1553381 +2164346 +250848 +52907 +207524 +688911 +2483916 +869556 +1184561 +1799822 +2739769 +292112 +2164227 +365204 +1799831 +2483894 +1484782 +491418 +919677 +1074209 +2739771 +529543 +1326999 +195931 +1831704 +155259 +1916578 +792226 +1916549 +1471563 +1975033 +1936721 +2327352 +1133181 +1201550 +2413862 +155246 +613924 +2647376 +869596 +1216719 +1674286 +1553325 +2483908 +1553345 +1520366 +1867231 +2483946 +869533 +195938 +155240 +465887 +2586064 +735467 +52935 +2352428 +155178 +219447 +13851 +1628132 +86926 +2327374 +1730217 +792256 +2327367 +2283359 +1674280 +2387147 +1553390 +348152 +1327040 +869647 +1674259 +2586059 +155208 +1674278 +1799826 +52903 +752099 +2262858 +2483906 +869570 +1293427 +2352434 +869609 +2327307 +2647356 +1691989 +1799856 +155167 +155252 +2164239 +2647359 +2483897 +2483925 +2387133 +2438459 +1370457 +1816034 +1799852 +2086701 +2483920 +1916581 +2004758 +2164332 +2164342 +1960722 +155175 +1867266 +1553364 +1674281 +1778583 +1867233 +155209 +759399 +919675 +1816044 +1352856 +1867265 +1553330 +2483891 +1730228 +529547 +1143093 +2534496 +1216732 +2299643 +1427669 +1327032 +1916585 +384666 +919691 +1916550 +941923 +1831708 +688925 +2534488 +903467 +1674267 +155200 +903473 +1216741 +2586019 +1730220 +613920 +2387159 +1311360 +1111655 +1111651 +869616 +2387150 +1427670 +2164280 +348163 +2327387 +2647373 +1471562 +2739765 +941932 +2788707 +941922 +2327393 +1553342 +2327328 +1916559 +2327348 +1143091 +1327044 +529574 +1216729 +2360787 +792240 +2684848 +155230 +2327392 +335105 +465885 +1005202 +1216723 +478503 +1867251 +529544 +792233 +1799832 +1143092 +613922 +2483942 +2299635 +1327010 +1553393 +2164222 +2438465 +1916528 +2327368 +1394694 +2483902 +1730226 +2164272 +792255 +2360784 +529564 +1628149 +2483919 +1799837 +250857 +2164277 +2327389 +155225 +2483898 +2746767 +384663 +1704716 +416433 +1398672 +2164236 +1327048 +1553398 +155249 +2387142 +1916547 +155220 +2164323 +1216734 +1184571 +529554 +2299637 +1398668 +1820066 +1902900 +1484775 +869543 +1867256 +52938 +2164341 +1778590 +155255 +869544 +2004750 +1778591 +1149691 +1816052 +2327293 +390187 +1216716 +2016277 +961717 +961690 +1674285 +207538 +2164353 +1352857 +271991 +961685 +2483934 +2022155 +908192 +2788693 +239166 +792279 +688934 +2327401 +1730252 +2647382 +1161967 +2004760 +1960732 +2327432 +1712097 +735473 +1499884 +2299663 +1427701 +688950 +2387168 +1184581 +447574 +961784 +2360798 +2387163 +2360792 +1712098 +1005220 +447578 +2086717 +1253173 +792271 +961760 +250872 +1662602 +2309690 +961793 +1674334 +1253183 +2483977 +1499872 +1831732 +919701 +1553442 +2164388 +1902911 +2586107 +2484019 +1553459 +13860 +2647393 +13868 +2534511 +86971 +919696 +961788 +2484050 +2299646 +961744 +688933 +2788718 +2586097 +735475 +2327429 +1553436 +961794 +86976 +961773 +1405628 +2387173 +2327416 +961776 +1628165 +1553415 +2164391 +13869 +1662599 +735497 +1553419 +2484034 +2517387 +1520378 +2387181 +1867300 +86969 +2586108 +688951 +1161979 +1674330 +250873 +1427691 +155267 +2484037 +2327396 +1216750 +1867295 +1427705 +1161985 +722115 +722118 +2299655 +1405624 +759415 +722114 +1005221 +2647403 +2086714 +961792 +250866 +768660 +1867296 +2483998 +1553404 +961749 +1674316 +961797 +759404 +2327423 +2327450 +2360803 +2327397 +2484031 +2484011 +792261 +2327418 +2483952 +722126 +2484004 +1553410 +919707 +941951 +961809 +1553520 +2438486 +2164447 +335126 +2299666 +1692021 +1867332 +1427728 +869673 +1831749 +250879 +2586135 +2647439 +1730265 +1394702 +768663 +2586145 +1242630 +1867347 +2309691 +1066210 +1005222 +2484057 +2438480 +792300 +1066215 +2484126 +2647432 +903482 +13885 +688958 +239183 +219462 +613968 +1553533 +2164453 +1674379 +2484188 +529599 +2327472 +1553497 +1553486 +313460 +2647429 +1553487 +919716 +1553534 +2164433 +2484242 +1327063 +2647430 +2164419 +1867316 +1133187 +746771 +961816 +2299691 +13912 +1692008 +1799880 +1674385 +1674352 +1216758 +219467 +919736 +919702 +941943 +2327482 +2484245 +1216760 +961828 +1799887 +1778610 +2484113 +2484257 +2164438 +1799888 +792316 +2484074 +961830 +2484064 +2387185 +869677 +529618 +961822 +2012079 +1692019 +1674345 +1691994 +1133184 +2104366 +13908 +1427716 +2086719 +1867323 +331024 +219460 +1427738 +2484186 +1692034 +219482 +1951066 +1133183 +529609 +2299683 +403658 +919731 +2309693 +1499896 +1674396 +1553536 +1867315 +2484111 +1674383 +919733 +13890 +219474 +1730264 +1327064 +1352871 +903479 +1273460 +195951 +2788722 +1778601 +396778 +52963 +1520381 +1831753 +1692006 +2484137 +1553507 +752110 +1484796 +2299690 +1398675 +1066218 +2484145 +2164429 +961819 +2788730 +1692010 +1799876 +491423 +2016296 +1046393 +919735 +2004765 +2164459 +1133190 +1553481 +1394701 +1216757 +1216756 +2086720 +155273 +2327483 +919713 +1133189 +2484250 +1799871 +1692026 +2086725 +735499 +2022165 +1628200 +1553562 +2164545 +52989 +759461 +1799915 +239195 +335137 +195963 +1936724 +2484283 +1005258 +1553558 +1074230 +1674420 +792349 +1760558 +1427756 +396794 +1024791 +1553576 +529640 +529633 +1005241 +1816099 +1816125 +903493 +396790 +2387198 +2746778 +1134953 +1799920 +239227 +1078427 +1816089 +2387196 +746772 +869743 +2484269 +1471595 +869732 +961911 +2484370 +1175847 +1084359 +1132280 +713230 +2299708 +1628214 +768677 +272109 +1553585 +2164488 +2327490 +207551 +768672 +2484354 +2299705 +2069412 +2484331 +1816071 +2514100 +2484321 +400012 +1816109 +2484271 +2164534 +1845920 +2327497 +2022179 +869744 +331027 +52978 +436336 +1111667 +239217 +1184604 +2012081 +1488017 +1628188 +1162006 +2484267 +2647455 +2484363 +869733 +1084388 +1916618 +2647467 +1831766 +689001 +2164552 +2004768 +1078451 +87025 +2484362 +529637 +2164508 +1692068 +2484276 +2016299 +1704736 +1553557 +759463 +1263176 +2039512 +1628210 +529648 +52985 +272142 +465899 +869726 +1692039 +1902934 +2352450 +2484334 +436325 +1005277 +1175837 +2534538 +2586163 +961891 +1553582 +400015 +1902915 +1674426 +1134951 +1471582 +2586164 +400007 +869707 +1799924 +768668 +1184608 +2484315 +1553569 +1553579 +919754 +722137 +2484359 +390202 +1005269 +155301 +1242636 +1499903 +2514110 +1520393 +1133202 +2327499 +2484368 +239219 +1553548 +735509 +869689 +313461 +1553552 +272126 +1692040 +1628205 +1816060 +1799918 +87052 +2086741 +1628202 +1499902 +792359 +348200 +1028225 +1184617 +1520397 +1370466 +2352452 +1628207 +1084405 +1499910 +1662611 +1730278 +272076 +2387195 +335133 +2016314 +2484392 +272100 +13923 +1103821 +1066224 +2586183 +2484342 +1692055 +272102 +1553574 +1916597 +1149712 +2514095 +2484317 +1816088 +2039511 +1799903 +688997 +272124 +2788744 +1553568 +1936727 +2387207 +87040 +1171829 +239213 +2788740 +2104367 +1398677 +1074221 +1084409 +155317 +2647468 +1175849 +1084399 +390200 +52994 +1816108 +919763 +1253199 +1867412 +1692071 +961942 +961967 +759481 +2484416 +2484506 +1149714 +792415 +335147 +1499950 +689030 +529691 +416445 +1553629 +2299721 +1778639 +1168415 +792423 +1553639 +1816134 +792427 +1352881 +919782 +1327089 +792419 +1242648 +195973 +2484505 +961961 +1867428 +2647503 +2586215 +87057 +961972 +1162026 +2327509 +961963 +13959 +1216794 +2484414 +2647487 +1730293 +447597 +1427772 +1553642 +465901 +1712111 +2327537 +961950 +2164558 +1692087 +1162018 +792431 +1162011 +2164565 +752137 +1273468 +2484423 +2484418 +1352880 +2484458 +2484471 +2484443 +961944 +689015 +1499941 +2586206 +2327521 +752129 +1553679 +1730300 +1499935 +335152 +2164586 +1066233 +2514132 +1692103 +335143 +2438532 +2484415 +2086743 +1162038 +447595 +2086744 +1867411 +1831781 +1427769 +529655 +1553600 +746779 +403672 +1867420 +1831783 +1273470 +1253195 +1674455 +13943 +1867422 +2387210 +1471598 +752127 +2309698 +689038 +759487 +1831779 +613996 +1553616 +1902937 +1471599 +961953 +2484457 +465904 +2327526 +2586193 +2647495 +919787 +529685 +2484456 +689018 +2647493 +792417 +447596 +335155 +1484803 +2327517 +13956 +2164590 +1253202 +1674450 +2514122 +722141 +219506 +1712109 +792416 +335145 +529680 +2647488 +792406 +1662614 +759473 +1385889 +2739789 +2022190 +614041 +2647565 +2327553 +1184635 +722170 +1370496 +1370475 +1398694 +735535 +2262909 +1628256 +1327121 +614007 +614064 +1375477 +752176 +1389949 +614000 +1960753 +1389970 +1370509 +2739819 +2739805 +2484552 +1553702 +1816162 +2352469 +1385891 +1370501 +614083 +2000331 +2739807 +2742917 +1389969 +1263211 +1427799 +2759870 +1375462 +422867 +792439 +1352920 +735536 +713241 +1988523 +1005301 +752217 +1343796 +752202 +1988517 +2840226 +614050 +1311378 +2514140 +2759885 +1692114 +1628248 +2753969 +869796 +1293442 +465913 +1916649 +752188 +2262924 +1352912 +1263202 +1867439 +1951069 +1253212 +2746787 +2788770 +1398682 +2327556 +2739816 +155332 +1391100 +614090 +2759897 +1692120 +2647536 +501606 +1553718 +1273480 +1391094 +87078 +2759874 +752174 +1352925 +2586257 +1111679 +1394731 +2016343 +1719985 +1389959 +1553699 +1389948 +497724 +428531 +614082 +1389954 +2016330 +1704766 +1427794 +1168418 +752160 +2721821 +689065 +2586236 +1398684 +2484518 +1370479 +792449 +2262921 +1520415 +2739788 +1394711 +529700 +1263209 +2681480 +1387338 +2868941 +491435 +1366144 +2746807 +1902962 +1391082 +752189 +722162 +1370507 +752177 +735540 +87079 +1902952 +529701 +1370518 +1084420 +529752 +1352886 +1352907 +1936738 +2164592 +1366149 +2022183 +1902951 +2759893 +1263213 +1816146 +529705 +2484542 +2484549 +1242657 +667561 +2710041 +1628238 +713265 +1253216 +1253206 +2840225 +2647522 +1628237 +1916671 +491434 +1389947 +1394718 +1398699 +1628236 +2484555 +529724 +1263245 +2586252 +743912 +2721820 +155334 +1628255 +1683218 +2647552 +1753646 +1988514 +1132286 +1273473 +1553708 +1366150 +2022194 +752208 +1760561 +614084 +2586255 +1692111 +2164605 +1352930 +1704771 +1352904 +1273472 +752187 +667552 +614085 +2753948 +2484525 +1427788 +1916681 +1988530 +1168423 +713242 +2710032 +1520412 +1628258 +614081 +2514141 +735542 +614034 +735527 +2586261 +1719991 +2484625 +2039531 +478520 +1799976 +2484573 +2022282 +2484604 +2012102 +2484614 +614113 +1352994 +2000360 +2360818 +447614 +2016372 +1553742 +2086760 +1327132 +2012114 +207563 +2012100 +13968 +1370531 +2484661 +2327580 +2012098 +2484629 +2164628 +2022306 +219511 +2000349 +667574 +1352969 +1867486 +2484702 +529785 +722190 +2022256 +2327617 +1353007 +689082 +722192 +2022265 +2000350 +2484626 +2387236 +2484634 +2484638 +1394750 +2484621 +2164711 +2647613 +478522 +2426053 +2534555 +1149723 +2438547 +2484707 +1352967 +1674495 +741419 +1370560 +614146 +529832 +2438561 +2586303 +1831793 +667578 +1628292 +614124 +713278 +1392061 +1387349 +2016367 +2484585 +1975069 +1370533 +2012091 +2164646 +2586263 +1867496 +2016355 +1867489 +731745 +2647585 +2647575 +2840234 +2327574 +2022262 +2016379 +667582 +2387232 +2484703 +87084 +1831790 +2022264 +1352971 +741410 +1370542 +2484598 +2164639 +2164675 +1149719 +1831798 +2000362 +2387237 +689100 +1352940 +2164682 +2164691 +239235 +2484694 +2016363 +1831802 +2438541 +1352995 +614099 +2586294 +1778649 +1111685 +1111681 +1352975 +1216813 +1327133 +1674494 +1988542 +2022224 +2484632 +2484676 +2016387 +2016404 +1352946 +2647623 +2022229 +1382004 +1353010 +2000343 +1867471 +614093 +87080 +2022280 +1662615 +2484599 +1370535 +2164671 +2012093 +689085 +1398745 +1370548 +903505 +2586274 +2012089 +2164638 +2299728 +1988545 +2387235 +2360819 +741435 +2086765 +1692134 +2022279 +2016353 +1799994 +1327125 +1674513 +13989 +1201578 +1353024 +2647662 +2484844 +2484788 +2484888 +689109 +13979 +2484826 +2484769 +792457 +1800005 +2299763 +1092523 +2484805 +2484731 +1028231 +962037 +1499967 +2586328 +2327651 +2484889 +497729 +759493 +1674504 +962043 +1273496 +250957 +1867516 +2586325 +1162079 +1820071 +2387247 +2164743 +792501 +1800012 +1800052 +1916717 +1867503 +419583 +1402280 +2484770 +689108 +2387249 +2327658 +1253229 +2484729 +1916703 +919837 +2484868 +2484822 +403683 +1427821 +1370563 +2647665 +1867539 +1392069 +2484749 +1382012 +2484746 +1553798 +1916710 +2164742 +1378163 +2164731 +2164719 +1499973 +2327675 +1692169 +1778661 +2327678 +1086433 +1916706 +1402277 +2299770 +1692143 +1382013 +250943 +2484893 +962000 +419601 +1253228 +1405640 +2484881 +1353023 +2387263 +1867514 +2484900 +1168430 +1553754 +2299773 +1499975 +1800049 +1553748 +250932 +2327682 +2484884 +1133210 +1867505 +1800026 +2647645 +1184652 +1162062 +13987 +792483 +1692154 +2484814 +1273495 +1800004 +1427811 +1184658 +419579 +250919 +2327624 +2484755 +2387255 +2484890 +962004 +354681 +407271 +792507 +1867511 +792490 +1867532 +2086771 +1778654 +2000365 +250956 +2484737 +250959 +2484776 +1378166 +1327151 +1553799 +2360821 +2484869 +87101 +689107 +2022322 +1111688 +2754023 +419611 +2754031 +1692196 +1327157 +1394771 +2164796 +1553822 +1988558 +1149740 +2647725 +1353059 +2754228 +478533 +87134 +1692219 +1692188 +2164784 +2164795 +2647722 +2647680 +1499990 +1800060 +2647693 +1353043 +1499986 +529899 +2754060 +1553859 +2164761 +2086773 +2586350 +1273508 +1800076 +1370574 +1692262 +2387270 +87139 +1394769 +2754076 +2327689 +1216829 +962081 +250973 +2647705 +1402286 +1975074 +614155 +1674527 +335163 +1692254 +2647690 +1302719 +219531 +87143 +2012126 +2754026 +1378171 +2647730 +2647676 +962055 +2754169 +1499984 +2746850 +2484949 +1382016 +2586353 +2754069 +2746814 +2754233 +447638 +1130151 +1553825 +2164755 +2754191 +1273501 +2647710 +1273503 +1692203 +1162085 +2754039 +2164776 +529866 +1370622 +1370603 +1916734 +2754002 +919841 +1353049 +1553867 +1273514 +87145 +1975077 +1692250 +2022330 +1975076 +1951076 +2754055 +2022325 +1951075 +1988562 +2485011 +1184664 +1353031 +2484925 +1216834 +2754088 +1353044 +1378170 +2684857 +2746823 +2387267 +1553845 +1370578 +250976 +2754100 +2746828 +1692279 +2754125 +1046400 +2754165 +792516 +1692193 +1831811 +2754122 +2731196 +1692199 +529884 +2647688 +1692272 +1370617 +1867569 +1662620 +1988561 +2647715 +2754238 +1674525 +1398785 +2484929 +2754170 +1162088 +1149736 +2684856 +792524 +2484951 +1867555 +1398772 +2164777 +2417221 +1916718 +2754231 +2753983 +2299782 +689111 +2754018 +1692241 +2647683 +1130156 +1553872 +2039543 +219533 +1427846 +1402287 +2647724 +2746837 +529917 +1398770 +2753992 +529883 +2731198 +2754047 +743942 +2485023 +722230 +2352491 +2754256 +491442 +2738283 +1242701 +2738197 +2352492 +1988595 +1936762 +1201589 +1273530 +722228 +2754261 +722251 +2016429 +2754253 +407275 +1201591 +2738235 +2738267 +1273552 +2738263 +1273535 +722274 +743981 +1816208 +743950 +2514197 +743975 +2738205 +1273533 +1134963 +1988600 +1902980 +1816209 +491447 +2738244 +1327173 +1273545 +2309701 +2738202 +722243 +1143121 +491450 +689144 +722234 +529934 +1263257 +722262 +1302724 +1816221 +491449 +1719993 +1168488 +1784538 +1263258 +87154 +2738243 +2840241 +743937 +1816246 +2514176 +2738211 +1816215 +1784529 +2022386 +1816172 +2022373 +1988625 +722272 +743939 +1273559 +2514272 +1784532 +2514158 +491458 +1902994 +722283 +1302736 +407279 +2514191 +1168492 +1816253 +1988636 +1302738 +2788786 +2738272 +1134962 +743949 +1975085 +2754255 +2681484 +1168517 +1988613 +1168439 +1816258 +1168482 +2514171 +2738281 +1816218 +2738212 +1769074 +1168502 +1816197 +1692302 +1553927 +419626 +2327701 +2647764 +1162098 +1692293 +1553945 +1730328 +1130173 +352054 +1111695 +1916748 +2827630 +2754291 +2485042 +2788861 +1553914 +419660 +419643 +2788830 +722286 +1253247 +1327181 +1916757 +2485080 +1130178 +2485073 +1800090 +2164815 +2086778 +1988654 +919853 +1162103 +1133213 +2754279 +1216852 +2016435 +1216853 +1499995 +2485109 +1692301 +2485102 +2485128 +2485096 +2485060 +2485057 +792567 +1553877 +403693 +2485062 +497752 +1800123 +2485028 +1138502 +2788828 +2485104 +1302744 +478560 +219540 +2164803 +1427851 +2164814 +2754283 +2485079 +2788831 +1553899 +2485027 +1916755 +529965 +478553 +2788812 +1820073 +352051 +2485050 +2788800 +689146 +1867577 +792532 +529975 +2647750 +2647765 +1692324 +1867607 +2485121 +410856 +1162101 +2514281 +903518 +1800111 +497751 +2164819 +2746855 +2754264 +2788862 +2647742 +2164808 +2788852 +2327709 +741450 +1867585 +2485138 +2647752 +759502 +1553902 +1867588 +419627 +2647751 +419647 +2788850 +2788807 +2485089 +1916747 +2647791 +2788873 +1242715 +250983 +2754301 +365216 +1242709 +2485159 +348224 +614176 +2352499 +2262933 +1692329 +2352500 +2069415 +2485167 +1520419 +1845937 +447650 +614194 +614174 +1936778 +207564 +614191 +1471635 +1916763 +2586387 +1867630 +1784547 +2485168 +376693 +614178 +1242738 +1005330 +1553970 +1936780 +1471633 +1845935 +1916773 +1216871 +1155627 +1936779 +1005355 +2647783 +2586377 +1816264 +1216855 +2485211 +2485232 +1903018 +1628327 +1005351 +1201599 +447653 +1005343 +1816275 +2514315 +2827639 +53029 +1216859 +1784545 +155352 +1816269 +2438596 +1692328 +667594 +2514288 +614184 +1800136 +2514302 +1074249 +1800137 +1005319 +713281 +1143125 +1553960 +335172 +2485174 +14016 +407285 +1398790 +1133216 +1253255 +1628308 +465923 +1628322 +272150 +1066260 +1216858 +1800145 +1242716 +2681501 +1427854 +2352495 +1149755 +1155622 +1168521 +1707810 +1216863 +2327726 +491464 +1784549 +869801 +376674 +2827633 +2788863 +2754298 +1712126 +53011 +2485199 +1471634 +1092529 +1831824 +2164831 +1155621 +1155619 +746803 +447655 +962107 +689156 +2164837 +2299794 +2164836 +1628304 +2164828 +1903001 +491473 +2788872 +1753656 +2534565 +2164920 +962115 +2647828 +2647889 +2586423 +14028 +2164885 +1916814 +2647905 +2647910 +2647913 +1500007 +14033 +529997 +1916841 +2485242 +1216872 +1916818 +1500004 +2647826 +2647817 +1554002 +2647891 +1916846 +2164902 +2647853 +2485284 +14035 +365219 +2485285 +2647881 +2164937 +1553999 +1427873 +478575 +1092540 +2164857 +1162111 +1327186 +1916839 +2586415 +2485275 +2534562 +2647846 +2586438 +1092550 +2164901 +1916831 +2164899 +2360838 +1382036 +1916840 +1216895 +2164850 +1092548 +2485272 +2485280 +2586435 +1831834 +1916804 +1427866 +2004794 +1916792 +14022 +1554000 +1427863 +530007 +1553985 +1553992 +2586424 +1692342 +2534568 +2485267 +1867670 +2647961 +1916864 +962136 +447665 +2327745 +1867693 +1253286 +919875 +919872 +1201613 +2164959 +1867689 +14053 +1370630 +1916867 +962129 +1730361 +1184718 +87181 +1916882 +689171 +1103835 +1162116 +250987 +447670 +1730363 +2327743 +2647931 +1184706 +2485319 +2485312 +2417227 +87180 +1730365 +1162123 +2485296 +196003 +1831852 +155363 +2647937 +962133 +1867658 +1867653 +1398792 +1327189 +1103836 +2485316 +155357 +1216912 +195999 +1216919 +1216910 +2299798 +2485309 +2647920 +1184707 +272162 +2327749 +1253288 +1800192 +1554016 +87179 +87183 +2164971 +1867680 +1216905 +1253275 +376699 +1184708 +1916866 +530015 +1092555 +1916892 +2327742 +2647946 +14058 +250988 +792588 +2164962 +2534580 +155368 +792627 +1916959 +792642 +2586494 +1500025 +1916965 +1730406 +1916975 +2788921 +1916913 +2164979 +87219 +1917000 +2534594 +14082 +478601 +2485442 +87209 +2586531 +1216948 +2165022 +1253324 +919912 +1149777 +87215 +359313 +2534608 +2417229 +919906 +196013 +1867732 +1800226 +1674555 +530023 +2647991 +478594 +2164973 +1554049 +14070 +1800236 +1712138 +962150 +1253333 +2788916 +792631 +2485396 +1046412 +1184745 +903539 +1692390 +2387304 +1216939 +2648137 +87212 +1253319 +1730389 +2438608 +1327194 +1500020 +2485370 +1378174 +87234 +2387317 +2648093 +1948112 +2534604 +1554066 +1500015 +1216949 +2164972 +2586475 +2534602 +2164988 +196015 +2586465 +2788922 +1692384 +2485371 +1130210 +1730392 +2022449 +2165024 +365245 +1554093 +87227 +2788915 +2534582 +1253309 +2788911 +1130227 +1554074 +2165025 +2647994 +2754341 +1253370 +1730397 +1253379 +1253304 +1800253 +1554072 +1800259 +2647978 +2648020 +1253332 +530021 +87233 +1712136 +1554069 +1800222 +2485344 +1730378 +2586528 +1554118 +2648025 +2485411 +1916901 +1253362 +2485390 +1253321 +1867700 +1753660 +530031 +2754333 +2586489 +1130233 +1730371 +2840265 +1327199 +2485357 +1674564 +1253337 +1370632 +1427881 +1916936 +2485368 +2165023 +614214 +1692396 +1162142 +2648136 +530034 +1730379 +1055700 +1253330 +1216947 +792641 +2648040 +530022 +478607 +1712140 +689179 +1707003 +1554105 +2485325 +1674556 +478584 +759508 +2754329 +1554107 +2754327 +1916991 +2647980 +2586508 +1831866 +327658 +2586502 +2327759 +792644 +1028241 +2299805 +1730398 +2165021 +1184739 +2299799 +1674566 +1712143 +792621 +1050730 +1712141 +478604 +1130223 +1253372 +1378178 +919897 +2485423 +1554046 +1800231 +1253345 +14081 +2754348 +2647990 +741460 +1216977 +2022486 +478613 +2485452 +2788957 +2746916 +614221 +1370648 +614293 +384700 +722309 +1500038 +722304 +2586564 +2746887 +2746938 +2746968 +2746918 +2016480 +2485483 +2788949 +1370633 +2746979 +1387461 +1985127 +667639 +2735997 +689238 +530074 +722306 +2754389 +2012157 +1055702 +667650 +2746910 +1554163 +741459 +1382046 +1353130 +1903035 +2022531 +1387485 +2022501 +2754465 +1988681 +1398837 +1149786 +2586560 +2754467 +403703 +2000391 +1387455 +731764 +2788948 +744015 +689217 +1427890 +744024 +2417232 +478616 +87249 +2788968 +1831879 +1327211 +2754536 +713286 +2022469 +1162150 +2586545 +1293462 +1867795 +2754394 +2746950 +1674590 +1800274 +1778684 +2648150 +2710044 +272166 +1554150 +738142 +2485502 +2016502 +1398859 +2746933 +2710048 +746810 +1353111 +1387479 +530071 +1392080 +1394809 +2022549 +689202 +1398827 +2754433 +689244 +1692399 +1149789 +1382077 +2746875 +1155631 +2746937 +2648152 +1692405 +1394778 +2004809 +2648146 +2387322 +2165061 +1138513 +1398834 +1784552 +1387445 +2738291 +1394781 +2754414 +1378187 +1353117 +1382099 +2754488 +272167 +1398876 +1387459 +1382080 +2746904 +2586543 +1554168 +2746902 +1398861 +1674588 +1628339 +614301 +1398851 +2754442 +1554164 +1831876 +2514325 +2165052 +1382045 +2746909 +2754463 +2016498 +2299809 +2754462 +2086804 +1387446 +614236 +1867804 +2788963 +478609 +2754400 +2754491 +1867798 +1353107 +1387476 +1674577 +731769 +2485450 +741471 +2022512 +1382095 +1554140 +2754482 +1867788 +2004800 +1917003 +2012151 +1845942 +1149785 +2485494 +2165053 +614274 +667613 +2788976 +1168536 +2746967 +1382070 +1628354 +251002 +2299810 +1398811 +614296 +1387474 +1500040 +1766783 +667635 +1800285 +155377 +1394799 +530101 +1382101 +1382081 +1554154 +1382110 +667646 +1394808 +667605 +2746954 +1382049 +1111719 +667623 +2710049 +2022518 +689212 +2754350 +2788970 +1394793 +1867818 +87260 +919998 +689279 +2840295 +962164 +1800295 +2165138 +1005389 +2360860 +903560 +1353154 +919962 +87262 +87269 +2165096 +1778700 +87301 +87292 +1500048 +1500070 +2299832 +2022556 +942029 +1867810 +1149801 +196027 +1554202 +2586572 +1778712 +1674642 +14100 +2485548 +1554204 +2299825 +614318 +942022 +942004 +335186 +614317 +155409 +2485515 +920018 +2165089 +1674662 +272177 +1327239 +942012 +792668 +1800305 +196039 +53051 +348242 +478631 +239255 +1674645 +1554191 +53055 +1055710 +87278 +792699 +919996 +919965 +2327781 +2309704 +196028 +1720002 +689259 +2016513 +2165148 +1831882 +2165155 +1674626 +919974 +792696 +689284 +2840294 +2165095 +1162156 +87285 +919977 +942021 +196025 +348240 +1055719 +2485544 +2299817 +410876 +530131 +1162151 +53070 +239256 +2426099 +2438650 +2165109 +1471654 +689266 +2426068 +792701 +2165121 +741488 +919954 +1948113 +530146 +2840273 +919968 +1867830 +1242757 +155417 +2012159 +1683230 +1162153 +1554186 +335184 +962171 +1005393 +1554177 +2426100 +1405653 +2534628 +1050731 +87272 +155402 +1831885 +196041 +1149794 +1484817 +1427892 +87295 +2165127 +2840277 +1353145 +1500066 +87287 +1149796 +869824 +614313 +1778705 +2016510 +2840325 +919992 +869832 +298813 +1674664 +298811 +1554215 +2485679 +2485625 +962183 +1554264 +2485567 +219607 +2360866 +1184782 +2648170 +2327866 +2012162 +530180 +497785 +1917030 +1692461 +272198 +1184786 +196051 +759524 +1554280 +2165271 +2086823 +1692458 +1674671 +759543 +219594 +2586635 +14137 +497761 +2586607 +768694 +759545 +2165236 +2586611 +2534656 +1028246 +1674666 +1917035 +2648227 +792758 +2648216 +2327842 +2039558 +2327808 +1253389 +1253393 +1427910 +2648172 +1917024 +1055725 +1554288 +1692470 +2485624 +792778 +2165238 +2648229 +2327838 +1427926 +1078480 +792733 +2648223 +14134 +219587 +1327241 +251045 +219605 +2327813 +2327797 +396805 +1253384 +2586582 +1554250 +2485607 +962205 +2438656 +2283404 +2586621 +251048 +2586648 +1917049 +1800328 +1133227 +1554238 +2485569 +428571 +1111722 +1327243 +497795 +1216984 +2485620 +352061 +251047 +759537 +1554275 +2387348 +1554245 +792780 +1554327 +2485638 +1692484 +2165222 +1554230 +792751 +2165250 +2039560 +2086812 +2648171 +87305 +2165161 +2165269 +2586638 +1217015 +2299855 +1092573 +447689 +2438660 +2586586 +530176 +1692435 +722337 +1917044 +792746 +1554235 +2327865 +2354394 +1554287 +746821 +1800318 +1184783 +752226 +2165215 +1184789 +792774 +2485603 +2788988 +2485680 +1162169 +14142 +2165166 +792715 +1554229 +689301 +1162161 +2586595 +1800319 +2165188 +2648225 +1184787 +1554228 +2648219 +2485596 +759523 +14144 +962187 +2754548 +2485667 +2485636 +1138532 +1554227 +792739 +903577 +1427918 +1554283 +689306 +1253392 +1398879 +1757423 +689292 +2699496 +14135 +298810 +2586626 +2327849 +1917048 +1405659 +1078461 +1800339 +2485601 +2165201 +1692444 +2485590 +2485611 +735556 +2485656 +2485571 +2586590 +1427937 +2262960 +792796 +2086845 +155451 +1293467 +1800342 +530198 +1867863 +155427 +689330 +1500114 +667678 +689327 +1500110 +2165312 +2299884 +1162202 +1103842 +792784 +1520459 +689332 +239268 +1370655 +1784561 +2586669 +1712152 +1500098 +2438684 +272218 +1692491 +2586665 +1683233 +869871 +2586696 +739865 +2327874 +155450 +2299889 +2299879 +2485778 +1674710 +272224 +1149824 +465946 +744033 +2387376 +2586664 +741493 +1662639 +1092592 +1778717 +2165341 +2360879 +2262954 +2327869 +2309705 +1800351 +614338 +447712 +1471667 +1784557 +1253411 +2789014 +2165276 +155470 +155462 +962211 +2648261 +1168550 +1111736 +2485720 +53118 +2165327 +614395 +272232 +155452 +1778727 +1554361 +1055739 +87334 +478672 +920052 +53114 +2165287 +2699497 +14160 +354699 +2165329 +1554383 +365250 +239272 +87341 +1168552 +1149814 +1704786 +1162203 +2086835 +2165307 +2387357 +1005408 +2648248 +614334 +1217037 +478665 +1628398 +155482 +614359 +1520450 +87344 +239280 +196056 +2485752 +746823 +920053 +2586653 +2165299 +1917060 +2165340 +1554334 +1217027 +2684873 +2299887 +1168537 +1554348 +1162201 +962220 +689334 +689349 +1674716 +2840330 +1382121 +530210 +1692503 +713336 +792789 +1628386 +2086832 +313480 +1903039 +1427932 +155438 +1730474 +1800368 +2262957 +614342 +491518 +689360 +365248 +2648258 +1242764 +1168549 +491513 +1092589 +219616 +53089 +1628382 +869881 +403714 +155428 +731788 +155434 +614376 +1903044 +1662640 +1520458 +614393 +1800367 +689354 +962216 +2485691 +2586672 +478649 +2165277 +2485776 +903582 +1917057 +53093 +2485758 +1155638 +1753666 +722341 +1520467 +2485765 +1253417 +689352 +2648241 +2648240 +1554353 +53081 +2285814 +1554352 +2485697 +731793 +1554345 +1712155 +614365 +2586704 +1500104 +1628390 +2586697 +1500094 +1327245 +1353157 +2438676 +196061 +1867878 +1554370 +2327881 +2387370 +2586659 +1674717 +1055742 +614381 +689347 +1868028 +2747000 +1628486 +1402314 +2165354 +376718 +1867923 +403735 +1520479 +2086882 +1917105 +292130 +497809 +155561 +251100 +1149850 +2327938 +352106 +2327897 +87403 +313484 +2485786 +313483 +447757 +1917098 +2165510 +1917076 +1778740 +1087951 +1149878 +219683 +1217048 +1800464 +920083 +1628440 +1903073 +87472 +87453 +2387394 +1628467 +1092609 +196147 +239389 +2387403 +384724 +741501 +1398882 +1005441 +2165515 +869898 +251106 +465954 +1988708 +1162215 +2165459 +1800396 +1867976 +713352 +1800412 +207612 +219672 +1692554 +1628480 +407363 +1378202 +53266 +1554448 +1066311 +1730494 +376724 +491575 +239330 +614425 +1149870 +403732 +2586758 +1867997 +1845948 +53235 +1554492 +2648312 +1917096 +53234 +689406 +2514350 +419676 +491592 +407355 +1554437 +403730 +428619 +1554575 +2262997 +2514354 +376752 +465952 +1674748 +1730509 +348267 +2438712 +2165503 +155595 +1103859 +1005461 +419721 +2485963 +87452 +1005506 +1628474 +1554452 +2485911 +335236 +2485828 +1800383 +2485858 +1253422 +155507 +920069 +1628412 +614433 +744039 +2309709 +1370662 +713355 +920079 +1370659 +478761 +239354 +87389 +352115 +1484832 +465988 +2534679 +2165451 +920077 +14246 +2485934 +1184816 +1800454 +272314 +155570 +155546 +447745 +2485795 +2299909 +87481 +2165496 +87382 +1692553 +2086867 +2387385 +491569 +53248 +2263001 +447750 +272273 +1674726 +2165484 +2299924 +251086 +1402313 +447775 +2360885 +2165429 +87374 +207623 +731804 +53186 +1217095 +272242 +689395 +2586709 +403725 +407361 +2086857 +1554460 +348266 +348313 +2534670 +1867925 +447801 +1917072 +1831930 +1800448 +2165359 +1674745 +1217081 +335246 +1273598 +53126 +1134971 +1554580 +491555 +1712158 +1500134 +365266 +2165365 +1378199 +2387410 +407331 +1111742 +962276 +2485856 +746827 +447814 +1960764 +196143 +1988707 +53265 +272340 +196133 +53269 +1730496 +1149874 +2485923 +465974 +792805 +407362 +53212 +491616 +1816297 +155553 +1520477 +2485829 +2000411 +1138535 +2586719 +1867940 +272292 +447744 +1184824 +478678 +491586 +1201645 +251105 +1382130 +738152 +2165468 +365293 +87422 +1471673 +53249 +2022563 +689377 +2327886 +2360886 +530243 +1683245 +219686 +447754 +530231 +348261 +87360 +14243 +2438719 +2485887 +348260 +491541 +2299914 +87368 +2327981 +1554420 +396815 +903592 +2586729 +1674755 +1554435 +1168575 +1520472 +869901 +744048 +2327952 +14280 +365255 +962272 +53245 +1005510 +335204 +239328 +155543 +1784562 +53304 +478693 +920081 +2485927 +2165507 +87366 +1005493 +87407 +1674723 +1674762 +1730492 +2165395 +447758 +1253446 +731814 +962235 +530232 +2165565 +722351 +713359 +2299890 +428623 +419680 +14220 +2438704 +1162229 +53294 +1917095 +478697 +1868008 +2485962 +2534668 +376734 +1092604 +962234 +1005454 +155623 +428593 +2165549 +87448 +447766 +354711 +313491 +1217064 +1066303 +1050735 +465978 +1917115 +1692556 +722360 +335247 +869907 +1692565 +155604 +2586749 +2754561 +491564 +419732 +2299936 +376736 +1554560 +447734 +348268 +1554472 +1674742 +239342 +1662652 +1253442 +2485842 +2485859 +1162227 +155567 +384720 +1800462 +447805 +14262 +1554392 +14257 +2485938 +614435 +1554409 +1149872 +2485799 +2165481 +407327 +1184829 +14302 +746829 +1800415 +962264 +2485965 +219632 +14297 +1370658 +14233 +87439 +219698 +722352 +2165390 +942067 +2086847 +219690 +2327956 +14323 +1253451 +689407 +2485788 +962252 +53261 +1831919 +1074279 +1149840 +2165543 +1005460 +447730 +2586777 +447789 +1784565 +14186 +2165447 +1554489 +155485 +1868014 +2648330 +689381 +196097 +1427951 +2165346 +1005480 +53242 +1674761 +403748 +2625644 +1074268 +2586776 +1217055 +2648315 +348275 +447773 +407370 +2327899 +2438715 +1917094 +87384 +491545 +920096 +1683244 +1867957 +272233 +87391 +155547 +2069437 +348316 +1720011 +1692562 +2165369 +2165393 +1343811 +239335 +1074273 +1005508 +1816298 +2283417 +2165445 +1554468 +722353 +2485897 +491538 +497806 +614440 +14223 +14228 +14181 +2514348 +1005450 +1055757 +1628429 +407379 +239353 +2485896 +327669 +352069 +384705 +2485973 +2165400 +2299929 +1353169 +196130 +1554436 +1778750 +1500140 +731813 +465983 +1554548 +1134973 +491588 +744052 +478764 +1867991 +2586773 +87420 +272330 +1554553 +407314 +1554593 +1692536 +207622 +1005458 +1800438 +407364 +1149851 +447717 +1831928 +2165448 +14296 +1867951 +2417237 +1387494 +272320 +1046418 +359328 +1051802 +2086861 +196107 +1674760 +376727 +1484835 +1816305 +2648314 +491563 +2387411 +14312 +251141 +2165399 +1975155 +1398885 +196124 +2327931 +272261 +1484826 +1217044 +2387406 +1903074 +53181 +1471681 +1628452 +744047 +14316 +447762 +2165350 +251101 +272256 +419678 +2514355 +1554445 +354700 +2165353 +2086869 +251155 +407381 +478752 +1554565 +251125 +1125092 +155492 +2022609 +1394841 +722385 +1554601 +2022631 +1398909 +1353196 +1138546 +1398989 +2789025 +1917122 +667698 +407395 +1398965 +1392086 +1155668 +491626 +1784575 +1398936 +2754601 +1985129 +1816314 +2004817 +2747014 +1149888 +689421 +2016534 +2754651 +741522 +1674796 +2486004 +744087 +1074292 +614461 +530279 +614459 +2012175 +2754617 +1398986 +2022633 +87488 +1769090 +2022606 +2747096 +1398911 +530288 +2754643 +722386 +1800489 +1394848 +1398918 +614466 +731819 +1387501 +87486 +1155671 +1674783 +2754640 +1387496 +1766807 +1394816 +1936805 +746836 +1149880 +1055765 +2747023 +731831 +1903086 +1382163 +741530 +2022617 +1387509 +1402324 +14333 +1327264 +1382161 +2747090 +1800506 +1778752 +2012192 +2747047 +1778756 +2747020 +2738304 +1520482 +2004819 +2022616 +1353177 +1394833 +2789037 +2485999 +1394838 +744080 +746842 +1398960 +2016556 +741518 +2747087 +530331 +713372 +2747077 +1055764 +530275 +614458 +689447 +1778758 +2747021 +2586781 +731818 +2754636 +713360 +530303 +2016530 +1343815 +2016527 +1353199 +478775 +2004823 +2016563 +2754664 +1387507 +1201649 +530280 +2004821 +722370 +2754646 +2486005 +2016531 +744062 +1242805 +2747057 +1398934 +1149902 +689416 +2514360 +1988713 +1387510 +1398922 +2754576 +1387529 +869920 +1005543 +2016586 +2710065 +1242810 +2022695 +1845953 +1387517 +1293486 +2648342 +155656 +1988720 +1046420 +1936806 +2710063 +1263274 +614474 +2684893 +1378207 +2016581 +2721866 +2684883 +2754691 +2586789 +667736 +1402326 +530354 +744091 +2022708 +731851 +731859 +1370696 +1387515 +2699501 +2486018 +1353213 +491636 +2684885 +2022704 +1387528 +2868974 +2754695 +614489 +1988768 +1387527 +869939 +869932 +1353224 +2789072 +1948119 +2684880 +869941 +2736011 +1327271 +1293476 +1005548 +2754687 +2684878 +1293489 +530342 +1353207 +667744 +2754685 +2699500 +155651 +2022689 +1370675 +2165599 +1402327 +1343817 +1975167 +869917 +667711 +1293472 +614494 +1730523 +2721854 +1387531 +2789063 +614472 +376759 +2263006 +2684875 +403779 +1111762 +530351 +1353220 +667720 +2754702 +722396 +2747122 +1730528 +744095 +2868947 +2327993 +2022699 +2684887 +1387512 +2789049 +2022703 +744096 +792837 +2022663 +869921 +1184839 +2648340 +2486017 +1370693 +2022647 +2165619 +1391110 +1327290 +2759914 +410938 +1353232 +2263013 +2710087 +2742940 +689473 +2736023 +713380 +1382188 +2728151 +1951098 +530380 +1327280 +2710084 +2710080 +1311397 +2016620 +722416 +2000437 +2754718 +2699511 +2710088 +667755 +1399001 +2742920 +1396816 +741547 +2165610 +1674803 +753528 +1903098 +2742926 +1941524 +920109 +722414 +614510 +1778767 +1378213 +2742941 +2004846 +2759918 +2710086 +722398 +920107 +1327310 +1554647 +1960770 +869943 +722411 +2000440 +2086908 +1327301 +251160 +1327300 +651140 +722409 +2016605 +2486048 +1375481 +1628508 +1378210 +2739825 +2016599 +1868067 +1401059 +2016596 +2486047 +2086906 +1554621 +335259 +2016618 +1327305 +416452 +1143140 +792849 +1988769 +2840340 +2486022 +1394883 +1784583 +1960775 +2004852 +2736015 +1353233 +2742937 +1868070 +1394872 +1831945 +651142 +1427970 +1378215 +1378219 +651144 +1327282 +753537 +2736016 +1382202 +1658253 +1554634 +722415 +2754707 +251162 +614515 +1954542 +2016621 +2721876 +1396818 +2004844 +753527 +1394949 +2486129 +1394895 +2534694 +416453 +1427974 +722456 +2016748 +614522 +2165683 +2747170 +2691943 +2742975 +1387567 +1975195 +2486101 +1168596 +962326 +2022744 +2586821 +722417 +2486079 +1253462 +2438754 +722430 +1394901 +2586839 +2754748 +667758 +2586844 +2681516 +1394900 +530478 +749266 +2016667 +2721889 +2016652 +2016752 +2747161 +2016851 +749252 +1387577 +1273649 +2016669 +2648366 +530454 +2754749 +2165673 +1168597 +2165661 +1394935 +2736070 +530464 +2016691 +2387433 +1327317 +1394911 +2016681 +2736059 +1353297 +2004856 +1382241 +2016744 +2486121 +2731218 +1149924 +1868089 +2016817 +2016742 +1800525 +1353288 +2789094 +1800531 +1394891 +2739835 +2738333 +1399014 +530461 +2165632 +2426130 +530506 +2586802 +1327352 +2022809 +689511 +1273655 +530496 +422873 +731867 +2486091 +2165656 +738162 +2022817 +2754772 +1066324 +1353294 +2022826 +1201656 +1382249 +2016696 +2016859 +2016703 +1975199 +1800538 +2016777 +1394886 +1353251 +2486116 +792862 +2586837 +2022794 +2438746 +2328011 +2486080 +752260 +2486132 +2016809 +1399021 +335260 +2022728 +1674816 +2747171 +1382256 +2736054 +1903099 +2022795 +752246 +2747126 +2016780 +2486083 +2754766 +2731215 +1396825 +2736069 +651183 +2016645 +1405666 +1273653 +2691948 +1273643 +2738335 +2016856 +2754752 +722465 +2840348 +689482 +530474 +2022808 +2736061 +689475 +1392098 +722424 +2016818 +1399010 +2754789 +1988794 +2022771 +792868 +2039590 +2165639 +2165693 +530433 +1066328 +2486069 +1273636 +1353287 +2016796 +741566 +1353256 +2739836 +2486072 +2586810 +1392095 +530408 +722479 +1753675 +2747141 +530388 +741574 +2586836 +2016855 +1868100 +2840345 +2648363 +722477 +14336 +2016858 +1800533 +1391116 +741563 +1392102 +1138560 +792874 +1353250 +2486075 +2016829 +1382223 +1242826 +2738334 +530513 +1391112 +1387556 +2016782 +1391122 +722432 +1382240 +1382255 +2736062 +651197 +2721892 +1217128 +2486063 +1391113 +1674815 +1988782 +1868101 +689490 +1353265 +1917131 +2486122 +2486057 +753561 +2004895 +614536 +1778791 +155685 +2648388 +2789164 +1427980 +2426137 +1005561 +530525 +1327404 +239417 +1382263 +1392109 +689584 +1382278 +962358 +2789145 +1382282 +962341 +614540 +530535 +1375488 +1387671 +1554694 +2710119 +2754811 +1389980 +1387674 +1149958 +1674822 +1674819 +239416 +1554702 +2299963 +749282 +1692604 +713410 +1078496 +651208 +497823 +1554706 +447831 +1554689 +792891 +1399080 +530529 +1975247 +530664 +1327381 +1387676 +2438784 +752284 +2486219 +2000485 +614539 +1753676 +2754802 +2486339 +1730539 +1868145 +689552 +1382272 +731869 +1382274 +2754823 +2754829 +530654 +667775 +651206 +2754818 +530592 +1975229 +689630 +962408 +2438771 +530697 +2486283 +530640 +651246 +2486205 +2299971 +410975 +2486322 +1059721 +1554692 +962383 +2004876 +2486238 +2000478 +2104388 +1366182 +722545 +722585 +2486184 +736467 +722517 +962343 +1954545 +1730536 +219727 +1471693 +2648391 +410946 +530622 +752295 +530631 +1394958 +530608 +614597 +1778806 +2016948 +530670 +689559 +219711 +1778798 +410963 +2789163 +2022845 +667773 +713396 +1387739 +1674855 +1327409 +2360889 +1399074 +410964 +530625 +1554677 +272390 +2691951 +1427989 +410957 +689593 +1375512 +2486317 +962342 +1343829 +1005555 +2710109 +1800560 +2486194 +752280 +2022888 +2586857 +2486241 +2004907 +1366184 +1394980 +1387594 +1554743 +2016899 +2004910 +1387612 +2016913 +2486274 +1149970 +530685 +2514375 +1554747 +1387693 +530604 +530682 +2016915 +2486228 +155676 +2016919 +2747186 +920136 +1554729 +2733699 +1674856 +1387734 +2486235 +2004893 +1800556 +962360 +1005558 +2016898 +2731226 +313499 +2486307 +1353307 +651219 +1217156 +1868152 +962357 +530609 +1353314 +1778807 +1382339 +752269 +1674824 +2731221 +2486154 +1800548 +1149937 +1387636 +2165720 +1149930 +2486233 +1868132 +1800546 +2016909 +530561 +1988810 +1138565 +2731238 +1778805 +1778813 +722501 +2486156 +2719337 +1382285 +410952 +1868136 +2648392 +2438763 +1500150 +530632 +530574 +2486293 +2016897 +1382311 +1692602 +722524 +1674827 +736465 +962393 +2486271 +530636 +207638 +1327386 +1427991 +689576 +1387592 +749289 +1327384 +410966 +2486326 +1375510 +1353341 +1960781 +2486299 +1960778 +920149 +1399045 +722503 +1692607 +1382308 +1674846 +731874 +2486206 +614544 +722543 +2486308 +2738353 +530621 +614575 +1399035 +689553 +1055779 +753564 +1800569 +2731231 +1800589 +1353350 +1353331 +1353355 +752306 +1800593 +1941529 +1353317 +1778789 +2754825 +196160 +251188 +614592 +410969 +1149954 +1674850 +689577 +2016908 +491641 +1800598 +2486305 +1005578 +1975251 +2486180 +2165729 +1387616 +219719 +2004884 +87540 +2022886 +1066345 +722507 +155683 +2754820 +2438764 +1975246 +1500157 +1831955 +1066354 +1778801 +614566 +2789110 +530547 +1327414 +2486276 +752277 +2710105 +722502 +2263018 +614562 +920153 +327684 +1066344 +1378231 +1960782 +1800579 +752291 +1399046 +1800572 +1427996 +2736087 +689615 +1960777 +1554719 +713389 +1111774 +2754794 +614529 +2754815 +2486344 +651233 +1399073 +1520488 +1975259 +2022856 +1554683 +651202 +689544 +1387601 +1674828 +2486213 +1628525 +722581 +869949 +753557 +1382327 +1387593 +689665 +2486386 +2016969 +1394983 +752415 +752345 +752351 +2736109 +689652 +2486415 +2022905 +2299981 +2754849 +1382348 +752343 +920171 +1778878 +1428004 +1382356 +689637 +2022904 +1066370 +2016982 +1353390 +1353377 +1392114 +1353372 +752361 +2736103 +1800602 +1800651 +2747202 +752322 +530711 +2747197 +1778859 +1778857 +530704 +752354 +1138570 +1778858 +741610 +752404 +2691956 +1988815 +1674860 +1395017 +1778847 +1162280 +2486410 +1387765 +196164 +1778868 +1394993 +752332 +689645 +752414 +722614 +1778852 +722594 +920164 +2486381 +1554760 +2486409 +1692637 +2016974 +741609 +530736 +752384 +1399097 +1674866 +1554754 +530715 +752334 +1868160 +722597 +1133233 +1327432 +1217167 +1868158 +2000493 +752358 +752418 +1500173 +2754880 +403809 +1382344 +722617 +2486420 +1988814 +2486393 +2486376 +2586880 +2486372 +1392123 +689656 +2016967 +410992 +1394985 +1800639 +651276 +1273699 +1327450 +792902 +410981 +410995 +1692631 +1674857 +689655 +2022909 +1674862 +2754837 +2747206 +1138579 +2017014 +2486433 +2438801 +1399115 +2022951 +2017013 +87551 +530757 +722621 +219735 +530739 +2004927 +1387789 +2017054 +689694 +749325 +1387781 +1138586 +2789213 +2022983 +1184879 +1800676 +1078497 +962441 +2486518 +689710 +2789188 +722619 +2486475 +1382381 +1778891 +2022984 +2022947 +447834 +2486493 +87544 +741629 +1162292 +1162290 +689705 +1150006 +530768 +722633 +2789222 +1674877 +749341 +530744 +2017018 +741621 +1399107 +2022963 +2789185 +741623 +2486468 +962433 +2486452 +2017017 +2022913 +1399111 +1149998 +87549 +741619 +403829 +1327468 +1217181 +410997 +1399119 +1382374 +2022946 +2486442 +2486427 +1395032 +962453 +2017033 +1387774 +2022923 +1327467 +962450 +1217180 +689680 +2486444 +2004916 +2855972 +87546 +2022965 +1253476 +1395021 +749322 +749326 +1800671 +1150009 +1800661 +251201 +752456 +2789180 +1149995 +2017035 +1800683 +792922 +403814 +962448 +2789183 +2486466 +2017095 +530806 +2017076 +962470 +530822 +2022999 +1387796 +2710125 +530829 +792931 +1150019 +920190 +1382404 +749354 +2754881 +741641 +87563 +396821 +1868190 +1273710 +722638 +2743014 +722640 +343953 +1975289 +2017102 +1975291 +2022994 +1399136 +1975286 +2438805 +1382391 +530839 +530824 +2747226 +1111776 +1387791 +1387808 +2754892 +1253480 +792932 +1217190 +1078506 +1800697 +1868193 +196170 +752461 +962473 +1066392 +1353405 +2017098 +1778905 +2747218 +2754882 +2000506 +2486524 +1800706 +1150028 +2017109 +1327490 +2699529 +1868198 +2426145 +1392129 +722647 +2486542 +87556 +1778911 +749349 +1868192 +2747225 +1273711 +1353411 +1327486 +2000503 +2017070 +2736113 +1078502 +530841 +2328020 +219738 +1066383 +2747227 +1500176 +2017144 +2486575 +2023029 +753642 +1162304 +1778941 +744120 +1375533 +2759970 +753639 +869980 +1816362 +1366200 +1389996 +942110 +491643 +1366220 +2728167 +1730551 +753615 +2747261 +1353420 +2719347 +2754909 +1396873 +614727 +792935 +2086921 +1800737 +1382425 +1554835 +1242849 +869961 +2017221 +2328026 +2719349 +2426152 +2648423 +614753 +2747243 +1396883 +2586904 +614745 +1387844 +753634 +752473 +1471695 +1389993 +752472 +239445 +2017205 +530912 +1387827 +340274 +614725 +2017112 +1005592 +292134 +53319 +753591 +753622 +2023054 +1327500 +155694 +2736135 +1253485 +2710136 +2754908 +1800733 +1273718 +689775 +1382419 +2754898 +1800775 +2759939 +614733 +2728176 +1960787 +1816340 +407408 +2017218 +614738 +1816385 +614623 +2743062 +1353436 +614734 +155706 +1150045 +2017213 +1800736 +1150042 +2263041 +2427873 +1766839 +1385921 +2731255 +1059733 +1387864 +2017230 +1375557 +2023066 +1028255 +2017140 +713461 +2728166 +1273716 +2023109 +614750 +1387839 +1975310 +1917163 +752467 +1087953 +1327520 +2017152 +2438811 +530919 +2023068 +1554856 +1903106 +1353438 +1382451 +1382423 +1385920 +1074322 +1762667 +2743018 +1816336 +1138593 +2017173 +1375559 +340273 +2754937 +2486553 +239439 +1628534 +1395098 +1401093 +2486597 +2733706 +2759934 +376764 +1059723 +2759966 +2165797 +1395093 +2731256 +753625 +614718 +1816337 +614649 +2759968 +1242840 +2754903 +1395068 +2023086 +1353430 +2486612 +2023014 +1389998 +689737 +753603 +731902 +1628545 +2754894 +2736128 +1868209 +1401100 +1800718 +1395076 +2738366 +651296 +2000521 +1366209 +1554825 +1399144 +2023031 +869969 +2514399 +2165796 +1366210 +1387825 +2017179 +1382427 +2352534 +1665272 +2710152 +155703 +614711 +2165773 +2017115 +1217196 +2023069 +667794 +2486599 +1387873 +1816357 +155700 +2017123 +2017223 +753636 +942100 +2017188 +1401094 +2514390 +1800755 +1628548 +1311416 +2263023 +1816387 +530888 +614705 +713464 +1184891 +1005586 +1143151 +2739858 +1387857 +1059736 +2426149 +1005608 +2789242 +1005600 +1168632 +1382411 +2427871 +1960785 +2438813 +614714 +744116 +1273720 +614687 +1387817 +1396860 +1800772 +272402 +1366201 +2738382 +2743044 +1155689 +272393 +1628566 +2023107 +2738357 +87571 +2328028 +155712 +1387855 +713414 +1066395 +962490 +2710129 +1628564 +2328033 +753588 +722693 +1382447 +2017193 +614730 +1554849 +741646 +869956 +2710137 +614663 +530890 +2165789 +1366192 +2023103 +2017170 +1554846 +1401102 +1005597 +530861 +1327497 +1382414 +1353431 +2444403 +1988827 +2739853 +2738381 +1554837 +1399150 +1273725 +1155693 +2728169 +2721906 +2721901 +2165764 +2648425 +1168605 +2017183 +530893 +2789251 +2789250 +2023079 +1375532 +2023071 +1389995 +2731264 +920196 +1387868 +2486551 +2691961 +614767 +1387832 +2728161 +2000512 +2733714 +155696 +753584 +1554845 +2017155 +530866 +239437 +1917165 +2023083 +530900 +239433 +667780 +689765 +2743035 +614744 +1168606 +1816375 +2000520 +1401079 +1903105 +2586912 +1327516 +752481 +2486618 +2486582 +2743056 +1428014 +2721902 +738182 +2754899 +1396852 +1395067 +962554 +1382480 +1375577 +1375574 +741666 +1066425 +2486708 +411030 +2017317 +2017315 +1382457 +1382459 +2165802 +869995 +1375582 +962541 +155755 +1327552 +2855975 +2789374 +870015 +2486719 +942118 +920234 +962551 +2514404 +667813 +722704 +920237 +2000554 +1975367 +752492 +1951114 +1845960 +2754942 +2789386 +1985146 +2486717 +722757 +447849 +614855 +2789417 +731922 +1327532 +667811 +2299995 +1387908 +1692680 +1382487 +870014 +1674917 +2263048 +2789410 +689801 +651326 +2586924 +614890 +689799 +1074342 +1327560 +155766 +2789392 +869996 +962530 +1382484 +614838 +962519 +2023131 +1066420 +1155698 +403857 +651322 +2017288 +2514407 +2486661 +651307 +614878 +2017249 +1975361 +667814 +722727 +614836 +272413 +530950 +1387949 +651317 +1382477 +1985148 +2299996 +1353503 +2789325 +1704813 +2789411 +2017239 +87581 +614768 +2691962 +1868239 +2486674 +920243 +2017302 +1387946 +219752 +2789424 +2023146 +1353507 +2586918 +1150057 +920229 +753653 +2017238 +2426162 +614847 +2789308 +1387967 +1387925 +1662659 +2017243 +962532 +2486672 +2426160 +411023 +2486743 +731930 +2789373 +239453 +1184897 +2486664 +614826 +722741 +2165820 +1293508 +1975317 +2789321 +1005623 +1868243 +1975357 +1387892 +792959 +2165824 +1975375 +1628586 +14353 +1975384 +1382453 +1382452 +1327550 +491648 +1375592 +1387940 +920209 +1692682 +869989 +530957 +741663 +1327527 +689804 +2328040 +1327529 +2486730 +1066432 +1066423 +2514409 +1273734 +792950 +962555 +1353464 +614805 +2387453 +2023117 +2789405 +1217208 +1066434 +736482 +942119 +1138602 +1353444 +2855989 +614865 +689780 +1125103 +1674920 +2023134 +2486713 +2017294 +2486756 +2486705 +1382458 +1778962 +2004980 +1028256 +667817 +2017269 +1674919 +530967 +2648436 +1375597 +2000547 +2648441 +1005642 +2855980 +2438837 +2426158 +2387454 +1366229 +752498 +1382483 +722747 +614871 +614769 +1005635 +920231 +2004991 +1674912 +2486757 +2747267 +1150055 +2165828 +2789271 +2486681 +1692671 +155745 +920230 +2000550 +2789284 +1353491 +614784 +2789409 +870005 +2023142 +2789261 +155740 +530938 +2789358 +2789356 +741662 +2789324 +1387963 +651316 +1816392 +744123 +749389 +2000557 +722702 +2586913 +411026 +1903120 +407409 +752506 +962546 +530997 +530978 +1988846 +2017241 +1975339 +869994 +962516 +2789404 +1800798 +87579 +741657 +752503 +1988841 +531013 +1730553 +2586917 +2759977 +2736136 +722752 +2017291 +1005644 +722740 +2855982 +1975349 +2165851 +722706 +1375578 +87582 +2165814 +1366224 +531050 +2005043 +1005647 +1399171 +87592 +1975432 +752545 +1554943 +2789447 +2486766 +752568 +1554921 +2023177 +1388001 +1399169 +752547 +2789449 +2023157 +1066454 +689841 +531056 +531044 +1988866 +2023181 +531040 +2165871 +722773 +1387991 +920265 +1293513 +87600 +2023160 +2328059 +651366 +667828 +1217217 +2023162 +2165873 +1395127 +752542 +1917179 +1066451 +752553 +1554940 +1327607 +689834 +1387985 +2387458 +1382493 +1778977 +1868258 +2328061 +689823 +1831974 +962594 +1800805 +1428025 +920266 +2426164 +2005016 +689826 +752565 +1988861 +1674931 +531082 +1778975 +962590 +1388021 +1388012 +722759 +1554926 +87587 +651347 +14356 +2165857 +2165886 +1500198 +962588 +752531 +1253487 +962569 +1327618 +2721916 +752530 +1800821 +1674932 +722792 +2486763 +1399187 +87597 +1868255 +2165885 +1730560 +1150080 +689832 +792993 +531074 +752517 +689818 +792990 +1388016 +1273745 +2486776 +87604 +2165877 +1353527 +2486787 +2648459 +1353524 +2648452 +1917182 +2328070 +752527 +689816 +1388004 +2486794 +920251 +531090 +1975427 +2023171 +1327590 +752522 +1975395 +1273750 +1382502 +2300023 +2017365 +1150091 +962606 +2486826 +1800839 +155778 +753709 +1692708 +738195 +2165902 +2000575 +2789477 +1988867 +416464 +752582 +1399197 +2000573 +793001 +753694 +962611 +1138609 +1401136 +331035 +749425 +1428036 +1800842 +744130 +531120 +753771 +2728180 +2300033 +1353583 +1778987 +1778988 +1353570 +713479 +651377 +531156 +1674943 +1353558 +1488034 +741674 +1005651 +2486810 +1327634 +1658256 +1353574 +531149 +713478 +531151 +752571 +1917187 +2514423 +753746 +753753 +2648460 +1800848 +2486849 +2648461 +739886 +753754 +1066462 +1401130 +1382503 +1201671 +2514420 +1366255 +2165903 +531136 +1816395 +2486811 +1903124 +2328079 +219761 +1401134 +531135 +752577 +2486823 +614904 +1242864 +1375606 +531155 +2000570 +1366253 +753767 +1366257 +2514417 +1388037 +753690 +1401120 +1845962 +1816406 +1382498 +651371 +1293514 +752598 +689845 +1800840 +2486864 +753716 +2486870 +1868259 +2000566 +1066472 +2165915 +1138613 +531166 +1975441 +1778996 +531183 +1917188 +2486899 +335278 +1217290 +962628 +2648471 +327700 +1800882 +1917201 +531187 +1692713 +403869 +219762 +903610 +1150105 +2486941 +531179 +1217287 +920288 +447864 +219778 +447854 +2486954 +1399205 +920287 +2486923 +1800865 +793006 +219782 +962621 +2486915 +1800884 +1217270 +1217267 +1162316 +531175 +1066464 +447860 +196187 +14383 +1868289 +87627 +1779000 +1500222 +428646 +2486881 +327705 +1554972 +531184 +1975442 +365299 +1217295 +2486890 +2486948 +219764 +1917203 +738201 +1217273 +2648489 +2731273 +1138614 +2586943 +1217281 +1162319 +920283 +1500220 +14370 +411068 +2486952 +298815 +1155710 +14386 +466047 +1242901 +407430 +2514435 +87647 +1125105 +2444415 +2586949 +942134 +416480 +207650 +348331 +1217299 +411083 +155782 +376772 +1784614 +962637 +1868304 +2427882 +1242880 +491656 +531198 +1936823 +422958 +422929 +870031 +1155711 +407425 +2352541 +1784616 +239461 +1784626 +1816420 +2427884 +422915 +1816417 +422908 +1653666 +920307 +422922 +466027 +1779020 +390215 +396826 +793010 +422933 +14389 +1059758 +1201693 +942148 +1784613 +422919 +1960802 +1779026 +422957 +1868308 +1903154 +340287 +1242902 +753786 +2486963 +1005667 +1784620 +422898 +491663 +531196 +793012 +1242913 +407419 +196192 +53346 +1683271 +1134981 +155791 +722847 +2743086 +340284 +1500231 +14385 +713483 +1500227 +376769 +14393 +1500230 +759582 +348328 +903616 +422894 +962630 +491664 +403889 +1201679 +1242898 +741691 +348329 +403885 +422955 +1396909 +920312 +292136 +1155712 +1753683 +1488037 +407414 +1401137 +466024 +196190 +422897 +1217296 +447880 +1078510 +1059762 +1555030 +403924 +903620 +2387474 +2868977 +1683277 +1055818 +1800910 +335293 +614930 +942156 +2165922 +1500238 +920321 +447875 +2039631 +1184935 +2868978 +2165933 +1996574 +1005686 +753798 +416491 +1150136 +2063548 +1674982 +713490 +2263056 +962656 +689884 +1779041 +1133242 +155805 +2300046 +403922 +1820106 +1500239 +1628620 +741697 +1150146 +1066489 +403903 +331046 +614936 +738204 +920323 +2487010 +738207 +2300048 +2486984 +962655 +335295 +365306 +614946 +1500240 +14396 +731942 +327716 +1769106 +2165923 +942155 +962654 +1820109 +722849 +1730578 +2486980 +1555060 +2039618 +411093 +614955 +2000577 +1779030 +2039620 +793020 +2534715 +1555037 +1500234 +447874 +2487004 +327715 +1005685 +962664 +1055819 +2648497 +614935 +155806 +1662672 +53364 +920322 +962651 +2487000 +331055 +1074386 +1263311 +1059792 +1683290 +1078516 +2625713 +531211 +1175879 +1005761 +1168751 +1936862 +423024 +1143186 +359343 +53379 +2487015 +942178 +2514460 +1242942 +436416 +1845973 +1769112 +1816535 +1471712 +2514478 +53372 +239477 +1162345 +2789524 +870079 +423029 +1471708 +1005773 +155851 +1125115 +614959 +2444530 +1816511 +1816481 +1816500 +53393 +272444 +423033 +466072 +1084483 +2625690 +2625659 +1868342 +407437 +1816495 +436431 +423000 +1005755 +1816471 +2444506 +1143181 +436378 +920353 +155850 +1059780 +466102 +713497 +2444505 +1784640 +1084451 +2625670 +2789519 +942161 +1683287 +1903167 +491692 +1831991 +340317 +2625657 +1816531 +53411 +1409402 +1201700 +155814 +1005778 +155843 +1005787 +2487022 +1800934 +313513 +1242951 +1903170 +962668 +340318 +359344 +1175881 +155819 +1005727 +962692 +2487029 +2426185 +1171855 +1831992 +428656 +870057 +2444512 +1628639 +1059778 +942174 +1175884 +1242935 +2586975 +196204 +1103869 +920342 +376795 +2586999 +1936855 +942186 +1903160 +1800945 +1628627 +348342 +1087955 +2444463 +920345 +239512 +1816484 +1168737 +2789501 +1155749 +491697 +2625682 +53391 +1784641 +1242947 +2444522 +768725 +1903175 +1628629 +1155741 +340315 +1051809 +1409397 +1175874 +331054 +962697 +1683291 +2648499 +2586971 +1087958 +416499 +1903162 +411104 +422998 +53387 +1201715 +1074370 +423030 +1936828 +1005694 +1816454 +1683282 +2444492 +1201723 +1201698 +1263294 +942187 +2625671 +1005774 +1168698 +1730581 +1201726 +340327 +422980 +423027 +436426 +1103877 +1753695 +2534719 +1074375 +239488 +423036 +207667 +1059776 +219798 +1800931 +422978 +2827650 +1242971 +1816520 +1059785 +1263318 +53416 +793025 +1242966 +2438883 +2586994 +1903166 +2514471 +2487035 +466088 +155834 +2444521 +239504 +1175869 +1628634 +1707814 +1816476 +331056 +870042 +1005788 +2625705 +2438873 +1168705 +376792 +2625694 +1753688 +436388 +2514474 +436409 +1707813 +942195 +376784 +1769110 +196207 +713500 +1779069 +689901 +1217334 +1868352 +1399211 +2487044 +239540 +1555100 +2438894 +2587028 +689893 +1917242 +1253543 +2438898 +2587012 +689892 +155871 +466123 +1084499 +53427 +1800989 +1868373 +87683 +2587026 +1800955 +196219 +403947 +239522 +313520 +219804 +1628656 +2165948 +531214 +1162354 +1217332 +239538 +1831996 +1184959 +207701 +1779091 +793045 +14412 +2487085 +531225 +2487075 +1800946 +1801004 +87662 +239519 +2648510 +1800979 +2438889 +1704823 +1868379 +531218 +1692743 +53429 +1084487 +1868368 +1253528 +1005799 +2438888 +1138641 +1800988 +1917228 +1800970 +1917241 +1753696 +2587022 +2587014 +196211 +239525 +2438893 +251249 +376802 +1217327 +1217361 +196226 +1800949 +1162356 +1555099 +403946 +1242980 +1800966 +1162349 +722851 +942196 +1917243 +2165984 +1868399 +207699 +1800947 +1327669 +1555106 +359356 +1628647 +2648522 +1779083 +1766860 +1059803 +1868386 +285505 +1217364 +1779079 +2023209 +1868369 +1936867 +531221 +1066505 +741702 +1868384 +2587011 +1555121 +1779074 +1832000 +2487103 +1868397 +2417247 +1150173 +2017378 +1628659 +2487095 +87661 +1150160 +1868382 +1184957 +1217330 +2165979 +2487087 +1150176 +2534720 +1066508 +1779054 +2438886 +1704824 +155861 +1084494 +920371 +2587019 +1868346 +1675005 +447900 +1217338 +1084486 +1555133 +1084506 +1242987 +1730591 +1555134 +384729 +1675012 +239547 +1730592 +2648531 +531227 +384730 +411118 +1184970 +1263320 +2681537 +1730590 +2165990 +466131 +1628666 +155898 +1917266 +313523 +2352543 +1868413 +1820111 +744138 +272465 +239548 +14418 +2487126 +1078558 +1253551 +1628662 +1084503 +2165991 +1327673 +155903 +272461 +403958 +1917256 +14414 +1162369 +1066514 +920377 +196234 +1401141 +1242999 +272460 +2487152 +1917261 +753809 +2263066 +1217370 +196233 +2587043 +1500257 +2487135 +2426189 +1832004 +1253558 +2514488 +411117 +1405687 +1253556 +87692 +1253573 +352249 +2587162 +251321 +2648576 +376829 +2487186 +1084527 +466148 +156075 +2587073 +1917273 +1801039 +1217413 +2104410 +1005836 +1555246 +1078569 +2487193 +793070 +87763 +2387516 +352267 +196249 +1184992 +251315 +352310 +2587103 +1005890 +2648639 +1162377 +272482 +155970 +1555274 +1704852 +962820 +423103 +352260 +962849 +2534747 +1005829 +390233 +53528 +1816596 +2514500 +1243019 +2587097 +962767 +251304 +2534749 +870139 +352250 +2166001 +531259 +1845980 +870163 +390227 +423222 +2023214 +1471727 +793100 +423124 +423058 +376808 +2681544 +2487206 +1243006 +1692782 +331073 +2352552 +14446 +1917301 +2648602 +1628688 +2166128 +614992 +2789530 +1753714 +2587051 +1243018 +272548 +920402 +403965 +155995 +2086944 +53544 +1753701 +531283 +1428087 +2587083 +1555321 +1704847 +352244 +962743 +1263334 +423060 +689913 +2681538 +2648555 +1730627 +156105 +1801099 +1779101 +2587130 +870105 +1168812 +1628723 +1084521 +1628722 +689923 +962816 +239594 +384738 +1005859 +1074404 +2487219 +1936876 +2039640 +491722 +2413885 +352222 +2387528 +531246 +689912 +2300063 +497841 +962751 +1936883 +1917354 +156035 +1066523 +2587117 +298826 +2789529 +313542 +390228 +1005847 +2426196 +1327687 +239632 +447935 +614988 +365331 +731949 +1555190 +196279 +53462 +53526 +272553 +497867 +335324 +2166127 +722864 +1692784 +1184988 +1801076 +1730596 +1868443 +1903217 +1484867 +793091 +348347 +1816590 +1217397 +2166047 +2648585 +615028 +156101 +615006 +2166011 +920386 +2487272 +313556 +1917348 +2166191 +2263091 +1243043 +2360902 +615003 +423138 +870116 +466135 +2166108 +962841 +196273 +920403 +1059808 +497895 +962808 +436449 +1171859 +207718 +962772 +614987 +2681545 +352242 +1500260 +1868432 +2534748 +962786 +1555250 +1555292 +1428082 +251288 +1628738 +1766865 +156112 +2587100 +1500271 +2165992 +491719 +272502 +298829 +423164 +2086952 +2387490 +14451 +870177 +2487257 +1253603 +2648553 +2587111 +313528 +962790 +1243011 +155988 +354717 +2166116 +870137 +251330 +1903238 +423128 +155987 +1243020 +942212 +2166113 +2681549 +1555324 +1555313 +2039641 +1975452 +1753715 +1868430 +285514 +903633 +793116 +2587151 +920390 +1555281 +1243017 +156080 +376861 +156067 +1005916 +1201745 +1555166 +87760 +155985 +2534724 +313571 +2328120 +1868458 +1555248 +531268 +1917269 +423137 +272497 +870183 +2387532 +87704 +53560 +2166088 +2263087 +491723 +423080 +1784649 +1917279 +155993 +1675043 +87779 +14436 +689938 +1555226 +348352 +2166195 +1628719 +87775 +2587177 +2039650 +53468 +793089 +156061 +423195 +2487203 +376823 +1628732 +722857 +531287 +1996575 +2587166 +1555306 +1520530 +962842 +2166048 +2534726 +219845 +1243027 +53522 +1628718 +14445 +447924 +1040397 +2587070 +2328160 +2275754 +1555282 +2417251 +53473 +1704834 +1555261 +1936894 +2166109 +1801073 +1628695 +466158 +155929 +1868423 +423118 +2789578 +2487233 +14435 +2587147 +531267 +2000578 +1555227 +251295 +2352557 +1028267 +1675033 +793111 +2166111 +466151 +272550 +1555302 +2487204 +1005870 +2039649 +352297 +1917347 +2487266 +1683303 +1168792 +156017 +313541 +1704850 +251308 +423117 +2086957 +251347 +239577 +2166018 +2352545 +497852 +251342 +2789572 +1263362 +272470 +352287 +1628683 +1175888 +870142 +2086958 +1555186 +239592 +2166103 +272493 +1762677 +962798 +1005855 +2514505 +870190 +423228 +2648648 +239556 +1555150 +1555225 +2487191 +1820114 +376822 +1712172 +2263088 +352259 +87701 +156104 +1263338 +2300079 +2487220 +352220 +2534742 +2328148 +531262 +2789539 +156060 +497871 +2684904 +292150 +614990 +155944 +207715 +348351 +1628737 +2534739 +219830 +1263363 +2387510 +376860 +920388 +376857 +1730600 +155984 +1555236 +1175886 +1704836 +87734 +1243051 +1488047 +352231 +1375613 +2648638 +207734 +1555340 +1628715 +352209 +2514503 +2166003 +272521 +1005864 +352188 +2681548 +1111809 +1263349 +272476 +1005854 +155941 +1868447 +1005873 +2300060 +2166182 +2166008 +1138653 +423248 +793093 +2166149 +2104403 +327739 +352303 +447915 +1217416 +1917353 +2166179 +1243015 +2387489 +156124 +870168 +2514504 +768741 +2681546 +1917334 +352318 +2487207 +793059 +1243012 +793071 +156005 +1832007 +155996 +352173 +1868464 +2487174 +2438907 +2387540 +1092635 +722859 +352185 +239608 +962792 +2587165 +219824 +352214 +942218 +1868486 +920380 +1005857 +1078585 +908218 +478805 +466155 +1059807 +239589 +2166022 +447928 +1762678 +1868489 +1428090 +239570 +903642 +920443 +962877 +1253613 +1692807 +2827751 +689953 +531312 +343983 +2790330 +87825 +2790233 +2789675 +2790485 +196288 +531295 +1868499 +2827700 +2263117 +2790446 +2789624 +651398 +2789940 +2789755 +1675047 +2827744 +2790204 +1162391 +2789715 +196304 +2827794 +2790538 +2789991 +793165 +2790244 +2790059 +962924 +2166299 +2789730 +2790274 +1555402 +2789773 +2487311 +423256 +2789806 +2487337 +962916 +2438926 +2039672 +1555417 +2263119 +2827655 +2789756 +1555445 +2827754 +2827798 +2328192 +2790104 +2387545 +2827745 +2789813 +2790368 +2790411 +2790115 +1832019 +1555358 +962950 +2328191 +2789923 +2789686 +87816 +1066537 +1555461 +1801105 +196303 +962883 +2086964 +2300099 +1428102 +1484869 +2790176 +2790344 +2827761 +2166235 +1005928 +335330 +2790433 +2789845 +1217423 +1628749 +1555382 +2827727 +1628745 +2789834 +2789774 +870226 +2827661 +2487407 +2790096 +2789996 +2166289 +1555364 +2166280 +2790471 +156149 +2039659 +156136 +2790069 +2789867 +2387548 +903652 +531306 +2790439 +423263 +2487320 +2790189 +2789946 +2328230 +2790018 +1484875 +1471731 +2789870 +2789943 +2789836 +2487413 +1484873 +2790099 +2166246 +1555437 +2438930 +2790419 +793193 +87828 +793140 +2789710 +2790029 +1801107 +251376 +2790017 +962903 +2790287 +2790261 +272565 +2790281 +2487360 +156134 +335333 +239634 +2487392 +2487412 +2827820 +2387551 +1405715 +920425 +1150206 +2790334 +793139 +2487293 +1555359 +2789610 +2790170 +1917378 +2789746 +1555434 +2648681 +1005922 +1692816 +2300087 +2789897 +793204 +156153 +1555381 +1555422 +962897 +2487351 +2790327 +903646 +2790121 +903653 +920428 +2827790 +2789766 +2789695 +2166240 +531317 +2789694 +1692825 +2166263 +2789782 +2789646 +2789717 +2790285 +2789817 +2827665 +920424 +497924 +962889 +411134 +1801115 +1428112 +2283439 +2827811 +2514513 +2790358 +2790057 +793151 +2789860 +2790067 +2790372 +1555466 +1868495 +2789951 +2487319 +87814 +2789854 +1066528 +1555380 +689946 +2789692 +2300091 +2487400 +2790488 +2827723 +1428118 +2789922 +2166254 +2086966 +335331 +2790255 +2166220 +87791 +2039657 +2789697 +2587186 +2789663 +1555376 +962945 +920415 +2790249 +962900 +2790288 +2166310 +2790289 +384742 +2789777 +2789983 +1555416 +2790177 +2789812 +1555448 +87810 +1005925 +1555487 +219865 +1692834 +1555367 +2790371 +1051817 +2790239 +2827805 +1111813 +2789635 +2487367 +2789976 +962912 +1555457 +1428116 +793181 +497918 +14462 +2789595 +2827802 +2790468 +2487406 +962907 +2789840 +2360903 +87836 +1692801 +411133 +962880 +2438923 +207746 +2789970 +1428109 +2166285 +207747 +411126 +1868496 +2328237 +1692835 +2790321 +1675058 +2789591 +2790052 +1273778 +196294 +251377 +2790008 +2790463 +2789853 +759606 +2790367 +2487414 +1327696 +2166331 +531331 +2000581 +531324 +689958 +2790563 +2263127 +2166399 +793230 +87856 +14476 +962988 +14489 +2699542 +2283449 +1353603 +2328250 +2017384 +87857 +14496 +1975461 +1917383 +793212 +2328267 +1801153 +1675064 +962978 +1555516 +2086985 +2005064 +793240 +14488 +1428145 +2587207 +2790571 +1628764 +2166316 +1005935 +1801156 +1555508 +1273787 +531325 +87855 +2005067 +2487450 +2166335 +313573 +689962 +793219 +2426203 +2328289 +1779116 +1428160 +531345 +1005938 +196310 +14512 +2587214 +2017393 +2328245 +1273792 +1692872 +1555522 +2587225 +2754965 +2283451 +14493 +2710174 +2328291 +1868503 +219871 +1273790 +1692847 +1005940 +1868506 +219877 +1370717 +793260 +942229 +1327708 +2328259 +2438940 +531327 +2166373 +1327709 +219875 +2387558 +1692857 +1917381 +793255 +87841 +2166378 +2534765 +2487428 +793267 +2166452 +2300138 +2487501 +903663 +1683316 +1500289 +2514515 +156222 +1382521 +53602 +1185025 +2827838 +1201765 +2300122 +1343864 +53589 +343987 +207757 +2710181 +689964 +1555621 +1500300 +531366 +942246 +2279811 +87877 +2166462 +1066548 +1683322 +615061 +2166517 +1293529 +53687 +2387568 +2444550 +2328299 +1801162 +1628832 +942235 +2328298 +615080 +962998 +942255 +53642 +2263151 +920478 +1868553 +14542 +1138681 +156255 +2166519 +1675096 +2738408 +1868528 +689972 +1555630 +87900 +1868543 +1500302 +2328311 +1243061 +2827837 +920481 +53585 +2023221 +156244 +1006002 +1555639 +870336 +1125149 +1555627 +1006011 +2328309 +1628810 +2166434 +1055848 +1074424 +1779140 +1555533 +53666 +2487511 +156230 +2444546 +1185018 +196313 +1704875 +1555575 +156190 +1133256 +1555637 +2587242 +340371 +1675090 +2263135 +2023222 +2328316 +2387559 +2166491 +14523 +713531 +14540 +2279802 +196321 +1155768 +156213 +1471741 +942265 +2166484 +87881 +1628790 +1074415 +1555551 +1816602 +1155763 +2166523 +2387566 +53641 +1555614 +942270 +1555611 +1555568 +2166509 +870261 +1520548 +1125150 +2487552 +1005962 +1555534 +1555643 +713538 +1327722 +396848 +2166525 +1125151 +2328296 +768762 +2648702 +2263161 +1201757 +156204 +1353605 +1150210 +870246 +272579 +53579 +2487504 +2648707 +2426220 +2731285 +2587237 +1555589 +963019 +793294 +1375616 +2733723 +87864 +1753726 +920486 +962995 +2487533 +1628826 +1816606 +1555596 +1168824 +340376 +870332 +1692910 +531386 +2328305 +156193 +156176 +1555607 +1395161 +1484880 +1488049 +1074425 +1555655 +1816616 +1801174 +1555538 +2166524 +2166440 +1005969 +1555620 +2263155 +1675094 +285526 +2387565 +942236 +793313 +2648708 +615091 +14552 +239663 +1074440 +1471734 +1066552 +1143205 +2487497 +87892 +903660 +1779156 +870270 +1555567 +219885 +2514519 +1243055 +2166506 +1779172 +1555586 +2705282 +1500290 +1243070 +920494 +2166478 +2166458 +2487560 +1675095 +1868558 +1555557 +343988 +14530 +239683 +2017398 +1555592 +272583 +1074427 +1801192 +1388053 +2104428 +2738414 +340366 +1273802 +920487 +156261 +1395158 +1675078 +870319 +793274 +2487517 +1665291 +2279805 +920471 +2587232 +1801183 +2487498 +2166439 +1500297 +1628829 +1138661 +2587235 +531374 +1779160 +2166474 +1484878 +1005957 +870260 +942231 +2514516 +1006057 +1134989 +2263218 +1185038 +2514539 +1143211 +1917401 +1243077 +1500312 +239696 +53712 +239700 +2648722 +340404 +1168832 +1628860 +1816621 +156304 +2514535 +53751 +340398 +207800 +1903255 +2487580 +491734 +2166583 +870405 +1816638 +53714 +340386 +207803 +2263187 +1779186 +447939 +1555702 +1520560 +428679 +2328341 +2426229 +870436 +2514537 +1801208 +2039690 +207795 +1903266 +2263174 +2648716 +2166563 +1628895 +1555691 +870384 +2352606 +53725 +1185040 +2263207 +1936921 +376880 +239688 +359386 +531406 +793321 +2691969 +1692926 +359389 +2487563 +2487593 +1125158 +53764 +156272 +1628936 +2263194 +2487569 +239709 +1868580 +1263368 +2300144 +2263221 +1555725 +359390 +2487607 +156349 +2648723 +1816620 +2263186 +870362 +272603 +390259 +1692931 +53727 +156273 +1555698 +156299 +2487571 +1175899 +1343868 +908229 +1628867 +2534778 +1903256 +963052 +1555665 +870366 +2534782 +2300143 +436474 +1816639 +1762679 +1816629 +1628900 +1125164 +53715 +1006016 +1327729 +1006080 +1471756 +1134991 +920514 +2438967 +1006052 +1903260 +1133261 +1628877 +2263185 +156287 +2487577 +793327 +963046 +207807 +365341 +1168843 +1683330 +689978 +870446 +1405729 +2681559 +1692925 +2534780 +1500313 +156302 +1948129 +1555677 +1753728 +1628882 +2063553 +2069458 +1692930 +1217445 +2444561 +2039696 +1628883 +2534783 +2263183 +1428215 +1428214 +53723 +2426226 +2514546 +2514543 +1692928 +1175900 +1217444 +53739 +2487567 +1059845 +340405 +239692 +1185044 +2352615 +196340 +1006062 +1730658 +2072002 +156323 +963061 +1868577 +1832034 +14555 +2487589 +2426227 +2487610 +531407 +1555675 +207798 +1628908 +870404 +335343 +87901 +1769121 +2487636 +466203 +1868624 +447942 +1150243 +219905 +1675125 +340410 +870462 +1868594 +416514 +2104432 +2514563 +2587281 +2444563 +1217460 +963097 +407461 +870473 +2487650 +239721 +156361 +87925 +491737 +531420 +239711 +942313 +331098 +2648737 +2514560 +1555742 +2514568 +1074480 +340408 +466193 +1111827 +1628946 +1868605 +53810 +1628942 +870475 +2587260 +251419 +942312 +870481 +344003 +1665296 +447960 +1784672 +2487647 +466210 +466197 +1375622 +942314 +344007 +1243098 +466192 +1832042 +2517396 +741713 +1055858 +340406 +1171869 +348390 +1801239 +2648740 +793364 +713554 +2487637 +963073 +2754970 +1683333 +741711 +2648726 +2514548 +1074473 +1074483 +466201 +2300151 +1138704 +2005075 +331093 +1185071 +53806 +1143217 +1628955 +390264 +53770 +920546 +1903289 +2166635 +2840399 +1555752 +1868599 +1628956 +1500325 +1243124 +1185072 +1155781 +1779218 +963094 +1779211 +1628944 +1066593 +1500330 +466209 +2840407 +436511 +920532 +1006089 +903672 +436499 +1816666 +2587278 +1125170 +1520571 +251418 +1155786 +920547 +1801242 +1662691 +335352 +2000589 +2263224 +376903 +403999 +359395 +963105 +466188 +416515 +2166616 +1555774 +1006102 +1675120 +731955 +272629 +2300153 +2487689 +1628958 +1868625 +1138706 +1185050 +1143218 +1134994 +1074476 +870458 +1692934 +870463 +478810 +1801247 +1903290 +793371 +1217462 +920541 +1201800 +344001 +1059852 +1185052 +53796 +1555750 +1059847 +53774 +2648736 +436494 +403991 +1133271 +1903284 +1143216 +2517399 +1066583 +920530 +207816 +1675113 +2352622 +963082 +1111829 +416517 +1006115 +1658264 +207812 +793358 +403985 +1185065 +1059854 +272626 +335361 +1628991 +2352631 +1059858 +1168860 +1753736 +1006157 +1662695 +466245 +239762 +615148 +870506 +1171873 +870530 +1201809 +1201832 +1143222 +1006122 +942333 +2263265 +404007 +2681571 +870511 +2352639 +396860 +1555802 +2648754 +156428 +390285 +156460 +531437 +1243137 +359402 +53852 +1917424 +1665298 +870535 +870559 +667850 +1903320 +1059862 +1471768 +207840 +2487726 +1074505 +1917416 +768778 +156432 +1006152 +2166657 +1903298 +53844 +1917412 +1555816 +1006189 +436519 +1074504 +2487749 +1006145 +1201811 +1816688 +272655 +1125177 +1753740 +239766 +239764 +53832 +942345 +1500342 +2438990 +1903316 +2514572 +1185085 +1006132 +2166682 +2487745 +2648758 +313594 +1040415 +2625750 +908239 +1555796 +870558 +615168 +272638 +207848 +1801260 +2352641 +1488062 +2648760 +1753753 +1006147 +2681574 +1006127 +1555818 +292185 +1936946 +207829 +1217467 +1168859 +331101 +1006133 +219910 +2487721 +466222 +903677 +1628978 +1175923 +1074488 +1801264 +207838 +53843 +207835 +2487725 +793378 +689992 +14580 +2487719 +2263239 +689993 +1074496 +416522 +1868647 +1471769 +615164 +87940 +1263376 +1028273 +942320 +2263240 +376915 +1243130 +1730681 +2263256 +942337 +335364 +1201815 +1143223 +2625754 +2328379 +404005 +376911 +1185089 +1243154 +2648745 +156450 +2444584 +1784678 +1683341 +1730671 +239748 +942327 +1520583 +1006155 +466242 +1185083 +1665300 +156431 +1006190 +53857 +53845 +1730677 +1903299 +1243147 +1243129 +1074486 +942322 +1201825 +870508 +272652 +1903305 +793376 +2487764 +423285 +1975485 +1784681 +2747288 +1293538 +753836 +251435 +1392167 +2738423 +1692936 +2328386 +1353611 +1375632 +963177 +1555847 +963147 +531448 +1201836 +870584 +2738427 +1388066 +1243166 +963169 +1766887 +1975484 +2487771 +2681575 +2487778 +1868670 +1293537 +1675152 +1801282 +1066623 +1390050 +690013 +2738421 +1066622 +1379213 +1954550 +713579 +1988888 +2017430 +1917428 +156491 +690006 +219917 +667859 +2731291 +272664 +615209 +793391 +963165 +2738434 +156486 +2166687 +2023244 +156498 +251433 +2731289 +1390048 +219914 +752633 +1006205 +722910 +416524 +1401148 +207856 +1168869 +615199 +2166702 +2790613 +753838 +2017424 +963142 +2514594 +1138711 +1629018 +615197 +870592 +2754979 +2005077 +404009 +2438994 +407470 +651408 +1353614 +156497 +2721923 +615182 +1396923 +749467 +156500 +1675155 +87955 +2005088 +423290 +722899 +1217478 +1327757 +1243167 +1074514 +1066626 +753830 +1388060 +2487769 +2328385 +2721924 +739896 +749470 +272666 +1832049 +1801285 +722909 +87946 +1845991 +1395164 +1162400 +1401147 +1401153 +1395165 +1006199 +1401152 +2790699 +1343877 +1629038 +1396944 +2328389 +1273827 +2444590 +2426236 +1006286 +2000606 +1051823 +2017530 +239824 +615246 +1395184 +2743138 +1396935 +14585 +1704902 +53888 +156513 +1985164 +1401177 +722923 +272696 +1385928 +690027 +1396942 +156524 +1675164 +2790756 +239832 +1382534 +404029 +239838 +2426235 +1055866 +1375653 +1143233 +1816737 +2263301 +239831 +1762690 +749482 +2005115 +2427923 +1903335 +2328398 +744162 +1779250 +2514613 +1500349 +313608 +1784684 +531507 +404031 +1006259 +2328392 +1985163 +1366275 +2427913 +156536 +1868677 +1134996 +2263277 +239800 +1327764 +2728215 +1555854 +1006281 +1396956 +741743 +1396950 +1273823 +615229 +2747292 +2790695 +963184 +2790655 +2487821 +156561 +793399 +2743124 +340444 +1059878 +942358 +2010135 +1985161 +1401165 +207862 +2739881 +2790732 +2760008 +615309 +713594 +2743126 +2017438 +2743134 +2166711 +2790739 +2790728 +531472 +207858 +1555863 +2856015 +1392173 +1951128 +2790719 +2743139 +423303 +1868678 +2739891 +2487793 +615303 +239851 +1006282 +2790692 +1779240 +239807 +2487805 +239837 +156504 +1078603 +713633 +335371 +1396947 +1629025 +340451 +1375650 +1375644 +531505 +1243195 +2728194 +615294 +2790726 +744155 +1217484 +2017456 +1006271 +2263309 +2743135 +2263312 +731973 +2487799 +942354 +2790674 +239820 +1273822 +2017484 +1074542 +731977 +1683361 +2017552 +2263296 +2023267 +156517 +2000608 +2790629 +1150272 +2328407 +722914 +491765 +2017488 +2487804 +2790680 +2856024 +713631 +2017489 +713606 +2017523 +1390064 +272673 +1074529 +251445 +531471 +2010134 +447978 +615244 +219922 +753869 +615223 +466263 +239849 +749487 +713634 +741730 +713592 +340455 +2728206 +239817 +1243182 +1784687 +196374 +2514611 +1390055 +615257 +2263305 +2023297 +2743115 +2856026 +2017505 +738233 +2728199 +1396934 +1006248 +340458 +2023304 +1388083 +2010125 +1155814 +1903334 +416527 +407484 +732002 +713604 +1985165 +2728217 +2728204 +491769 +2790669 +1396946 +2010152 +615265 +1273820 +404035 +2743119 +2427916 +1066635 +2790685 +2426243 +1366272 +1399227 +753881 +1395185 +870623 +2417271 +365366 +87974 +2487836 +14603 +1066672 +1801388 +2721931 +1917437 +365367 +1028276 +759640 +14609 +335390 +384764 +497936 +335397 +1150292 +1217529 +963207 +1066682 +1555885 +1917456 +1162413 +53891 +14607 +1917467 +1917464 +1801395 +1217523 +1555870 +1801368 +1150289 +1171875 +2166773 +327789 +1253636 +793433 +793426 +1675176 +2487830 +14611 +920602 +793435 +1111851 +87971 +1066663 +1150284 +2587324 +1801355 +2263316 +1217522 +404051 +963244 +793429 +1801389 +741749 +359407 +2487839 +963200 +14591 +963252 +1253639 +2005127 +1066678 +963219 +1428263 +1217515 +219932 +1066684 +1217526 +2790778 +1066662 +1066659 +1185119 +53895 +1217516 +1388126 +1801360 +2790771 +2328410 +87978 +1801384 +963240 +870624 +2166755 +497940 +1185117 +963213 +920573 +793420 +920576 +1917451 +156568 +298831 +1868682 +2587319 +920597 +1055871 +14610 +2648783 +1500356 +53898 +1801370 +1779259 +963231 +963204 +690044 +428695 +1150279 +963239 +920591 +2166748 +196386 +1555874 +1185113 +207870 +793412 +327795 +447984 +396864 +219928 +365360 +1868719 +1074552 +2747298 +53913 +722935 +1327779 +752658 +2439014 +239862 +1353630 +1801408 +2017588 +1555890 +2743166 +1629063 +1555911 +2017664 +2017574 +2017666 +2705289 +2017609 +416545 +1138739 +531557 +436545 +2023339 +753900 +1343891 +1293555 +1378268 +1903338 +1168904 +753925 +207873 +1960839 +1353622 +1392186 +713641 +1555897 +2760039 +739903 +1382556 +2005150 +1201850 +272706 +2005157 +793445 +1006309 +2743168 +2023326 +1143243 +2710199 +1168926 +870627 +963279 +1766892 +1201854 +2743169 +1816759 +2023340 +1396972 +2017612 +2760044 +1975537 +1629058 +2755017 +1816755 +1201851 +156590 +1941539 +2736177 +752651 +491780 +736508 +2005159 +2487851 +1816752 +1138736 +1150301 +1975512 +2755028 +1143237 +753963 +1832055 +1006294 +615343 +1816760 +2005154 +1555896 +2017579 +2487906 +2487890 +156595 +1390069 +1675181 +1366282 +870636 +615329 +1243214 +2760029 +340465 +1327778 +1150300 +1006298 +1327782 +2010157 +2514631 +870637 +2736182 +1378263 +1816756 +1766898 +1379228 +219955 +1138738 +1392184 +744165 +531559 +752656 +963266 +615314 +1168905 +1217538 +1263382 +1484898 +1845994 +1801403 +1629053 +1273840 +2487861 +2760035 +753923 +1382551 +156583 +768789 +1201848 +2023332 +2755020 +1066690 +1629056 +2487907 +2755026 +1395199 +1903340 +1162423 +753938 +1816757 +2000622 +1185126 +1396969 +1327785 +2444600 +732009 +753903 +272710 +2514636 +1975511 +2023331 +1066699 +1168919 +2300168 +2023325 +1658268 +1996577 +2514624 +738245 +870639 +1555903 +1868715 +2710186 +2017558 +2023356 +2166791 +2427925 +2300170 +615315 +942379 +2760051 +2005151 +870643 +870638 +1392189 +1779267 +2023319 +920622 +1379224 +1816761 +2010154 +2444598 +1243218 +1168898 +2487901 +313611 +2736178 +1779280 +2005147 +1066701 +407494 +2039708 +920605 +251466 +739904 +963295 +219972 +156624 +870651 +1692983 +531572 +2487962 +416569 +53939 +376942 +1868721 +416597 +1868727 +2755034 +1704918 +1006335 +1092654 +1917482 +416592 +53924 +478817 +344031 +1327800 +2587336 +219964 +1801431 +690060 +1629070 +2790858 +2487934 +88005 +313615 +156620 +1917480 +690069 +2487961 +1217553 +870650 +793464 +436552 +466307 +1801432 +2743173 +1066709 +491782 +298834 +2856058 +14636 +1168951 +1730696 +478816 +1662697 +466291 +491795 +1757430 +2790835 +2790848 +1243231 +2868999 +2648813 +1629068 +615355 +793453 +2487912 +1028279 +2790798 +88004 +793449 +251469 +436556 +1006314 +2790826 +1692989 +53918 +416598 +292208 +793465 +376939 +416599 +416564 +1629069 +2166795 +272754 +2039716 +239879 +53937 +292209 +1500363 +2790795 +2790822 +466302 +2487935 +2166810 +491786 +1217544 +1692965 +1500367 +2790844 +1704915 +690065 +292205 +2487958 +1006324 +88016 +1059889 +1471792 +1500365 +1757427 +1343892 +285533 +2166798 +2009515 +963290 +1555933 +219971 +331115 +428706 +759645 +331116 +1675200 +713655 +531605 +1428280 +1766920 +1662719 +870680 +1779311 +196410 +1302754 +920641 +1520604 +1960842 +1500397 +156633 +2087060 +466313 +2488034 +2488019 +1662727 +1555943 +156647 +335409 +1662724 +2087049 +428713 +1311446 +2487973 +239900 +1185160 +870663 +196405 +2487974 +2587351 +1066738 +738250 +690097 +1662702 +1185137 +2439024 +1555972 +722953 +448003 +1382577 +690070 +1675236 +2488062 +2039717 +156677 +2087041 +1392192 +331119 +1832074 +1185152 +1500372 +531617 +1500373 +1500388 +2166840 +2426251 +466319 +156651 +1066744 +615385 +2439018 +53946 +359416 +1046424 +870672 +615369 +220013 +2166834 +942392 +2166856 +615370 +376950 +2387589 +1150331 +870664 +1868758 +88039 +1217581 +1832066 +2087031 +2488030 +272783 +1555974 +1395215 +1471794 +942389 +196438 +690110 +1217587 +416601 +239915 +1150326 +272768 +615378 +1092659 +376953 +713657 +1500383 +272779 +2087055 +448009 +196411 +251481 +272782 +2005170 +396882 +344034 +1138761 +2488032 +1243255 +1092663 +448018 +448020 +272761 +735564 +2439046 +1555953 +713658 +2087058 +1086439 +690078 +220005 +1868754 +2587372 +1555993 +53966 +1868752 +2648821 +313624 +156632 +1500371 +1327809 +1555966 +1868741 +651428 +2587353 +2487995 +2488036 +2087052 +735563 +1683372 +2439021 +1150342 +615362 +2166827 +2166850 +531619 +793472 +1327803 +690099 +615366 +1066731 +2005168 +1138746 +2087054 +2488012 +2487981 +2534796 +1133290 +615359 +416610 +1074582 +1832061 +793479 +920644 +340468 +1712187 +2487984 +1059893 +1066734 +1801439 +348426 +2587342 +1143250 +1555954 +156673 +1555950 +2439043 +2587364 +2087038 +88034 +2488018 +448008 +1327804 +1675212 +1555980 +2017671 +1066725 +251472 +196437 +1766906 +2300172 +196414 +2063555 +1832079 +747956 +2488113 +14666 +1500416 +2488117 +1217615 +920678 +2328415 +2587397 +2488093 +1730729 +2488107 +1868770 +690170 +1388155 +1150362 +1556023 +1868763 +1185198 +1556029 +1217638 +88046 +1111883 +963384 +793502 +2488098 +1868806 +2166875 +448047 +1185175 +448075 +1066749 +1111881 +1801491 +1757434 +963348 +1066766 +1801493 +1399258 +1868812 +14672 +220036 +196440 +1868788 +220030 +14671 +1779323 +2488091 +448034 +531665 +690130 +793498 +448052 +1868782 +793496 +1217600 +448073 +1556027 +1556054 +1138767 +1217610 +1111877 +196441 +448053 +920674 +1662736 +1675254 +1556035 +2488111 +1556021 +1395226 +298841 +963393 +920673 +1395224 +1217629 +1388157 +1111879 +903694 +2328437 +1395227 +1917507 +963326 +1556037 +1217630 +88079 +1382582 +963379 +651437 +1302755 +2488075 +1353643 +1730726 +651439 +1185174 +2587394 +1111899 +1730720 +1111880 +1138765 +1917504 +963398 +1155846 +1832087 +2166864 +963333 +448068 +1801454 +963363 +448045 +1078624 +2587410 +2328441 +448041 +1111878 +1500402 +220035 +1693043 +2488095 +1675262 +448069 +1066768 +1217618 +963337 +963387 +963323 +1066770 +220033 +1353642 +1556045 +690148 +1868789 +1185196 +920671 +531686 +2328425 +1028282 +1868794 +2488109 +2283457 +2328472 +920691 +1185212 +1801535 +2488140 +1556075 +690191 +1217678 +1388163 +531740 +1868845 +220106 +1388161 +1629095 +2488185 +88102 +531788 +2087064 +963424 +1217646 +2328477 +1185214 +1185211 +1801526 +1500432 +1730741 +1903351 +2328469 +2005174 +2488153 +531780 +196455 +1405735 +396890 +14691 +1816782 +1975545 +1556085 +746878 +2488162 +1066799 +416620 +1801530 +713662 +1327837 +793566 +1382597 +1975550 +1868829 +1779365 +88107 +531727 +1801512 +466341 +2387612 +2488159 +2488143 +963441 +1399274 +2587427 +793524 +478843 +793563 +1217644 +690194 +1111922 +2300208 +1006357 +2488142 +1556079 +1801525 +1217683 +1150400 +531802 +2387609 +1801538 +1832113 +2166905 +1766943 +1150406 +1217661 +1556077 +1138775 +1868837 +1556131 +1162436 +220079 +2648842 +1243258 +466337 +531787 +1253664 +1662743 +1273849 +365385 +2488171 +1353660 +531767 +963422 +1092669 +1150381 +1217649 +1150386 +14692 +531733 +1399271 +1006360 +1399267 +2587435 +690215 +1217663 +1217648 +1801508 +920683 +531789 +722982 +1217668 +1868861 +88117 +2387598 +2328446 +365382 +14696 +1675273 +793550 +88101 +1066803 +1353671 +2000631 +1399263 +2023366 +466339 +2488135 +1868867 +1066817 +1779361 +1629094 +793549 +2488173 +1217689 +1066826 +466331 +920693 +903695 +2387600 +1675279 +251483 +2488187 +690209 +531792 +14703 +14689 +1662740 +2587438 +722979 +2488133 +2166914 +466354 +2263326 +1150423 +1402335 +1006372 +1217711 +2012209 +1370737 +531898 +690254 +735588 +384789 +1217697 +220116 +1556143 +1382620 +1801582 +1066832 +615392 +1111940 +2000641 +1353704 +1868873 +1395281 +531886 +963475 +1388173 +722990 +963454 +1917537 +1395270 +1327845 +1399330 +1366286 +1399331 +1766949 +531819 +1353731 +1066837 +497955 +1353705 +531934 +690226 +1395264 +531913 +531914 +2755086 +1388172 +2755093 +1395257 +690240 +416646 +2328492 +1399308 +690222 +1327851 +2710213 +1399292 +2755083 +416656 +365388 +735595 +735594 +1675284 +531925 +1556180 +690270 +2755102 +14708 +1168962 +14706 +2488209 +793580 +1217710 +690230 +531919 +531915 +497952 +690247 +1629098 +651452 +313630 +1217695 +272795 +1388181 +1693069 +2488212 +1868891 +531856 +690228 +2648859 +348430 +1217720 +365389 +2387617 +14707 +2747339 +2488226 +2488204 +735568 +690248 +1327849 +1327855 +747959 +1382603 +1868897 +1066834 +531868 +88137 +1353715 +1801585 +1428311 +1801549 +1395248 +690268 +2023378 +1353755 +416643 +2755071 +1399319 +1556170 +690262 +1556171 +1730745 +723017 +2017693 +384786 +1693087 +2005184 +1327852 +920726 +1353741 +1399280 +1693080 +963459 +1903353 +2731300 +1801568 +963461 +1395262 +2283459 +2755108 +1366287 +1353726 +722995 +690267 +1832119 +1370747 +448113 +1395283 +2488230 +531824 +1730746 +2755087 +1399279 +448121 +920725 +735567 +1353745 +744168 +344060 +1395247 +1693086 +1370732 +384783 +531822 +2023382 +723019 +1801543 +2023397 +1868931 +1382646 +88168 +88196 +1040442 +220147 +239935 +1917547 +735603 +920742 +251497 +1556210 +1801592 +531992 +2017706 +53969 +793616 +2166951 +1327860 +1168967 +466370 +2017703 +2300224 +1327866 +531986 +1150436 +1185247 +1975559 +920732 +746891 +1162450 +1779390 +448145 +690300 +220133 +2488247 +2587474 +2069463 +14725 +1066846 +1675304 +1779384 +1868908 +1066870 +156719 +2017701 +746895 +1150431 +2005189 +416678 +1556221 +220127 +88156 +156713 +1378276 +2017704 +942405 +1185239 +156724 +1720042 +1917552 +156711 +1556185 +384799 +1832124 +416684 +1382648 +690282 +272808 +220122 +1111949 +88158 +920741 +1111943 +1556220 +88197 +2166944 +1150454 +2005192 +220124 +531968 +2488275 +1801619 +272802 +793615 +239943 +1111950 +416682 +478876 +1111957 +2648874 +1801622 +1868910 +416672 +1353770 +1868922 +1217742 +1217755 +1801591 +88178 +14723 +2328496 +793612 +2488257 +963484 +88167 +1138783 +416701 +690291 +416694 +1327874 +88166 +1327861 +478887 +1066855 +1066858 +2387621 +1392197 +1779385 +1399341 +448129 +1816800 +478879 +1382639 +88141 +1162452 +14727 +196463 +1066882 +963491 +156723 +88161 +2166958 +1801613 +2328499 +428731 +1399339 +2300217 +1066848 +531979 +1801612 +416671 +1556197 +88151 +1185240 +920755 +1133302 +1353764 +478906 +272832 +354738 +2827905 +1217780 +1801636 +1168979 +2166983 +365402 +1055909 +1133319 +88274 +2869020 +1801648 +272831 +1138808 +615407 +963516 +2039734 +1675356 +793638 +1556333 +348438 +1185292 +1960862 +2791023 +1138806 +2488380 +963520 +1074587 +920790 +272878 +1171894 +340476 +1917566 +1801671 +1693139 +1133328 +1150502 +942412 +1217819 +2790999 +903709 +1556363 +2840418 +1395305 +88247 +1028292 +942410 +1024795 +1168995 +416796 +220209 +272866 +2790973 +1150500 +1730774 +416770 +2790913 +690328 +331130 +532047 +920798 +1556264 +1556326 +2790887 +903724 +1006414 +251523 +1556242 +416728 +1917560 +1675354 +1917557 +478935 +2167005 +2790960 +1273880 +2827900 +793667 +1273881 +2488312 +2856144 +2039735 +2587477 +416733 +1168992 +2869045 +1500487 +1273877 +1801662 +466386 +220166 +963558 +1766961 +1382670 +448180 +239965 +1066905 +1217772 +2439082 +2869032 +2587475 +1917565 +2856092 +793729 +1868947 +2791033 +1693136 +1059901 +331136 +1378278 +448154 +272845 +793651 +1185261 +2283467 +1382663 +1074594 +2791004 +2869017 +1133356 +2856090 +1868963 +2283468 +1133309 +1675320 +1155856 +207904 +1162458 +2488331 +1092710 +1185253 +2790889 +220163 +1138810 +365411 +88225 +531997 +1868980 +1066904 +1150486 +88210 +396927 +920783 +1092704 +436572 +416756 +1675338 +870713 +690334 +963553 +942420 +1217786 +1059897 +365416 +285538 +1675347 +2488370 +2488329 +1556330 +690337 +1975572 +870714 +1832132 +1217798 +2869036 +2791097 +2790899 +416735 +2856095 +2791042 +1055904 +963557 +2856088 +491811 +1133307 +2087082 +2856123 +1040444 +2840412 +2300235 +365417 +1150482 +1801677 +251505 +428756 +2166993 +2166964 +1556289 +747964 +1150501 +1500499 +2869003 +2869016 +1171892 +1556234 +2856130 +466418 +1556290 +1801655 +2488396 +478901 +1816803 +1382677 +384811 +1006416 +1556270 +2790980 +1675362 +1133335 +1006413 +793639 +466399 +272842 +2534807 +344096 +1185283 +416738 +156787 +1171886 +1185267 +416720 +478905 +416800 +272850 +2488340 +793723 +466402 +1556347 +2790992 +963566 +239951 +396906 +1801700 +2869027 +2827902 +1273878 +1868956 +1500483 +448158 +1556246 +1801659 +903706 +1168987 +2791084 +1766969 +2166987 +532054 +2856134 +963517 +1084570 +2827873 +532019 +2039729 +2017711 +448189 +1500497 +1675351 +1556271 +1066925 +1078631 +1040445 +1217814 +436581 +2488389 +2791046 +416819 +532037 +1055925 +416725 +396941 +2790952 +2488407 +1066930 +2790925 +2791000 +2790956 +746900 +1556233 +14737 +1055921 +2488342 +1801699 +1138807 +1006406 +239969 +1816805 +963550 +2166996 +1185274 +1217815 +1556265 +1868973 +2005197 +466427 +1086447 +1556255 +2827911 +759654 +156757 +963527 +963504 +2087096 +532045 +1382656 +1066921 +1500490 +870731 +272843 +196472 +251518 +2791080 +1086445 +1520612 +491812 +335451 +1125227 +53976 +1055920 +1730776 +1138789 +1150466 +1150473 +1936969 +2017713 +1382673 +1556352 +1629118 +723035 +746904 +220157 +2166997 +416724 +376964 +1556355 +2488360 +746897 +1201882 +298850 +2856098 +2790987 +1133336 +2840414 +239949 +1769139 +532015 +1150458 +478912 +207899 +532021 +1327889 +251520 +615406 +2856146 +2534810 +1150498 +793629 +690348 +1074590 +2300238 +2827851 +735606 +1428326 +1066883 +335445 +793690 +2827907 +1816807 +963540 +2869019 +1868959 +1133351 +478895 +1066937 +1556366 +2012218 +2087142 +793734 +1520616 +793733 +54020 +1975576 +2791130 +615421 +239975 +615420 +313643 +2681587 +615459 +88287 +156852 +651479 +1730788 +376979 +2328516 +359433 +1138817 +1066941 +53997 +1382682 +1366295 +156834 +54013 +335463 +1960868 +1171907 +53998 +156863 +1243322 +1556414 +1629150 +156866 +1675386 +532065 +1917573 +331143 +1150518 +1753785 +1556375 +1006448 +1103925 +1556378 +1273883 +1040456 +220218 +466448 +2087120 +759662 +738351 +466441 +744174 +436591 +1556387 +1556421 +1662790 +870749 +2167028 +615436 +1217840 +1846006 +1074599 +436587 +365420 +532071 +1006427 +220219 +156811 +1293566 +738346 +2488431 +1960871 +2087137 +532093 +335470 +428757 +1683378 +1556369 +313639 +1753786 +532084 +416843 +942435 +1370760 +2167044 +870774 +2856153 +2352658 +1556368 +2648898 +920829 +53994 +1846002 +2488429 +2856166 +416841 +2488430 +1556408 +156838 +2587503 +436597 +2587488 +313642 +1520618 +942425 +1388214 +2488412 +532069 +54018 +156868 +1138816 +2005204 +390306 +2648901 +2263333 +1217827 +615423 +963596 +713679 +2087110 +1556377 +1766978 +615449 +156855 +2087113 +2167060 +870777 +1629154 +1693140 +870751 +1074595 +738352 +1217828 +2648895 +942426 +1662777 +2087101 +239979 +1006456 +1125231 +532075 +2263354 +2534825 +2791202 +207916 +88304 +2534834 +54056 +54038 +2840459 +870891 +376999 +1059906 +298854 +870931 +54027 +1125244 +1006487 +667888 +1954553 +2413902 +1712212 +615476 +615481 +1712214 +1960883 +615469 +615547 +2039748 +2791179 +1006505 +2731317 +2689170 +2488456 +920843 +292225 +54048 +920867 +220232 +1311456 +1712211 +667882 +1484905 +1500526 +1293572 +1954554 +1936977 +615464 +1730809 +2738449 +2691991 +2360913 +2263370 +1155864 +1217851 +870843 +1103949 +88301 +2689152 +2167077 +1500527 +2167066 +2648904 +156953 +1428348 +870856 +240003 +1556438 +1753790 +920853 +920856 +1040476 +240033 +532103 +54079 +1712215 +942465 +870879 +313675 +1006482 +207923 +404075 +723043 +908270 +1201903 +1074601 +54065 +1428351 +1471835 +1629218 +1006486 +240032 +2063557 +240039 +156944 +2869073 +1471837 +963610 +1629201 +532108 +2791210 +615489 +196507 +870841 +54050 +690373 +2263374 +54033 +2791188 +1488072 +2534838 +2488449 +2387632 +2736215 +615560 +54070 +1087967 +2791169 +2300244 +1327926 +870872 +2648907 +1087966 +1185327 +615566 +2625764 +1055931 +1059913 +1629191 +1293580 +1693148 +2625762 +2421790 +313670 +870876 +54073 +2691993 +1051836 +532107 +615509 +54077 +2721939 +1111987 +2444610 +1006508 +1040473 +2587517 +2426264 +2039740 +1675399 +920860 +2587536 +313664 +870893 +2387631 +1243346 +240038 +54080 +1960882 +1125237 +2263376 +1948139 +870895 +870869 +1273891 +1006479 +870865 +2689155 +285539 +292231 +1948140 +920858 +908266 +240009 +1917580 +1985175 +1556446 +1629207 +1103943 +870921 +240022 +1629171 +1103933 +1092723 +1006484 +615557 +1125248 +1556449 +1092725 +2263345 +1936973 +1059910 +313648 +2840434 +870888 +1471812 +1040481 +1629173 +713695 +2413903 +1704931 +239998 +1428350 +963609 +1185326 +1629233 +220245 +651490 +690388 +1556568 +1084586 +1217872 +2439103 +871051 +2791234 +1273912 +220246 +497958 +1084584 +690398 +1040494 +2488460 +793846 +942490 +1801724 +1382688 +240048 +157037 +615606 +2856205 +963634 +532136 +1066958 +1629252 +615578 +2856235 +2328542 +1302772 +532203 +1428375 +1066957 +532217 +690420 +207934 +1693157 +942503 +2587573 +1556622 +1556565 +793890 +870956 +1059928 +1395315 +2300262 +1428405 +793776 +1556646 +793809 +448229 +2167198 +1675419 +1556654 +759672 +1150532 +156971 +2856211 +793886 +1869043 +793840 +2587557 +1766985 +2167214 +1629274 +615586 +2087167 +2587574 +1253687 +335476 +1302773 +344105 +2587552 +1253693 +1006565 +793845 +448222 +690384 +1028306 +963635 +1869028 +1556573 +2856236 +1556517 +793884 +1150530 +2856181 +713696 +2691995 +690410 +2300252 +1556602 +793882 +1917591 +2167148 +2039751 +1629246 +738360 +1869037 +324888 +793783 +963660 +871062 +713704 +2439104 +1293588 +2167165 +793782 +793795 +2856188 +1693156 +2039755 +1273930 +2791237 +615579 +1399363 +532157 +532238 +871000 +615592 +1273905 +1040498 +1869011 +615649 +793810 +196513 +1556560 +532186 +532210 +793867 +870964 +1779462 +1951143 +157058 +157036 +1006566 +1556609 +1040487 +651501 +942496 +793817 +2263381 +1556615 +1092741 +615631 +1556495 +1675429 +2167178 +1500534 +532176 +156996 +88306 +2731318 +1353827 +466479 +2791239 +871086 +156976 +1556506 +615648 +377011 +240066 +157026 +448228 +2856201 +88320 +1556523 +920889 +466472 +1960897 +1869040 +532216 +2587563 +88319 +1185369 +88339 +156972 +1327946 +298856 +157065 +1556539 +1556589 +1327954 +1217859 +793779 +2005213 +908277 +532198 +532242 +532239 +88349 +1556628 +1556616 +690424 +1162482 +793893 +1092747 +2167212 +2856209 +2587541 +1353821 +1074608 +251534 +793789 +963663 +2328534 +1185339 +88333 +1006534 +690408 +1040497 +870949 +920876 +1402340 +272917 +1556569 +157042 +532127 +448234 +272902 +478943 +2728232 +1556529 +942494 +2300254 +1185365 +448237 +532185 +793829 +871074 +1302777 +1869005 +1988922 +738359 +871067 +532126 +1006509 +532155 +1006515 +2039753 +1500535 +1471858 +690417 +870969 +2283474 +2167171 +157052 +2167208 +2309722 +793839 +240067 +920886 +1273895 +2856240 +1500536 +2755128 +1556540 +871015 +1869038 +1006558 +1217873 +1185357 +1302770 +871006 +2167134 +2300260 +532125 +2167196 +1040493 +615644 +1801722 +2587570 +1556518 +2167292 +690432 +1006611 +2167231 +2791365 +532286 +2791316 +793942 +2721947 +2167236 +2736224 +2017729 +88358 +1629301 +1683390 +532304 +157113 +1693176 +747972 +2167295 +1428416 +2856368 +1816839 +1066969 +615656 +1520643 +2167228 +2791264 +2791247 +2856270 +2856292 +2791317 +1428415 +1816856 +2017725 +1951152 +1662801 +1471860 +1683387 +1960901 +1006592 +1675455 +2856371 +2514683 +1243377 +157101 +2167273 +2104446 +690452 +690464 +2856364 +532269 +207936 +1103979 +1629302 +690474 +2856284 +2791260 +963697 +2439109 +1730858 +2856278 +793935 +532324 +2352665 +1243383 +2167252 +963691 +2791391 +1936981 +2514679 +2791330 +1006581 +1074621 +2791345 +1769147 +1428421 +2005222 +2856288 +1675436 +690451 +1784727 +963703 +871127 +1388219 +1869069 +2728235 +532307 +1150534 +2791366 +1662799 +2791336 +1006596 +2488517 +713731 +2300269 +2488490 +1975607 +2087174 +2300281 +1520641 +1243370 +1675440 +2263413 +1869072 +723059 +1059931 +2791252 +1753804 +1556684 +1753814 +2791262 +157120 +1769148 +2167260 +2791275 +1816829 +793957 +14789 +2000670 +1055947 +532290 +1520642 +793950 +2328570 +908283 +1801732 +793959 +1753813 +871124 +2439112 +920900 +2736222 +1846013 +2167281 +2426267 +88376 +2856359 +1720056 +1730850 +1428406 +1556692 +377018 +1006591 +157100 +1816832 +532326 +1366307 +1801734 +2791355 +963688 +2167280 +1629317 +2300277 +157081 +2856316 +615671 +1903379 +2791283 +2352662 +2736223 +793949 +1006602 +871123 +54104 +2283477 +1201931 +1629303 +690430 +2684913 +2167257 +1784723 +871128 +2721949 +88361 +713719 +615672 +2856345 +2791319 +1779464 +2514675 +732027 +1055946 +942517 +2514669 +532308 +2856349 +1006573 +1556685 +615661 +2856317 +2721948 +1059942 +2743204 +2167279 +2309740 +2167265 +2791394 +157124 +1629290 +157164 +2300287 +1074625 +2689181 +207945 +1343919 +871165 +871207 +871224 +1006648 +615685 +157139 +2791409 +920922 +1662806 +1520651 +2791408 +871179 +2309748 +2263420 +2488538 +54116 +1006642 +871162 +1327970 +2791404 +746915 +157133 +157170 +1353848 +1629354 +1006644 +871181 +2328593 +1155882 +1471873 +2791437 +1779496 +2755136 +2167336 +1662815 +942551 +1720057 +1006661 +1066983 +942540 +157156 +2039765 +615701 +871199 +1006660 +1779481 +1405742 +1816859 +1370768 +1629320 +54125 +871232 +1150549 +1801755 +2167346 +2352668 +1084589 +2648936 +157176 +1500572 +871212 +615706 +2167334 +88387 +1662813 +1006653 +1500569 +963718 +272981 +2328584 +871175 +2488569 +157182 +1629345 +1201941 +871187 +1556738 +2039763 +793979 +871210 +416885 +2167335 +1006645 +1960919 +2488554 +157200 +2167359 +1629343 +615709 +1556710 +1428441 +1201940 +1556728 +1784736 +532345 +1556705 +2263423 +240087 +1428444 +1629355 +920916 +1779493 +416888 +1784731 +871216 +416886 +2684916 +157159 +1327971 +157143 +2514696 +615710 +2488558 +1629333 +416880 +2263425 +1006623 +1074626 +2514689 +2167375 +1784741 +1243401 +1753818 +1074635 +2167345 +157193 +871194 +1006638 +1327969 +416865 +1500570 +532343 +1662808 +2791405 +2747370 +920936 +794039 +207950 +2488635 +2488574 +2167420 +2328678 +14808 +1327985 +1556785 +88422 +14805 +196537 +794054 +920941 +340488 +2755146 +14811 +1801758 +2514700 +2587596 +88398 +2488672 +1150556 +1675494 +2328616 +963742 +1801778 +1067003 +2328674 +2167407 +1816868 +2488643 +1556759 +794018 +1150580 +1150577 +1556772 +220291 +2167441 +2167389 +2755140 +532378 +1556813 +2791451 +963737 +532384 +1399384 +2488632 +1006672 +690490 +220294 +794047 +1395321 +1556776 +2012225 +88397 +1801800 +1399388 +1556812 +1500591 +532386 +1556792 +2328687 +1428453 +2300296 +2488589 +1801803 +2328617 +793988 +2017740 +1556815 +2328636 +2387675 +2167432 +738373 +1059947 +1399373 +1556773 +1150566 +1766999 +1801810 +448249 +2791443 +2328694 +1327980 +1662826 +2387677 +1917602 +794037 +1801764 +2791475 +1801811 +2352679 +2856395 +794042 +1353858 +2023414 +335482 +2439127 +1779498 +1395326 +1556816 +1801774 +2869077 +2488592 +1150583 +448244 +1150576 +2005237 +2791462 +920939 +335480 +794052 +196535 +88412 +1903392 +2488620 +14818 +1273939 +2017732 +2488637 +2167423 +2328680 +220297 +1556774 +2167394 +1006673 +1028309 +88419 +2488654 +1779508 +2488633 +1399383 +2840467 +2869088 +794041 +1067001 +794017 +1327978 +2328645 +1150579 +2488628 +1343920 +690499 +1662825 +1556762 +532377 +1066994 +1801816 +1327981 +2791482 +1428455 +1869090 +1675475 +1388226 +2167447 +2791480 +2488669 +1675497 +532422 +1138831 +1370772 +794063 +88414 +1405744 +2791497 +2167573 +1040516 +2039796 +2167489 +2488718 +2167609 +1370776 +2514704 +2352682 +1556879 +1556843 +1801865 +690529 +1556830 +2328706 +2488784 +273007 +1428478 +794150 +2587610 +2514707 +2328941 +2791515 +1382732 +2328722 +1428475 +532467 +2328830 +1217925 +2167535 +2649128 +2649192 +2488854 +2352681 +2263448 +2263442 +794125 +1185384 +1273948 +1556914 +1629370 +2649109 +2649098 +2488824 +2649153 +324904 +2328860 +2649217 +2328794 +2300305 +2699590 +615723 +1556927 +1720063 +1040543 +1428463 +2488755 +2649169 +1327992 +240113 +272986 +157218 +2488851 +2087205 +1006728 +1662829 +2387703 +759681 +2167511 +1243419 +1629410 +1917638 +794153 +1693198 +2649033 +2649123 +251541 +2649037 +2649081 +1243414 +2488832 +2488738 +324897 +1647903 +298861 +2587664 +1917636 +1936998 +2649000 +1243422 +1556823 +1869131 +1428538 +1556828 +1832201 +532433 +273015 +1112011 +1693178 +2648946 +1556919 +1720061 +1903400 +2721955 +14868 +1801850 +2649021 +2488815 +1409422 +1693191 +1500614 +2649158 +2263464 +2167559 +1556876 +2039791 +2263474 +532453 +1556904 +1941554 +207955 +1704941 +1399389 +14853 +1556888 +1917630 +1006735 +1556907 +2387689 +2360922 +1629416 +2488830 +2488853 +1243418 +1693199 +2387691 +2488846 +2649090 +2328888 +1428456 +2328723 +2649110 +324891 +1869154 +1103997 +1556922 +273051 +1917650 +2328804 +1629431 +1328003 +196547 +2039779 +2167525 +1273946 +2649225 +2387690 +2488796 +2791523 +2167649 +2300301 +1112012 +2587626 +2649114 +1273942 +1428546 +1103985 +2731325 +871241 +2649047 +2328892 +1869111 +2328771 +1869124 +2263463 +2328782 +2352693 +794184 +794144 +1693181 +2649004 +794180 +2167620 +1428467 +1428487 +88431 +2648953 +1046443 +1405764 +2488789 +2167654 +1428522 +1103984 +2167635 +2649196 +963790 +2328841 +2328789 +1917624 +1693206 +2167512 +1243410 +1428518 +2648985 +2167642 +2648969 +1405749 +713753 +14834 +1520666 +1103991 +1428527 +292250 +2649077 +2649054 +2649206 +2488700 +2167653 +2417292 +794135 +2488762 +2648968 +2167663 +1471888 +14850 +1647908 +2039768 +2387693 +1647905 +1409426 +1428530 +2488826 +2039772 +273059 +1556894 +2648955 +1917666 +1520672 +14882 +54157 +1040528 +1103986 +2488716 +1556852 +88432 +273052 +794137 +2649069 +1428552 +88450 +2587635 +196550 +2534853 +2387687 +2167568 +220305 +920951 +1869122 +2005241 +963792 +963800 +1217914 +1693177 +2167551 +1067009 +2514706 +1428466 +2167665 +2263447 +871253 +1353866 +1917606 +2417294 +1801837 +2488774 +2417283 +1006722 +1273953 +1428502 +1629415 +1693213 +2699589 +1428524 +1917645 +1243413 +2649122 +2328849 +2328751 +1092771 +2387692 +532446 +2167477 +2167481 +1500625 +1704945 +1693193 +2649141 +1647902 +324893 +2309752 +2488791 +88435 +2649006 +2167463 +2328944 +1941551 +2329012 +1395328 +794299 +2167828 +532504 +794225 +2649236 +2329011 +196571 +1500657 +2328965 +1693221 +1557119 +2649248 +2167719 +220306 +2488940 +963835 +2167746 +2791545 +2087231 +1428561 +1730918 +532558 +1917732 +532530 +1556983 +2167773 +497991 +2167796 +2329067 +2791524 +2488932 +2649245 +1557066 +1556996 +2387725 +1273981 +1055954 +1428554 +2488900 +794253 +2017746 +1092778 +1556998 +794199 +920981 +2167688 +532581 +2167821 +920992 +2167784 +1675522 +1557036 +532516 +2167715 +384828 +2856429 +1917715 +1557160 +1557114 +963851 +1869188 +2488902 +1185414 +1185392 +2791589 +298863 +1500640 +1428579 +532542 +1150609 +2328993 +1382740 +1730915 +2488897 +1869182 +2488969 +2587707 +2791527 +2328953 +428776 +88484 +2167795 +2747375 +690534 +1395327 +2328998 +532544 +1217966 +88503 +2387735 +794293 +1556999 +88490 +1675511 +963810 +1217953 +690554 +794333 +2167822 +1428573 +1150608 +1917720 +794292 +2329036 +1556966 +2649259 +2699591 +1832212 +794305 +2587706 +2488899 +1917710 +1171914 +2387731 +963847 +2856450 +1557099 +1557139 +2488911 +220311 +2791538 +920967 +2488865 +1382735 +1557142 +14919 +1557148 +794306 +2167842 +690566 +532522 +794261 +2167763 +794334 +1917709 +1869196 +2329112 +1557034 +88512 +1801869 +1428590 +2488912 +532570 +2167753 +1557069 +2328951 +1217984 +2283484 +2791574 +1273974 +1757457 +963824 +920994 +2167697 +1869207 +1556978 +532547 +2167797 +2167857 +1353887 +532491 +794326 +1869174 +532565 +157224 +2587695 +2167844 +1218006 +1869212 +2791540 +196573 +2488964 +196553 +1162493 +1941558 +532529 +14914 +532556 +2167687 +1185401 +2856435 +1557115 +1353888 +2167766 +2649246 +2167707 +88459 +1217993 +1500656 +1067014 +920991 +532510 +1869181 +1218004 +1869222 +2710230 +1185409 +1730908 +2300309 +1647914 +313715 +963838 +478958 +2791581 +2856442 +738380 +2329108 +2329046 +2791591 +1353901 +1767005 +794279 +1869178 +738384 +2329087 +920990 +1217977 +2791546 +2167802 +794307 +1557026 +2488884 +2167853 +1155885 +2329062 +88468 +1162491 +2488924 +1557147 +1399396 +963841 +2329114 +1302807 +1869228 +14903 +478952 +1243430 +2488985 +1869201 +1693241 +532541 +1067020 +1353915 +532615 +2017766 +615731 +273096 +2087265 +1471893 +871279 +532602 +2587727 +1557171 +1055959 +723072 +2488999 +1150628 +2489034 +1629437 +2387754 +532666 +88542 +273091 +1201949 +2489042 +1801947 +335508 +1779539 +2167897 +88541 +921040 +615752 +2167935 +1801919 +1405778 +615726 +921025 +1869235 +759699 +1366323 +2736236 +2489009 +1917736 +88531 +2087256 +1675553 +1779551 +2489064 +794395 +1006764 +794420 +240130 +690579 +1150620 +2167892 +157260 +963880 +1006744 +335509 +1328063 +1092793 +2439140 +1067025 +2736234 +2300332 +88549 +615730 +1162499 +14941 +1557231 +1006747 +1629442 +54172 +240125 +1975637 +532636 +1557189 +794414 +1730933 +768827 +1917734 +54175 +1557164 +1557182 +1006740 +2489048 +1779563 +2017763 +2710235 +794387 +2039811 +1353922 +1557188 +942583 +1293607 +2387753 +1779554 +1557237 +2489003 +14950 +1040552 +1869255 +1395338 +2005258 +2167874 +2300347 +2489080 +1730930 +1675537 +532624 +1801918 +1869250 +738391 +2488991 +54177 +2710234 +2489019 +1557207 +1832228 +157280 +2731330 +942579 +2167926 +2167907 +1629440 +1328051 +1067027 +1629435 +1557248 +1557176 +2000691 +794360 +157274 +1353948 +1218031 +1629441 +157283 +1557185 +157286 +963881 +1960974 +2039814 +794363 +1801912 +1500678 +220331 +871287 +794364 +1779543 +2069475 +871316 +1293610 +1801925 +1629436 +794386 +1353911 +615733 +2283493 +1801948 +1006768 +1067030 +871276 +690578 +921021 +2104450 +2736235 +1028330 +942578 +921001 +1557208 +157281 +157258 +615749 +794429 +2300346 +1801928 +1150627 +416910 +794378 +2489012 +88519 +615725 +1302818 +1150625 +2300372 +2017756 +1185419 +2747383 +794400 +1006749 +1801942 +1311477 +2087247 +794431 +1399403 +532619 +273099 +416911 +2489049 +157233 +1941560 +794399 +1428611 +2488989 +1767006 +1150613 +532679 +1006759 +335512 +14935 +2710236 +1185418 +1975661 +2488988 +1557204 +690594 +1500668 +794407 +871282 +921031 +1302816 +871291 +1557236 +794439 +2444624 +651545 +532709 +2413916 +942598 +794451 +466507 +871355 +615836 +1311484 +2731337 +871332 +2167955 +2167973 +1753839 +615831 +416925 +871389 +615767 +1500692 +2309768 +2000694 +615778 +744186 +428777 +615814 +54186 +532721 +1311481 +2587741 +1343930 +963906 +615791 +1557256 +2167979 +1006776 +2731347 +2012235 +466521 +1629458 +1006769 +1104004 +2017780 +794449 +1975672 +1040555 +1730942 +273108 +1353958 +88557 +2167975 +690608 +615805 +942600 +157290 +2733774 +1975683 +1074651 +1500693 +713765 +1629456 +921048 +1388234 +377035 +2587743 +615808 +1366337 +871333 +416924 +448258 +615770 +1370789 +436616 +1975687 +1520686 +1353956 +942590 +1040556 +466513 +1353952 +2167945 +478970 +1975682 +2012234 +1471902 +2283499 +871388 +1975669 +1629463 +157298 +1353954 +1629475 +416927 +54194 +615823 +1428619 +942602 +1243443 +2005267 +377034 +2721964 +1520678 +871350 +2167948 +1753836 +903774 +1753835 +1366331 +2263543 +2167995 +1155895 +1051849 +416948 +1143320 +768832 +942618 +2791653 +157362 +2168003 +240177 +88562 +1784755 +871454 +1366343 +1428634 +240146 +273117 +871445 +54204 +2856474 +871465 +220347 +1471915 +871499 +1629488 +2840481 +2309774 +2168013 +1006806 +615908 +2263505 +1311490 +2856483 +1366347 +1730944 +157352 +240182 +157383 +1150637 +2856473 +2489122 +1143306 +157407 +2791610 +2489105 +2721969 +2168014 +273164 +2263529 +2168011 +871405 +436620 +1405779 +1074670 +1629537 +2710239 +1629489 +157447 +1629556 +747992 +157388 +2413918 +1629498 +54222 +220350 +2168018 +747997 +1006823 +963914 +713802 +1006890 +1629509 +2755180 +1801958 +2699619 +1520697 +942610 +1629546 +942608 +54211 +157364 +1471930 +1767017 +2017791 +871478 +157369 +2791668 +1784759 +1409433 +615890 +2017790 +1382787 +615863 +157377 +2489106 +436619 +2856491 +871451 +157366 +1382785 +1816911 +1343943 +1143313 +240156 +942624 +942623 +1379247 +1006874 +352356 +54198 +2514721 +747985 +651552 +2263516 +1557285 +2300376 +2489123 +651550 +908306 +352353 +1816909 +2087269 +2263523 +2352712 +942635 +1903416 +2840489 +340497 +2489126 +1201961 +157433 +1629571 +942611 +1155894 +1629494 +240160 +1471929 +2309798 +240142 +1379243 +240166 +2263545 +416934 +157394 +331170 +615896 +942640 +2167998 +273149 +1006837 +1816899 +871415 +1869282 +2856486 +1629543 +2309807 +2300385 +2017797 +2263514 +942641 +690629 +416938 +2329129 +436618 +1399418 +1366346 +157395 +1343944 +732039 +871500 +2263533 +1629486 +2263506 +744196 +1629526 +1779575 +723086 +1143322 +1903415 +1769158 +1428625 +871420 +1662857 +2263518 +2489113 +54217 +2309797 +2791628 +359472 +1074661 +690628 +2005282 +2263548 +2791621 +2444625 +615850 +240149 +1520696 +157391 +871438 +2329131 +1779583 +2791645 +273136 +2017792 +466522 +1006800 +2168105 +1801972 +2587771 +1428638 +2587794 +1557320 +1067055 +220355 +1730947 +1693254 +2168087 +1040569 +2087277 +1185447 +690665 +1218052 +1557327 +1869309 +532778 +2300409 +1130254 +88588 +1917763 +1730954 +88591 +903780 +2300407 +794530 +498040 +1274010 +498037 +2300399 +1500710 +1801984 +1693256 +1662868 +1869289 +1662871 +2587773 +794494 +963952 +532801 +2387795 +2168067 +2587751 +1779599 +1500723 +1150642 +2587770 +2587778 +532791 +1960981 +1067053 +1557328 +2168028 +794507 +1557331 +794519 +157460 +690633 +2168097 +498035 +1767020 +2329148 +2300391 +1675584 +220364 +1767022 +1428647 +794478 +220365 +14964 +1500724 +2168029 +794476 +690640 +2087289 +963943 +251563 +1917747 +2329156 +2587757 +963947 +1382794 +1693257 +196590 +2587766 +532804 +2168064 +963925 +615914 +2387771 +88573 +2300396 +2168091 +2168073 +1779598 +498032 +1917752 +1730959 +1869285 +871511 +1092807 +908307 +690661 +2087296 +2587788 +2300395 +1055965 +1218062 +1428637 +1557332 +1112047 +1730953 +2489142 +2069486 +963940 +921072 +1730958 +1712240 +2587774 +723090 +1024809 +2417304 +1801990 +1960983 +1975702 +2329177 +2710241 +1869389 +1092819 +2489177 +2387809 +921089 +1353994 +2587815 +2489188 +2087309 +1388242 +1869403 +1869360 +2168148 +690680 +1730966 +2329174 +794566 +2360937 +2534884 +794600 +335519 +1112061 +532838 +2168198 +1975707 +2587823 +532848 +794592 +1869350 +1693276 +2743233 +2087306 +532866 +2168171 +1328126 +794538 +1557378 +690678 +1092817 +2300413 +1500742 +2168127 +2017800 +2168121 +768838 +1328116 +2489185 +1557401 +1428661 +1802012 +2587806 +1802007 +2387810 +1757465 +1832258 +2791706 +1693301 +1150652 +2587801 +2168187 +1832269 +1693293 +532863 +88627 +2791704 +196606 +1274024 +298871 +2329184 +1218083 +1028342 +1730970 +1869404 +1869353 +2387808 +532835 +2168173 +794536 +532873 +448270 +2587813 +794570 +365463 +1675595 +794548 +2736251 +2168156 +14972 +1092815 +1557385 +1218096 +1328129 +921093 +1092810 +794549 +2168214 +2747397 +1185461 +1055966 +1730961 +2587825 +88618 +2387820 +651561 +1675590 +1328123 +2387815 +2329190 +738408 +2587828 +2168145 +2168206 +532869 +1693282 +794558 +1832276 +2587845 +532847 +1557352 +1557363 +220370 +1382799 +794601 +903783 +1779613 +532867 +1274030 +1302830 +2168184 +1500729 +1500734 +2587799 +921084 +1382797 +2168186 +1092816 +2439181 +1869407 +746929 +1428685 +1328152 +2426279 +1662881 +2329200 +1150664 +1500747 +690692 +794608 +15006 +794633 +1675611 +88633 +1328140 +88636 +1802043 +1428682 +2168306 +2168275 +1675617 +921098 +2168265 +2168283 +1218113 +2439177 +2168246 +1557428 +532901 +1388245 +1150674 +2168323 +2329202 +1067083 +2439182 +1779620 +1779629 +1779618 +2039837 +2489239 +1960997 +1382809 +651563 +963975 +1557432 +1802033 +1675601 +196613 +1557416 +1133373 +1693328 +1274037 +1802024 +2168300 +690694 +2587853 +1557438 +196619 +903801 +1382830 +2087366 +532961 +15071 +2168493 +1779646 +2087369 +1382817 +1185470 +88707 +2087364 +2387830 +1693386 +1557499 +921126 +428780 +2039859 +15030 +196625 +1382833 +2300475 +1162546 +2329214 +2489267 +396964 +2168428 +1218118 +1055975 +794712 +1382816 +1557548 +1675640 +354759 +1557462 +2168409 +2489316 +1557573 +1185473 +1675630 +921110 +1557445 +15053 +2039862 +2300476 +1428695 +794661 +88691 +1428698 +88664 +2168339 +1500766 +2489358 +88668 +2069496 +1779662 +1092827 +2300465 +1185483 +1779664 +1500798 +2168496 +1067112 +88717 +2439201 +532953 +1428694 +1675651 +794652 +15016 +2039856 +794656 +1092828 +2283514 +2489285 +1162532 +1557506 +1086460 +2168422 +794676 +1428693 +2168527 +1388249 +1557500 +1162570 +2710253 +794722 +2168403 +2300454 +1138864 +1869426 +2329235 +2039855 +2168413 +1869436 +2168468 +1557538 +88693 +2489328 +88698 +1557450 +2168394 +448281 +2168417 +1557534 +2439205 +794650 +2168359 +157471 +1557535 +2168480 +2587873 +220388 +2168482 +478978 +448287 +1693347 +1557440 +1712251 +1162543 +2387827 +1730979 +1802079 +2168515 +196628 +1006907 +1500762 +1767053 +2439210 +2300477 +1162545 +2168441 +2168419 +533005 +2087352 +251572 +1557480 +2168495 +2168510 +2439203 +396968 +1405787 +1067111 +1693372 +1557516 +1274041 +2743244 +2168485 +2489346 +2329261 +15036 +196637 +2168465 +2439198 +1557551 +2300447 +1500772 +1162539 +1055980 +2489273 +466538 +2329212 +1500768 +1311495 +1428714 +54234 +1869415 +2329213 +2489253 +1500786 +2300484 +1557451 +1557470 +1162529 +15066 +2168399 +1675624 +794708 +196631 +964020 +1067086 +1382819 +2168340 +1162528 +273179 +1557575 +1382826 +1961000 +2039858 +1274045 +871543 +1557586 +2856550 +88742 +2856668 +921143 +1802114 +964030 +2329331 +1557635 +54237 +1557727 +1629597 +2168536 +2856848 +157473 +466559 +220417 +1779684 +273199 +2856826 +2856952 +2649356 +2489432 +2856813 +2329343 +2856777 +2856677 +1658300 +2489434 +1169025 +1040575 +251582 +240205 +2069498 +1074685 +1903422 +2856837 +2856752 +1500834 +1051857 +871548 +794762 +690757 +2747406 +240202 +2856809 +88768 +2857150 +1629617 +88784 +2329339 +1006923 +690737 +1557718 +1675668 +2857092 +768840 +2856915 +2300492 +1557598 +2856632 +921137 +220429 +1869437 +15099 +2857104 +2857100 +2489416 +1006918 +533020 +2856962 +921162 +2856785 +533010 +2329267 +2856681 +88762 +2417307 +1084623 +1006939 +2856786 +2856964 +15096 +2856697 +2168563 +15112 +157514 +416993 +2300486 +871558 +1500828 +1779675 +1067153 +2856645 +2857015 +1328181 +2856763 +2699635 +478990 +651575 +2857142 +466547 +1683429 +2039870 +1557659 +2309815 +220433 +466543 +1112084 +466555 +2489384 +2856821 +1006926 +1557640 +2857134 +54248 +157500 +2856619 +2857026 +2489406 +2856920 +2857169 +1150711 +2329287 +871525 +964045 +1067139 +2857021 +2857052 +615921 +2856520 +964063 +1006931 +157509 +2329305 +2168534 +533033 +1779674 +88792 +1006915 +533041 +2856872 +1428737 +1067124 +335528 +2856975 +1328189 +964055 +196651 +690733 +2439213 +1767064 +2856829 +1218146 +416989 +759728 +2857140 +2856797 +157524 +533014 +2039874 +2300506 +448291 +1784772 +2087381 +871526 +1779688 +1557589 +2857172 +1138873 +1557675 +1629589 +1767055 +2168558 +1779673 +1201974 +466561 +1428729 +1243465 +1557735 +1784776 +1903424 +1557596 +794750 +220419 +1779709 +533025 +2856759 +1074684 +2856646 +2489378 +533023 +1557674 +1557736 +157472 +88757 +2856904 +88751 +746935 +240198 +2309814 +1078662 +921135 +2857002 +15098 +1675678 +1869461 +1557697 +794759 +2856613 +794803 +942658 +2856862 +2439222 +1629610 +1185485 +1143329 +2857044 +964049 +2857035 +1078664 +1779695 +2856840 +2489391 +157520 +2856581 +1557585 +2857009 +1405789 +1130261 +1067138 +903808 +2329311 +220435 +1162577 +2856947 +2857149 +2489404 +794794 +2489389 +2489368 +759720 +416986 +1138879 +1557592 +88739 +2489386 +196645 +794776 +921159 +2489400 +533017 +2856714 +2856896 +88753 +416997 +157517 +2168571 +240209 +2856629 +1629607 +2856590 +2856908 +2856905 +1520707 +196646 +533042 +1557753 +2329301 +1143338 +690740 +964053 +2857031 +2857020 +2856895 +2857128 +713817 +921150 +2856605 +2856886 +921157 +921133 +220411 +908311 +1040576 +1557685 +2856716 +2514743 +220412 +1557646 +2856543 +1557698 +1133395 +1138878 +1704965 +1218143 +2168555 +1067167 +2263564 +713847 +1816936 +1405790 +157595 +1520737 +340505 +1059986 +436629 +744240 +2263591 +1961022 +1816977 +1961030 +1201983 +1816963 +690762 +2309824 +2263578 +1629722 +1006996 +1816946 +871630 +1520734 +1557761 +1817019 +1629633 +1802128 +417075 +1629657 +744241 +340510 +1059987 +240224 +748070 +615931 +1059977 +1059975 +871601 +1366371 +1969134 +2444679 +1395379 +54264 +1243476 +1817006 +157574 +352368 +942683 +1816972 +1802142 +942698 +1557772 +2168610 +1243475 +2263594 +746951 +1500842 +615951 +2489448 +748019 +615977 +1104019 +352367 +1143367 +615941 +748026 +1074725 +1143346 +1311498 +335531 +871656 +744236 +2489450 +2087406 +1629684 +1074712 +2168612 +1078668 +2444646 +417051 +417011 +2087408 +1169037 +220441 +273226 +871655 +2625771 +157559 +1817015 +352365 +1059982 +1520723 +1769175 +748041 +1428739 +723103 +1802136 +1816986 +1243474 +417039 +2444656 +1006992 +871591 +1961035 +2087398 +1500843 +2087393 +1784787 +871579 +157576 +748040 +491838 +871654 +157579 +964076 +942711 +1399446 +1201984 +1557773 +871610 +1767068 +871623 +340506 +54268 +2444660 +748092 +2444649 +1816993 +1382851 +871596 +794837 +1629650 +1143384 +1683431 +1520715 +871635 +466569 +417026 +1557774 +794829 +2087389 +713840 +1779724 +340501 +240217 +1683444 +1629632 +1969140 +942695 +1060001 +2309829 +1006999 +2168583 +2514762 +359478 +871646 +942681 +466571 +1104017 +1055992 +1769176 +615932 +2444644 +1500841 +157584 +744264 +466562 +157642 +417125 +615994 +1817008 +2263588 +2087391 +1802141 +417057 +1816937 +417060 +1354021 +2710255 +1557756 +1817007 +466575 +1629670 +1143355 +1074713 +1816954 +744215 +615971 +1059984 +2444642 +1133400 +1006968 +1201988 +417062 +744259 +1816980 +157533 +2489456 +1629647 +1675703 +615953 +1143423 +1366367 +748007 +417041 +1343952 +1784800 +417061 +340512 +1388252 +466570 +1155918 +54276 +732055 +1557762 +746942 +1784790 +417063 +1366362 +157623 +1155908 +417170 +1150747 +921230 +220502 +794856 +220484 +240260 +273265 +157744 +1007031 +1629730 +2743270 +2489502 +1779769 +903828 +903824 +157671 +1658307 +251591 +207983 +157740 +1133404 +220493 +377043 +1802157 +921206 +1074773 +794857 +2439247 +1185500 +1683470 +964093 +2300530 +871660 +2426292 +2300520 +340541 +1133403 +964083 +1060019 +1500859 +2489480 +1138906 +417149 +331214 +417193 +1693429 +88836 +273252 +1675723 +2489517 +1779748 +54306 +377044 +1557816 +964097 +2168618 +273266 +417163 +921197 +220474 +1074770 +331246 +964092 +2300516 +417155 +417215 +1658316 +157657 +417144 +1704969 +1155924 +207990 +1869468 +396998 +942735 +1769183 +340536 +2168627 +2743248 +251592 +157646 +1675729 +157749 +251588 +942720 +2755190 +1133427 +903827 +1767076 +157748 +2300521 +1779765 +348504 +240302 +1629740 +908330 +2352729 +616004 +273268 +340518 +331239 +1658319 +1802153 +54300 +54303 +335538 +2489460 +2329352 +397024 +1133414 +1150736 +1675720 +871687 +340528 +396993 +1143437 +2309863 +2426308 +359479 +240257 +220458 +1779742 +54315 +1784813 +2426304 +417182 +220446 +1150741 +1143434 +335543 +397009 +417162 +417174 +903822 +1658310 +157741 +1150749 +220509 +220452 +744267 +746952 +273251 +157704 +942717 +1060023 +273284 +1133412 +1007005 +417177 +220471 +340515 +1007018 +88820 +417167 +396997 +240294 +157689 +157649 +1379259 +964086 +2263597 +157727 +377055 +2587911 +2329378 +2857251 +479007 +2857182 +2857237 +384838 +746959 +1067183 +491844 +54346 +157824 +88861 +390337 +15144 +2649366 +466634 +1112095 +2649390 +2857203 +942756 +964214 +2263601 +1112097 +377060 +690803 +1802190 +448308 +1243512 +964171 +1869534 +748106 +428793 +2649377 +1802171 +436637 +1428757 +88867 +1500882 +1802174 +2587928 +1869555 +2857206 +921268 +964164 +292268 +1802166 +1007089 +1354031 +298875 +1720075 +1500883 +713864 +533144 +1731012 +88843 +1428755 +390323 +1104032 +2587900 +384845 +1112094 +377078 +1731003 +1253732 +1343956 +2387844 +479001 +871725 +2168649 +2857191 +377053 +157765 +448311 +196687 +1028350 +1937016 +359495 +1869494 +448333 +1067188 +251598 +2087421 +1078670 +690795 +1869479 +903838 +1125289 +2587902 +964186 +2489554 +1557854 +2329393 +533095 +1112102 +1169057 +157798 +157840 +54344 +448336 +1084651 +2489567 +533124 +1007064 +964185 +1024811 +436650 +1007055 +1817034 +1169065 +1218168 +1500888 +1557917 +365477 +1040594 +921266 +1471953 +759734 +157768 +794898 +1150758 +298873 +1243499 +1767095 +964220 +964223 +436636 +2300535 +1917826 +2329384 +1821768 +1500881 +1869531 +292270 +871705 +1007086 +1846035 +285567 +651587 +1557864 +1869551 +1202001 +157827 +2387859 +1832316 +1869567 +448347 +1557913 +921262 +2023455 +794891 +479004 +1769188 +1675733 +1557882 +466622 +1150760 +871722 +1917822 +157755 +2747417 +331252 +690835 +1869547 +157816 +1869541 +157752 +1869519 +1007053 +157829 +964148 +1869477 +2168657 +273286 +251594 +2857226 +466624 +942745 +340548 +88850 +1218197 +690805 +690827 +964152 +1779798 +964128 +2857204 +1293630 +1802199 +313736 +466667 +365470 +533138 +384841 +533090 +690839 +1218201 +1917797 +533088 +1869573 +871726 +1354037 +1007107 +651589 +1903433 +2387856 +157810 +2387842 +196683 +2352734 +1328201 +2649388 +448346 +2587939 +2168665 +2534904 +1869525 +466645 +1218189 +794897 +1557923 +1753862 +1917805 +1869532 +1428754 +1557893 +1869484 +377075 +1169058 +466607 +942747 +220520 +2329405 +273287 +871729 +2649362 +713863 +2587907 +616008 +2755193 +1084636 +377066 +1007051 +157790 +690801 +1382858 +436639 +1218167 +15155 +533102 +1557918 +1730996 +1007111 +1662911 +1243504 +1040587 +533155 +1557930 +1658324 +616012 +1162580 +1409441 +2857195 +1731004 +1869539 +157842 +466672 +1869636 +1869619 +1869585 +964238 +2649406 +964228 +1024814 +1869605 +298881 +1218212 +365487 +1500898 +157855 +871739 +2791762 +616055 +1218216 +1712258 +466674 +723116 +533165 +1720079 +1202023 +794907 +313770 +384847 +1428761 +1263400 +359508 +1185557 +748108 +1243537 +533166 +1185543 +2587955 +1263399 +1040635 +1185554 +1243518 +2857276 +1311504 +1046472 +723117 +1007144 +436666 +359504 +794908 +377116 +298880 +1917841 +1658325 +2489574 +533180 +1869640 +2791728 +1243538 +1185553 +2791755 +1202014 +1243516 +1647925 +2857280 +1202020 +436665 +964237 +1557975 +1253749 +942758 +2791758 +964226 +1185537 +1028368 +2857274 +479008 +533173 +1693439 +1185550 +1218211 +2791749 +1185548 +1917846 +365485 +1040608 +1779802 +313771 +448358 +273311 +921274 +921272 +466688 +713869 +1171931 +1253750 +1040630 +1040638 +1712256 +2755196 +1243535 +313751 +533176 +1040629 +54375 +324909 +1917853 +1869724 +54408 +1869735 +2649500 +15192 +1218261 +157927 +298886 +2489605 +220545 +220562 +1040642 +2649439 +157926 +2747420 +794935 +794920 +2649448 +871780 +2649493 +1328224 +2587985 +1917887 +1185560 +1218282 +713873 +2168677 +240355 +1558007 +354791 +1629801 +365521 +1162588 +1243547 +298917 +1218278 +2439262 +1869642 +1869688 +88893 +1731076 +313816 +1028374 +1112130 +690856 +1125300 +88894 +921300 +794932 +15224 +404077 +2649492 +2087432 +1185568 +690847 +871764 +964257 +2534921 +313779 +88890 +1558032 +2649418 +1185574 +1104045 +448374 +794924 +1243545 +292281 +1092859 +292293 +2489590 +942778 +1500903 +1028373 +1731072 +1869645 +616073 +1869729 +448365 +1869682 +54389 +2649420 +466699 +15215 +377130 +88921 +1869660 +921288 +964262 +365503 +616085 +2168697 +15178 +298924 +1253761 +2588045 +1832345 +313797 +1903459 +313778 +2587984 +2168691 +2087433 +2649425 +1779807 +871763 +428821 +1779805 +1869727 +1253763 +1218271 +15231 +1731125 +313792 +1218256 +1558033 +54383 +1731084 +313775 +1112126 +794942 +2588042 +1558039 +713871 +359545 +1558021 +2587978 +1185572 +15185 +324911 +1028383 +794930 +2587989 +964247 +1869715 +1753890 +2517423 +285573 +2649483 +313791 +88886 +54406 +1817043 +2168696 +1832344 +1558019 +448385 +298888 +921283 +2649430 +942770 +1028386 +1484908 +2168721 +313777 +157912 +1028387 +1558040 +1328223 +871768 +15227 +1040651 +298911 +1112134 +2168687 +1218254 +2168688 +220549 +1028378 +1007145 +88926 +1558017 +2263608 +2588044 +1917865 +359532 +1558006 +365515 +616075 +964255 +1869665 +365534 +54388 +1869650 +1731073 +533192 +466693 +1218259 +448370 +54431 +1869655 +1731095 +942776 +1375682 +1704973 +2489595 +448379 +1125304 +240348 +1399451 +921305 +1028382 +448371 +794949 +1253778 +88973 +1558097 +1869759 +1629825 +88950 +1218346 +1731163 +1133433 +921339 +365546 +1832355 +1767098 +533219 +1218342 +2649514 +1820157 +1092886 +1832350 +298925 +1832375 +479032 +220568 +1218325 +1869761 +1869754 +324913 +2329434 +15245 +1832370 +1185593 +479047 +1428774 +1558088 +1802221 +285577 +1328230 +1832373 +871791 +1138914 +448403 +2588078 +1023606 +273324 +2168746 +1500928 +1218357 +1731169 +942783 +251619 +1558104 +2588086 +794953 +448396 +759751 +15233 +2588097 +2329416 +479030 +327815 +1007164 +1520756 +1328233 +1693450 +2387888 +2329441 +871792 +479048 +1500916 +1731172 +365555 +1731145 +2489632 +2534935 +54437 +1354052 +1869757 +1675763 +1869776 +1328232 +964278 +1712269 +1917899 +1328238 +1218317 +479052 +921314 +2534952 +2840505 +1558099 +1731157 +2489622 +1500930 +1218328 +1558098 +1675769 +220571 +2791770 +1707013 +1731131 +479059 +2534947 +384867 +2588094 +533221 +2329426 +1869787 +1428775 +2489612 +1558078 +313831 +2588083 +251615 +1185616 +1832372 +1712266 +1274059 +88936 +1869763 +208011 +794976 +1500919 +365541 +1558079 +88958 +1253772 +2387879 +2087456 +448402 +794950 +1731146 +2426319 +1917890 +2649513 +1253777 +365556 +1500955 +428877 +479080 +1078711 +1869843 +1150768 +921354 +1869814 +2168916 +1629833 +533243 +1558153 +298946 +2329459 +89009 +768867 +1558154 +1092905 +1484933 +2387903 +428851 +1274063 +1243560 +479064 +759793 +1428779 +1731178 +1917913 +1917920 +871816 +466707 +1500939 +2087465 +428842 +2354401 +1218380 +1078697 +1647935 +2489642 +15290 +2489684 +2087460 +1218383 +1428783 +1917918 +1028431 +54463 +759799 +220605 +2263629 +1218391 +1028443 +2588117 +1869841 +2168913 +1218401 +54452 +2263628 +15272 +220593 +1629845 +448414 +1171962 +54479 +2329451 +428844 +1802259 +1869821 +1558220 +1050744 +1675773 +964311 +1731180 +1104058 +15275 +1171964 +964300 +795004 +1171971 +220620 +89000 +1092899 +15302 +921355 +220625 +89006 +448422 +479081 +1428788 +1112148 +1218369 +768860 +89004 +2649561 +2588131 +2168898 +1693467 +15297 +448447 +1869835 +1693455 +1471972 +2168878 +2387917 +1558206 +2489668 +2300559 +1428795 +428857 +89027 +220586 +2588118 +2489688 +795029 +15296 +795010 +54481 +397058 +2168924 +2649575 +1263411 +1155932 +1802232 +2588140 +1500945 +2387910 +313836 +1328243 +157944 +2387900 +1662925 +964332 +2489661 +1753896 +1218366 +1917919 +157959 +1274061 +871815 +220597 +298937 +1067211 +1917912 +964302 +2329467 +2489638 +759763 +2588114 +795013 +2360954 +1802230 +795022 +1693459 +2168812 +1104060 +157970 +220604 +616092 +2439274 +1558145 +1832384 +2263624 +1162599 +404086 +1869839 +1869877 +2168917 +448446 +448438 +2588111 +1040666 +1869857 +220628 +2534957 +479078 +15284 +2588123 +921346 +2649564 +1171955 +533241 +89016 +1028435 +1078683 +448416 +1558126 +89024 +1802242 +15276 +1820162 +54442 +15282 +1802231 +964306 +466709 +428856 +1428778 +871811 +2168918 +15311 +871801 +400024 +448441 +466710 +89026 +1675772 +1558219 +616088 +1078688 +2329468 +298945 +54482 +1675775 +1917937 +1253791 +964303 +768865 +1175939 +15277 +1253789 +2387899 +2168770 +2087479 +964343 +1731195 +1558146 +158000 +157992 +384897 +2168975 +921433 +158002 +1869941 +2387970 +1185690 +1802267 +1218477 +2168992 +89067 +1820175 +690910 +533297 +533305 +251633 +2649592 +1917960 +2168989 +1185674 +89079 +1218495 +723128 +1917948 +384907 +298998 +1802277 +690897 +1112191 +2387940 +741761 +1028455 +1767100 +2069504 +795042 +1558244 +2649588 +251638 +365581 +1558281 +220658 +1028476 +89110 +2649615 +2649634 +1253825 +1558300 +2489708 +1500966 +251643 +1558311 +1869965 +1185671 +2168996 +251668 +723137 +365580 +1558294 +2329486 +196753 +2588167 +2588216 +220642 +1218469 +448460 +89038 +2387988 +1558245 +533320 +1832396 +1731237 +196745 +1382861 +1869977 +15328 +2168967 +1802269 +2791771 +1092933 +15330 +1328246 +1869889 +2588164 +690937 +1846046 +2649628 +2169002 +533319 +964382 +1218486 +1712297 +89078 +251671 +964356 +2649648 +384885 +1917951 +1185653 +1500967 +365574 +384884 +1832392 +1328261 +2387946 +466716 +448488 +1185675 +2534984 +2588170 +1869890 +89101 +1731240 +1869914 +1558247 +1869940 +89124 +723130 +89045 +1832405 +1731257 +1869946 +1500974 +723127 +1869954 +2588165 +220656 +220667 +2791792 +1675790 +964367 +1218425 +2649622 +533263 +1832403 +1869957 +1820180 +2168987 +533328 +2005302 +1253864 +89125 +2387937 +1050752 +251649 +2791782 +2588206 +1218485 +964370 +964390 +1832410 +1558280 +354802 +89046 +1185642 +921431 +384883 +448466 +1274065 +2489715 +285579 +390354 +1869982 +1917983 +795045 +2300568 +298999 +2649603 +1558248 +690898 +2300576 +2649652 +795087 +1253857 +1112183 +2489705 +1428816 +1028452 +365573 +1218418 +2791788 +1218415 +723136 +1558261 +1218414 +1558231 +2588169 +1675788 +89119 +1202040 +1007199 +2017838 +1471991 +723152 +871866 +2360956 +1975750 +723184 +1954606 +533373 +667967 +713881 +1218500 +1311531 +2857336 +1354106 +2388021 +1401194 +1988962 +466720 +1720087 +1311565 +2681632 +1753939 +1218499 +1375717 +2005357 +1243569 +292306 +723140 +738457 +273340 +2692007 +2649693 +2005304 +1293650 +1954590 +1731339 +2005327 +2388007 +1263420 +158019 +2755225 +667895 +1731306 +1975763 +1185705 +1354104 +616161 +1366402 +616107 +349800 +1985176 +2649691 +1366394 +1378284 +2721978 +2263644 +1218502 +1274074 +1471989 +1293643 +2283536 +466726 +1399456 +2005303 +1293639 +2699639 +1311525 +942795 +1375724 +2747429 +2005319 +2747448 +1202044 +1975745 +616268 +1870002 +1028511 +1311510 +1975768 +1007202 +1112215 +2857305 +616154 +2007675 +2731374 +2388025 +723154 +753965 +2755255 +1375703 +1396993 +651612 +2857332 +1391146 +1366421 +616264 +1375698 +1040676 +1731310 +2731372 +2755238 +1092942 +1391153 +1471985 +1731300 +2017844 +1975767 +1311506 +1007184 +2387998 +1328265 +1753903 +964408 +651617 +871862 +466725 +158043 +533337 +2005355 +1366433 +667932 +2731362 +1048058 +1132309 +1629857 +2699653 +2857330 +377145 +616202 +1125317 +795111 +2857372 +1375729 +313854 +1370884 +616131 +1954598 +1753938 +2007661 +2005334 +313850 +2278247 +1396986 +1366385 +2695271 +690969 +1354097 +158016 +2695281 +533360 +667975 +667984 +1311517 +2005326 +616112 +1760572 +533341 +1370876 +1753905 +1354076 +1375697 +732094 +2857398 +667974 +2755242 +324916 +2692010 +1274071 +1375685 +1375723 +313880 +1048059 +1370886 +1375719 +1731302 +2857416 +1328277 +324925 +2649678 +2729190 +1629863 +732080 +2710273 +1760571 +2681630 +1311519 +1969147 +2489731 +1390077 +1375687 +690941 +942798 +1243586 +690976 +723178 +2388019 +667939 +1040690 +2747428 +795115 +713893 +690968 +1471988 +616274 +1366406 +1753946 +299008 +1988977 +723169 +667890 +1779831 +2681634 +1954568 +795114 +1311524 +667933 +89139 +1125327 +1370866 +158010 +1328276 +1328287 +1040701 +273349 +1975743 +1396996 +1185704 +2721980 +871871 +2005339 +616185 +1870014 +1185694 +1311551 +1988964 +616255 +723181 +89135 +1302842 +1675802 +2588230 +2695297 +2649733 +196771 +2747459 +871886 +690999 +1870076 +158069 +691008 +2000719 +1028516 +1263426 +89145 +2791800 +1112227 +2309879 +1112234 +795123 +1975782 +871888 +1074793 +158053 +616278 +158050 +1143454 +436676 +533424 +1802286 +365593 +1629881 +1918007 +1520765 +1185743 +220696 +1382865 +616300 +1112233 +1218540 +220693 +2588283 +208025 +533456 +1112241 +1629877 +1202082 +1040702 +1693491 +2426325 +158046 +1784824 +1218542 +1202073 +1870092 +1067251 +723192 +1218523 +921449 +2489758 +2329500 +533445 +1731361 +1007228 +400027 +533420 +158066 +1961061 +1218538 +871892 +2005364 +1104070 +1817050 +1975781 +1202085 +921450 +1662935 +2755260 +651618 +691005 +220702 +1243596 +1802283 +533434 +1138923 +2588288 +285585 +1390083 +1870073 +871884 +2517425 +690987 +1243592 +1040705 +1074794 +723197 +2017852 +2352751 +2169044 +1832445 +1243588 +89146 +196764 +158055 +1846055 +324942 +1731357 +404090 +1028512 +1558342 +533429 +2439283 +2588282 +1092949 +158068 +1067241 +1067249 +871899 +196767 +1731364 +2005362 +1388264 +313908 +1293667 +1007314 +1243615 +54572 +1104106 +1040716 +1125368 +651623 +2263710 +1007278 +533477 +1918040 +1629920 +331266 +795165 +872071 +1104084 +964442 +2263733 +1500994 +2063586 +1846074 +616335 +359571 +1629995 +616419 +1753986 +390381 +1520780 +1040749 +746970 +1520791 +340554 +158132 +1048070 +54521 +1653689 +1104092 +2263701 +158283 +2169077 +942876 +2263678 +1218548 +2005369 +2263711 +1629943 +616357 +1630004 +691045 +1125376 +273394 +158187 +313940 +871944 +220708 +1937049 +54575 +1918015 +616443 +2063595 +1558382 +1399461 +1007328 +158276 +158274 +1731374 +54540 +359613 +292328 +2549354 +1074801 +1328298 +616392 +1918044 +158183 +2352787 +2263650 +313947 +1293660 +871984 +2352786 +2263667 +491865 +15371 +313945 +1653699 +2329510 +616390 +1817060 +533474 +1048065 +1832451 +2649750 +54489 +158140 +872044 +390410 +384921 +616406 +1243620 +942823 +377152 +1104089 +1040711 +158077 +292332 +1040718 +273396 +365595 +1040768 +1243601 +2368719 +2625798 +1375735 +1870113 +1903524 +54491 +1040754 +1937044 +1311582 +1753963 +208034 +1817079 +795176 +1720105 +1092954 +533493 +1253873 +533471 +292326 +273426 +89176 +2263712 +436684 +1007229 +616366 +2169060 +2263683 +2039893 +872127 +2689200 +1007299 +616400 +324964 +390445 +2588297 +1903536 +1040733 +1007250 +533488 +1040708 +964453 +651624 +2169089 +208036 +1817088 +1903535 +1104095 +1846059 +158267 +616393 +872106 +1007298 +1731373 +359607 +872105 +158246 +2263691 +1007313 +1472038 +2278249 +158102 +942824 +273425 +273404 +1903538 +1472011 +1028529 +1500998 +871953 +2063618 +1629978 +1125357 +313960 +1846062 +871981 +2278251 +1263445 +795161 +616306 +1007381 +668001 +377169 +54548 +1007346 +1817071 +1629898 +390405 +1753990 +1343971 +390444 +1629899 +54496 +1817057 +668006 +871948 +273421 +2649757 +2329511 +1753984 +1472027 +1520776 +158128 +377156 +1937058 +359557 +1040757 +872058 +436680 +1753985 +768879 +871917 +1731368 +359577 +354823 +872090 +871971 +2625818 +1007260 +2063583 +1007269 +2169054 +54514 +942847 +359588 +616439 +871986 +292319 +1653700 +768881 +1817059 +2588346 +292318 +2444689 +1472042 +54504 +54534 +158194 +54552 +1007240 +616391 +292330 +1125381 +158153 +327829 +54508 +1918009 +2263676 +158087 +1040715 +1937065 +1520768 +292333 +359599 +240402 +89161 +2588349 +2489763 +1629955 +1007288 +2791811 +1918037 +872091 +616345 +2169086 +1630003 +533482 +1060034 +616348 +324956 +2007678 +2695303 +1630030 +2169059 +1937050 +292325 +2278255 +1007271 +158275 +871923 +1918036 +871905 +616402 +795167 +2169075 +240390 +390436 +1918022 +942831 +616434 +2695299 +359596 +616410 +1558384 +2263649 +1104107 +2747463 +1293666 +768876 +390399 +1472014 +1401199 +2169070 +1784827 +2329507 +1007371 +1630057 +313969 +616440 +691072 +1501021 +2087503 +404101 +1218563 +89221 +15378 +1399462 +2300602 +1185774 +1779848 +2684951 +1675845 +2388056 +1558418 +407503 +921497 +921478 +1558413 +1185790 +1558396 +1802322 +158304 +1428853 +448519 +1274110 +2710281 +1138937 +1767104 +1832465 +1501001 +2426332 +921505 +2791814 +1662944 +2005372 +220733 +2169105 +158307 +404112 +89178 +15387 +795209 +1675819 +1428864 +448536 +1388272 +365599 +344163 +533526 +2087498 +15410 +407504 +15409 +335574 +2169130 +2169112 +1067287 +921488 +2169131 +2087515 +1802318 +1185797 +964487 +1731389 +2489773 +54579 +1328318 +1328319 +795202 +2169110 +964483 +2300591 +964470 +1067286 +1501012 +533543 +691074 +196789 +2388054 +448532 +89211 +1274105 +2169100 +1138939 +1558425 +1779840 +2169104 +1150778 +1870123 +2439296 +196784 +89227 +158293 +1185787 +533537 +1870127 +2439293 +1870130 +2169092 +691059 +1558449 +2169125 +1138944 +795216 +448527 +1050761 +2426335 +1162648 +327836 +1802320 +1832464 +335576 +2017854 +872139 +2489770 +1185782 +964460 +1675823 +2023463 +15383 +723206 +1405805 +1185785 +344161 +1675836 +15465 +15439 +15437 +15462 +1050779 +2489850 +1428900 +1558480 +1675860 +2489800 +1428935 +2329547 +795241 +1150786 +2649771 +1138956 +89235 +2039900 +1558513 +15418 +1712324 +964541 +2169214 +89283 +908352 +1558497 +964538 +196872 +2169224 +2360966 +2329543 +1712326 +2388064 +1428913 +1501039 +2329545 +1428881 +196840 +2329536 +1558516 +2329529 +2489792 +89250 +196837 +2169147 +196848 +2169165 +2169182 +1484963 +448551 +448562 +1630078 +1802329 +2439315 +1870150 +2329548 +89290 +15427 +1428894 +2300635 +404115 +2300641 +1185834 +2329528 +1558494 +2039908 +921564 +1428909 +903895 +2300614 +498053 +903885 +1870157 +2169200 +1050764 +1050768 +2489828 +89286 +15432 +2169193 +1870163 +2169197 +2329522 +1007393 +2169221 +1558462 +419755 +903896 +15436 +795260 +921560 +2489834 +89255 +1558503 +2489794 +1693525 +1731406 +1428923 +1428908 +2300613 +196835 +1662974 +2169170 +2300645 +964537 +419752 +964543 +1428887 +196834 +1501025 +964524 +2169218 +196847 +1185807 +1501044 +533549 +419754 +1918049 +1501038 +1067322 +1218586 +1558506 +1218592 +15423 +2649779 +2489822 +196817 +1558514 +964555 +1428893 +1067310 +1138950 +2039906 +208058 +1138954 +1218581 +1870161 +1112267 +1779859 +1040770 +89257 +2169174 +2489803 +1558546 +2300633 +1662965 +1185816 +196790 +196883 +1693550 +1662985 +1150794 +2388081 +1630083 +196875 +903915 +1155952 +2588430 +2360969 +54607 +1428950 +89350 +89349 +2169243 +2169227 +89321 +89325 +208063 +872163 +2169268 +2169259 +2300656 +795296 +1693537 +921595 +89329 +795294 +327842 +89351 +2439345 +158330 +2649782 +1558563 +292343 +89320 +2360967 +158331 +1558597 +1693531 +2329559 +1050782 +1630080 +2169236 +335585 +2588425 +89322 +1870178 +89355 +2535041 +1903543 +872152 +1172005 +89328 +964560 +365608 +903913 +158341 +2169233 +2300654 +313975 +1050785 +158323 +2087558 +220768 +1558578 +1802336 +1558557 +1558565 +2017855 +2588432 +795316 +2087566 +196899 +2489871 +15516 +795325 +1802340 +54602 +2169265 +872169 +1092971 +1558583 +872154 +1779878 +411207 +2283547 +795313 +479138 +2087543 +795306 +2169269 +964575 +89340 +1218615 +2439330 +533554 +1779894 +1328333 +1558673 +2169359 +903923 +2489888 +533606 +964611 +2489887 +691110 +759833 +2005377 +921671 +2169288 +1870236 +158369 +1501066 +1253878 +1558656 +903925 +365613 +2300671 +2489884 +795359 +903926 +1630090 +1558665 +795372 +1218637 +2169295 +1253882 +2388107 +1870228 +1870225 +240417 +2169285 +2063630 +795369 +158367 +1050788 +964601 +1501071 +2169326 +2588460 +2169322 +2005379 +1802347 +921627 +2649801 +1133462 +466776 +1311586 +2489903 +448584 +354836 +1731431 +2300664 +1870223 +1185850 +327856 +533625 +1720112 +240416 +1558615 +2489904 +1731435 +89366 +1558623 +1092981 +2169303 +1155955 +1218641 +89368 +964623 +89387 +872176 +2489912 +2388088 +903924 +2588455 +220786 +616462 +2489920 +1274117 +466771 +533561 +1870238 +2588451 +2283551 +1185849 +1112282 +723225 +2087573 +196911 +158370 +921672 +448563 +921673 +1274112 +533609 +1078731 +365617 +795365 +1040773 +1665318 +158357 +2649806 +1253883 +196912 +2169290 +2169283 +1870220 +2300672 +616466 +795343 +1731446 +533611 +1832489 +533610 +158364 +964629 +1767114 +616461 +1802348 +1693567 +795341 +723222 +1630096 +1975797 +872183 +1731420 +1802344 +533559 +533553 +1501070 +1558610 +795377 +1370897 +723223 +1428993 +2169284 +220781 +616460 +1488101 +2857531 +691119 +1975799 +2300690 +1218659 +1558708 +872210 +872219 +691127 +1832498 +158453 +872256 +2791828 +942909 +54652 +2169471 +2489930 +1767123 +1007418 +158375 +1078746 +158436 +251726 +2169417 +1429003 +2169480 +2791817 +390448 +651631 +1961089 +1520805 +1067353 +2731384 +1705009 +1218644 +2857478 +2352798 +89403 +1630105 +1630136 +158388 +1028557 +2649814 +313982 +1366443 +1558748 +691129 +1832507 +2857514 +921696 +1472083 +1067354 +1218655 +668018 +1520807 +208072 +795436 +2588487 +2731386 +741772 +448589 +2352797 +2857483 +964645 +1969158 +1078743 +1870251 +533643 +365624 +2588486 +158445 +158399 +795431 +54638 +2857475 +1832505 +54637 +2360978 +2263800 +1558691 +1705005 +1832502 +2857500 +2747474 +2857474 +713923 +2857525 +2169426 +1693579 +1007416 +390453 +2857537 +2263770 +921689 +1007419 +2489931 +1472099 +1832503 +2169397 +872222 +746976 +1218650 +2588478 +2857454 +2169422 +921679 +1328352 +533636 +2388117 +2489925 +2857491 +2360975 +2857464 +2263762 +616493 +795402 +15558 +1399465 +2489924 +1665320 +533669 +1558726 +1007420 +15551 +1558724 +533647 +2535054 +2263785 +691128 +2169419 +2710282 +1243637 +903927 +872275 +1293672 +2388115 +872247 +158449 +795410 +2857463 +89400 +2439358 +921678 +2857551 +872221 +220792 +616509 +2169373 +616488 +158437 +795396 +2169482 +616527 +2588466 +384935 +691123 +158442 +533685 +533672 +2857477 +1558721 +1802355 +2329572 +2169483 +1630122 +158418 +1501080 +2755268 +2388118 +1328346 +89394 +533644 +1472079 +1202126 +1520804 +1832510 +1961088 +158393 +1218658 +1832511 +872259 +1472095 +1218645 +795440 +1024825 +2699688 +2857548 +2169469 +921768 +158496 +411213 +196946 +1050798 +2421805 +220805 +220820 +1779898 +273461 +903936 +1488102 +331275 +1138990 +2169544 +1162664 +1429033 +331273 +1172015 +2489938 +1472115 +1675951 +1138979 +872319 +479146 +327890 +251771 +1630168 +2169501 +158527 +1779915 +1139001 +1007426 +2329579 +327871 +1802365 +1779918 +240429 +2439370 +411212 +2169539 +2169537 +1501096 +2087588 +2329578 +921719 +2300712 +335621 +196936 +273471 +1202135 +2283571 +2283561 +273462 +1172021 +2329596 +89451 +158463 +1870269 +2087587 +1675916 +1429044 +292347 +158518 +795462 +872313 +327893 +1092994 +1658344 +1138993 +196934 +1175965 +1067358 +1172012 +1050797 +942964 +1056064 +1820198 +921750 +1558809 +251775 +89470 +1779921 +964657 +2087590 +1150814 +2300703 +335617 +1870280 +349805 +1007438 +1150806 +327895 +1630166 +1558816 +921736 +1630160 +1779904 +89452 +1870270 +1472112 +1143466 +2169533 +1150802 +872322 +1172022 +1429032 +921770 +2489945 +1832516 +89477 +921766 +1820196 +1658342 +251743 +1078753 +1243644 +2169534 +251753 +1484980 +428946 +1050800 +1429051 +921738 +400037 +54662 +2489937 +1218687 +251770 +1133481 +2360983 +1056061 +1472111 +1056085 +2421801 +1653704 +2169498 +208078 +1172013 +1150807 +428944 +273454 +1050806 +795452 +251751 +1067356 +2169527 +251737 +921709 +251746 +158516 +89456 +1658340 +89437 +1767139 +251758 +89432 +768899 +2169530 +158530 +354847 +942954 +1558803 +1658335 +1155970 +1133480 +240432 +1820190 +1630180 +1501095 +1802379 +327880 +89444 +1429045 +1007429 +1202145 +2535076 +691186 +1028569 +533755 +491874 +2263892 +2263880 +54684 +872354 +759850 +732119 +943027 +668028 +2791921 +240448 +313994 +1169081 +2791856 +1779934 +2827924 +240462 +2263893 +2588535 +2588517 +2003347 +1366448 +964699 +872479 +2827959 +872463 +872511 +746978 +1060047 +2439386 +1705021 +365638 +273502 +1328380 +1328387 +616702 +668022 +1060046 +2169661 +1501101 +872510 +1007460 +616623 +713937 +1707038 +1846091 +2300724 +273524 +713947 +2169562 +533751 +964681 +768910 +2263847 +768907 +448606 +1354143 +2791992 +616553 +921783 +533712 +1954617 +54679 +2791949 +2169576 +1817104 +1007483 +2426365 +942993 +1056092 +2263861 +2791896 +616682 +1675962 +1040793 +1150818 +723251 +616548 +2791947 +872345 +735650 +377191 +2388154 +158668 +1832530 +964715 +1056087 +1007458 +1630207 +2827978 +1218689 +1263451 +1060050 +1832546 +331278 +1040796 +1630202 +377181 +1104146 +691165 +240439 +1328378 +1354150 +2489959 +2791969 +732122 +1104141 +872465 +2827918 +1007480 +335622 +1720124 +1104130 +2791888 +691160 +1630193 +872365 +872361 +744279 +616676 +1366451 +1366446 +1218690 +2263831 +921804 +1630203 +2489956 +1675961 +2000728 +1175975 +691184 +158554 +691144 +759846 +54696 +1630239 +872432 +1675958 +1870299 +616575 +964687 +616650 +921790 +533694 +2791852 +1169080 +2039926 +1630194 +942992 +2388150 +273503 +1133526 +2535073 +1007492 +795496 +1263453 +533736 +158652 +2263869 +872347 +2791935 +400046 +1185915 +1169079 +651635 +1175968 +2169579 +943004 +1630246 +273485 +616681 +273522 +1172030 +1472125 +466800 +1429071 +1731468 +2792013 +1707829 +2791903 +2263896 +1779927 +1520838 +1028573 +2827979 +1472147 +2535074 +795519 +903940 +251778 +1802403 +240458 +54697 +2169613 +158547 +2263842 +1169082 +158674 +2791873 +1988999 +1343984 +208098 +1093004 +2169570 +1311591 +2791923 +1084669 +872355 +691154 +384942 +1472126 +1753996 +732138 +1501106 +741777 +732125 +54683 +1630182 +2857558 +2588526 +1104123 +1175966 +314001 +616660 +1078765 +240460 +872428 +1143469 +292352 +2791893 +616532 +746982 +1846095 +2263827 +942987 +1375741 +713933 +616628 +872437 +2649824 +2791984 +616663 +1985191 +54688 +240455 +1558824 +1630204 +1218694 +2625837 +795485 +2263833 +466804 +741778 +1125391 +158625 +158638 +533733 +872413 +2169621 +1202139 +1870312 +1693598 +89499 +616550 +616620 +872449 +616625 +196955 +1007488 +2300729 +158581 +1501109 +448601 +1139008 +2791922 +616658 +251777 +273510 +616583 +54686 +1693604 +1172031 +2439382 +1501114 +1311593 +1558828 +1084668 +1665332 +1040789 +2439377 +1274128 +943003 +533750 +390460 +1028576 +1125394 +1870301 +746980 +2588556 +1630236 +964768 +2489978 +2169677 +1779962 +1133532 +89544 +795556 +2489986 +921861 +2490017 +2352810 +1918081 +2169675 +2490096 +1817120 +1630274 +365644 +2439398 +397102 +964774 +1779952 +327934 +1558928 +2169717 +1802442 +2169676 +1067455 +89564 +1769209 +1218751 +1007594 +872561 +15661 +2490122 +2439417 +1779983 +1202152 +397094 +964748 +1162689 +1802424 +448634 +15642 +2588590 +1007548 +400049 +448647 +1162686 +1155990 +240469 +1429079 +1143475 +1067421 +1104159 +448643 +196973 +1150830 +2490102 +2588584 +448624 +964771 +1067404 +466808 +1172036 +1162690 +1156016 +768917 +2439404 +2439410 +2490100 +1663010 +2169670 +220923 +220874 +1218724 +1802406 +15605 +1078771 +1707042 +2439416 +1263461 +1784856 +1162688 +89512 +2169682 +1784874 +2439401 +1779967 +1784861 +208123 +1074835 +1007526 +1067442 +2490130 +2490072 +1007582 +1007525 +1162728 +158715 +397099 +397112 +1870331 +1676008 +196994 +89514 +1156014 +964796 +466820 +1218715 +2329601 +1693605 +197000 +1802415 +404165 +466807 +15664 +208117 +1558895 +196993 +872574 +1520843 +2490013 +1067461 +872576 +1903569 +1007567 +964829 +428972 +1558880 +15633 +1832548 +1731474 +89561 +964791 +327915 +1067456 +795558 +1558903 +921826 +1802472 +2263911 +54715 +196980 +354857 +15658 +327925 +1078776 +964769 +365645 +327939 +220919 +327920 +15660 +2490038 +2490082 +1870401 +1243662 +54716 +1185938 +1675998 +2490015 +1779992 +158694 +1429082 +448648 +1832556 +158707 +2309891 +1067426 +964738 +89559 +1060062 +89506 +1558943 +1870392 +240471 +1218748 +1067398 +1780005 +1870332 +2490063 +1675969 +240493 +158709 +89573 +220894 +240472 +1903570 +1007579 +2588592 +1784880 +921846 +759870 +2169727 +15613 +1802443 +466827 +964740 +1162698 +2169733 +327924 +2490070 +158731 +1162741 +759862 +428974 +2490035 +54739 +327922 +1802448 +1870347 +1162709 +1133529 +1007544 +1675981 +1007535 +1067459 +1067407 +1112308 +1870377 +158745 +1780007 +1802432 +397103 +1169084 +1218704 +220922 +428967 +1558866 +1007592 +208111 +448607 +1162702 +89551 +964805 +448627 +1780025 +2490010 +331279 +2329609 +1675972 +197001 +1007583 +2263905 +1150834 +1155987 +1218700 +1007540 +419779 +943072 +208133 +1243674 +417252 +1663017 +943080 +54756 +251792 +15669 +533819 +365663 +1870464 +1802483 +1253906 +795612 +2588600 +921880 +964864 +795610 +2736281 +448660 +390482 +1218782 +2736280 +2588619 +314012 +1520848 +1263465 +1024827 +795609 +2439434 +400062 +2747492 +2388188 +2755279 +2388181 +1870405 +1802496 +1162754 +691219 +2588601 +1218804 +1060066 +1139028 +1156026 +754620 +921871 +1683505 +768918 +1870429 +691228 +1731501 +498065 +1007612 +1399472 +466839 +964901 +1731506 +1961103 +1870419 +2169749 +749520 +158780 +2490138 +1388276 +1162752 +1832561 +314017 +1218809 +1558965 +1731485 +2169737 +1501150 +1391157 +1870402 +1078778 +1311595 +1731498 +1078779 +359651 +1328419 +1218769 +616738 +1731507 +2490168 +1429083 +448661 +2300762 +872592 +158760 +2649867 +1676021 +1172040 +1218808 +2283579 +240509 +2649859 +691215 +1139029 +1218801 +753974 +2025736 +616734 +197008 +1832558 +1683507 +754617 +1918098 +964885 +2535089 +1007613 +1720147 +2017869 +479159 +2755276 +1172044 +533813 +2588614 +872596 +1780033 +479160 +533827 +354860 +1218771 +795606 +423349 +1328417 +1802502 +89624 +2169744 +1870472 +1274144 +1218757 +1007596 +1253902 +1937080 +2649861 +1243677 +1870476 +533811 +327958 +479161 +158778 +1007619 +943079 +1558953 +479157 +1676017 +479156 +1125408 +89597 +197009 +1683506 +1731481 +1676016 +2731391 +921903 +1870438 +411217 +1975820 +1676010 +2490143 +1870456 +1918094 +1870435 +1185975 +1870408 +1243681 +2388178 +795598 +921887 +400061 +1132317 +1392240 +1846099 +2007681 +220928 +1218776 +1078785 +921897 +533822 +1501148 +423343 +1630300 +2360985 +1218768 +479180 +1918123 +2517436 +1186002 +1559002 +1395410 +417255 +335686 +1218818 +197018 +921907 +448716 +1559004 +2169777 +327965 +1040809 +335691 +1802503 +533834 +1202168 +1328430 +1185992 +691242 +448726 +448720 +273542 +1870498 +365668 +1056108 +749522 +448729 +158798 +616743 +1870491 +417254 +2388211 +1559010 +491887 +1559011 +404193 +2869138 +448744 +1186025 +1162772 +404198 +1185994 +1162766 +251810 +1185977 +1802518 +448723 +1093027 +1139036 +2263918 +479184 +2736303 +1186017 +15693 +479188 +1104177 +2025737 +479179 +1663021 +1676029 +448725 +1218838 +2869133 +795637 +1253917 +404192 +2747520 +1186020 +1218841 +2169785 +759875 +448709 +404191 +2000751 +1501167 +691254 +1156027 +616746 +2169771 +795635 +1354164 +2300769 +1186007 +158794 +327967 +2869157 +54764 +2300768 +2869127 +448698 +448708 +1630303 +1870502 +2721993 +2169793 +2388209 +448695 +1186028 +448751 +921904 +2000742 +713964 +1676039 +15700 +2012254 +1802522 +466866 +2747521 +1056112 +335693 +354876 +2747522 +741798 +1757476 +448782 +2743308 +691265 +448769 +1832571 +2169803 +2514805 +2840522 +327972 +1918126 +2588635 +2588639 +448770 +344177 +1067474 +2012247 +299054 +749529 +365689 +2588634 +2828000 +314022 +1156029 +964943 +1218854 +691263 +1870516 +2869167 +2169805 +197023 +466867 +89673 +429008 +691258 +964934 +1139042 +1112326 +273547 +1378291 +2827984 +466872 +1093033 +749531 +1150872 +2827990 +1802523 +2020022 +533880 +752689 +2012248 +1186058 +2828006 +872608 +314021 +1243686 +1253930 +2649876 +1218853 +197025 +411226 +1382881 +498075 +1218875 +749528 +746993 +208151 +533872 +964925 +723272 +344178 +964938 +1870561 +89685 +365693 +54770 +1243690 +1186072 +1253939 +479211 +15708 +2012257 +1354168 +1903594 +314025 +2169811 +436719 +479210 +1802534 +466891 +1186078 +1328435 +1937083 +479217 +1218907 +344179 +1172061 +964957 +2439445 +1112333 +2649881 +448825 +1186087 +89686 +15714 +429028 +448824 +1870525 +1218893 +314023 +1392243 +2388222 +1870528 +479216 +691288 +1186100 +1870527 +1067487 +1218888 +479225 +220972 +616749 +1172057 +1186073 +479219 +466874 +691286 +1218919 +429018 +411229 +2300781 +1050831 +240524 +1186083 +390485 +744295 +404215 +448830 +921920 +400066 +1676057 +1870546 +1218902 +1218896 +1390094 +429025 +1156031 +448820 +533898 +1683509 +1218910 +2588648 +1202178 +1802536 +1731538 +2069515 +2388227 +404211 +1559030 +89690 +533899 +220974 +1870532 +1186095 +964969 +466907 +314037 +1712368 +491897 +448873 +2743322 +299081 +713972 +466900 +2681657 +1870662 +2649910 +691303 +1186109 +1903629 +220991 +2535127 +533941 +314044 +299073 +651655 +533908 +533933 +1125412 +1712379 +377237 +1870623 +89701 +533928 +1870601 +448890 +1218972 +448881 +533926 +1870666 +2847357 +921931 +1040816 +466912 +1870659 +1328443 +436732 +158811 +1067488 +2743317 +1918147 +651657 +1186117 +365716 +744296 +377225 +1975843 +365709 +1218964 +2869177 +1870643 +2649905 +1870568 +448885 +197038 +1243704 +2743323 +2731399 +1354176 +2743312 +365704 +1274156 +2847370 +2760059 +1263474 +299070 +158815 +466913 +691322 +1104192 +344182 +1243716 +448863 +691317 +1046478 +691327 +691293 +2743337 +691313 +616758 +2828019 +1024830 +2426381 +616766 +1243719 +466920 +429035 +1870591 +1903609 +533929 +651653 +365715 +691295 +1243703 +1870656 +1218934 +741810 +448897 +1870600 +1112349 +1870580 +1975840 +2535126 +1243735 +1186127 +436744 +1870637 +220992 +1243736 +2828036 +436739 +466918 +2535116 +466903 +1961110 +1870609 +15741 +377234 +1218994 +1676074 +1870753 +1975851 +2588668 +533981 +466935 +292400 +1903638 +1870719 +429057 +713978 +533986 +1219040 +2588690 +448927 +2169845 +365725 +616774 +533951 +1937088 +292397 +1780068 +292401 +1712384 +795677 +2039938 +1559052 +479260 +2649927 +1130275 +285605 +1186158 +2588667 +691333 +2039941 +691337 +1870758 +1186166 +1219042 +479249 +220999 +691332 +1676064 +1870740 +314077 +220998 +285615 +1918170 +1253963 +1870763 +1918177 +479258 +795675 +1870743 +479261 +1093103 +1676066 +1870748 +1559045 +2588671 +691342 +1870717 +1870701 +1328448 +1870754 +2169834 +429044 +240541 +795687 +2490201 +1086476 +314089 +1104197 +292402 +533955 +795683 +1382888 +15751 +299101 +299104 +299099 +1817137 +1125433 +2169851 +54780 +479256 +1172075 +1559042 +1028620 +15757 +1104198 +1870688 +1093099 +1219041 +1112362 +1186138 +365722 +1676062 +365734 +1023629 +1870728 +1630315 +533962 +479250 +1780065 +1870733 +1918165 +1870668 +1219035 +795682 +2649919 +1186167 +795688 +795704 +292389 +2588659 +1870760 +89729 +1093062 +221016 +2169817 +1501182 +299095 +354892 +1093085 +1870725 +1975847 +2692036 +1731572 +2747524 +285609 +795679 +964977 +2588689 +377243 +1731563 +479243 +1186150 +1093059 +2588681 +533980 +89726 +429063 +2005413 +616773 +2692037 +436757 +2588699 +314127 +1903667 +448937 +359688 +1370929 +1040822 +1630317 +377259 +1186194 +1918194 +197054 +1712388 +1401210 +2649935 +1382891 +1219130 +965001 +314128 +273570 +2649950 +365743 +2649966 +1870770 +1520862 +1243774 +616790 +1870804 +616787 +1253981 +1253977 +533992 +314123 +1186205 +1429094 +616784 +1219099 +299118 +292413 +1712387 +1903644 +479295 +1104209 +314102 +1559064 +1918196 +1219157 +491924 +691355 +314122 +1712385 +1243783 +2681664 +1472181 +2649955 +466948 +1028632 +1093121 +1028636 +314124 +1112379 +616794 +1918195 +1219136 +285631 +479272 +285630 +285622 +1219093 +292435 +1399484 +354896 +285635 +1253967 +1870772 +1186209 +314103 +1219090 +2368729 +1472182 +1104205 +479287 +1093124 +429080 +479279 +54793 +292418 +292431 +616785 +1186190 +89740 +1186204 +1918180 +2649943 +2360990 +1219091 +2649959 +292421 +479306 +1067503 +1186225 +1302853 +2388256 +354907 +299134 +208175 +1186224 +1975855 +292436 +1870868 +1832622 +2388281 +1186211 +965013 +1028652 +795732 +314162 +534021 +2169866 +1093127 +1630328 +1202224 +466972 +1328459 +1219174 +1243794 +1731580 +2792052 +872635 +2087635 +921963 +1918220 +1683511 +1559073 +1870878 +377270 +1139069 +872641 +292458 +1186233 +1028653 +1559084 +1903669 +1937100 +1757480 +1186231 +768923 +1903674 +466973 +1918224 +1169100 +1870850 +691359 +616800 +2169875 +1712393 +2169869 +285639 +1846105 +965005 +1104219 +1630320 +2681675 +1104215 +903975 +292472 +1731589 +795724 +292462 +1754017 +448976 +1918219 +2649974 +1472183 +2588712 +1559088 +1293689 +921973 +2681673 +1559069 +1007659 +1676076 +292470 +2792058 +448964 +1219166 +1125439 +221022 +466968 +466981 +314155 +1172087 +158841 +89769 +365757 +713984 +285644 +1104237 +479323 +1559079 +314147 +448962 +1918209 +158855 +908374 +429085 +1040827 +436782 +1219185 +377279 +2650001 +1870893 +1731630 +1040841 +377292 +1903711 +299157 +299172 +314190 +1046543 +1870886 +2650018 +1731637 +285651 +1243807 +2650023 +1712403 +534048 +1870917 +1731658 +1046544 +314211 +2681684 +1219211 +292494 +1046521 +2063657 +466989 +1219207 +479328 +1870923 +15791 +1731604 +292503 +1219224 +89774 +1093151 +759892 +314204 +1647955 +1243814 +1028680 +299183 +2649990 +1046509 +1219186 +359710 +616812 +2681683 +1870907 +1870895 +314228 +1046502 +1870942 +2649983 +616807 +292505 +1754026 +1731672 +1028694 +1086482 +1274177 +1028657 +377286 +2840532 +2692043 +1263485 +2650005 +1243804 +1731596 +534036 +1219225 +1024837 +1731641 +1243811 +1731607 +1028696 +2650027 +299150 +759893 +1731635 +1903697 +534032 +1046508 +2039970 +1028676 +285674 +1028667 +1870912 +1731625 +2840530 +1219226 +2692059 +2588755 +89812 +89789 +795775 +1951189 +2650041 +1429116 +89790 +2169892 +651688 +1219236 +965050 +965018 +2588774 +1501211 +795757 +2650040 +2023491 +2388291 +2588808 +2650045 +1328469 +1559124 +795764 +534105 +534064 +795765 +2588758 +1354223 +795766 +1302860 +2490226 +1559139 +534078 +1274201 +534125 +795770 +89781 +2169936 +89784 +1802557 +2329659 +1975872 +2169882 +2588792 +1731702 +534070 +479333 +89816 +2039984 +735656 +723302 +651689 +1870956 +2731421 +723316 +534122 +651694 +365772 +1328463 +1112400 +2588761 +965047 +1354232 +1975858 +1559105 +2588817 +2490215 +2023487 +1274185 +2588824 +1354202 +1274189 +1382893 +534100 +2169889 +1274183 +448985 +1870955 +2169932 +2087652 +2588770 +534138 +2388288 +741822 +1354227 +1354205 +534126 +651692 +89797 +2087637 +2588751 +1370951 +158888 +534092 +2588802 +1354212 +534119 +965028 +2699693 +2169909 +1712416 +89821 +1429133 +651693 +1354210 +1832640 +2039993 +2087641 +691380 +2588816 +2087643 +1067507 +2169884 +1961120 +723306 +1429132 +2490219 +534109 +1370935 +723309 +89811 +1302864 +1354211 +1274202 +534065 +89819 +1870948 +1040844 +1354242 +2588876 +2650057 +221041 +158893 +2684957 +2388358 +2650054 +1429171 +221050 +2535147 +89826 +2792064 +1975877 +691399 +691396 +1918244 +2329670 +534158 +1802577 +534164 +1472196 +534168 +1975876 +534148 +2008316 +1302884 +1693621 +651715 +1832643 +2170051 +2170026 +1951192 +1559206 +2170011 +651703 +1293696 +2170024 +2040008 +1370954 +2588831 +1429156 +1559179 +2650090 +2388322 +1274241 +2681690 +2040016 +795787 +1078802 +221044 +2699695 +795778 +616819 +1559193 +2588861 +1501223 +1186250 +616822 +1274226 +2588855 +2169955 +1007661 +2040013 +1354258 +2169938 +2275779 +795793 +1253996 +2388370 +1870967 +2699702 +1274246 +2170054 +1870987 +2388303 +2169992 +1429174 +1559164 +1354253 +1559223 +2361005 +2169990 +2040011 +795806 +2588845 +1989013 +2710318 +2169943 +651700 +872665 +965060 +2388382 +2170043 +1274234 +2169977 +1693624 +314246 +2170020 +651706 +534142 +1989018 +1429142 +221047 +2169982 +1941585 +2625841 +2170059 +1559158 +1559222 +221043 +1903720 +1559156 +1941586 +651717 +2681691 +2170004 +2169998 +2588849 +221052 +2588843 +795818 +1941581 +2388374 +2710316 +1559203 +2388360 +89823 +1093158 +2388323 +2388352 +795780 +651801 +89896 +2170169 +1693653 +735658 +2170219 +2170167 +1472213 +691419 +2588898 +2589003 +2170138 +2588947 +1693634 +299206 +2388386 +1871000 +2170204 +1328525 +534259 +1559288 +2588916 +2170079 +965111 +872674 +616853 +651766 +158944 +1658358 +872686 +943119 +1484996 +1918293 +2588948 +1078829 +158930 +1078868 +158915 +2490244 +2588942 +735660 +89858 +1007684 +616854 +2329736 +759902 +691413 +651742 +292523 +2588932 +1757496 +2588915 +1007675 +2588963 +1559309 +1007685 +723336 +1918273 +1007691 +2329692 +616858 +668064 +2170097 +2352815 +2040044 +1399493 +251854 +872700 +691412 +2588901 +2588930 +2329680 +2008361 +1040851 +872707 +2040034 +2588891 +2588946 +691402 +1007690 +2650162 +1274274 +359714 +872695 +2329722 +1705034 +872679 +2650117 +2087665 +534249 +2170205 +1429220 +2650160 +2588902 +651735 +89866 +2008344 +651815 +795879 +1007676 +2417340 +2722008 +2731424 +15813 +2170280 +1757495 +1693636 +2650196 +1871005 +2388430 +54815 +795865 +2170133 +2588975 +2329699 +2722018 +89888 +1630358 +2650184 +2650190 +1559319 +534338 +1354290 +89897 +1429204 +668053 +872712 +2170070 +1989020 +2300797 +1219247 +2388417 +1354281 +2388409 +2588907 +1961145 +1647967 +2170125 +2170149 +965142 +1028718 +965066 +158931 +1186253 +2040032 +2417337 +1078834 +735665 +1328520 +1328498 +1693659 +158945 +2329681 +2170223 +1871041 +534263 +1705040 +299211 +2722032 +2588908 +89865 +1219241 +2263928 +2040021 +2170160 +616856 +1472226 +921995 +1243821 +1559232 +651786 +1328504 +534238 +534335 +534233 +2588971 +2684967 +2650173 +1484997 +2699711 +292522 +1918294 +1328522 +1078878 +1918264 +534253 +534291 +534302 +2692071 +651760 +2007683 +285678 +2589005 +921998 +2417345 +616859 +1429227 +2417339 +1693645 +2170098 +534232 +1328497 +273595 +2588918 +2588951 +2650201 +2170069 +1655909 +965136 +273586 +2388399 +1918292 +1328524 +651781 +723335 +1918263 +795875 +2170295 +2170114 +691403 +2170068 +1328529 +1989025 +1941590 +534229 +534323 +158938 +1559240 +2008341 +1112421 +2017896 +2650116 +616855 +2040040 +1754035 +2329690 +1429229 +2388419 +2170283 +2170194 +158949 +1975883 +89942 +2170307 +1254006 +795916 +795930 +1559382 +1871064 +384949 +299231 +359716 +1559427 +872724 +534400 +2170337 +691448 +795935 +759905 +2170356 +534373 +331301 +1693680 +534377 +436790 +795975 +2388473 +691442 +335701 +2352817 +943124 +534408 +1820225 +2650229 +1871080 +384951 +1559386 +1028734 +965210 +1172088 +1254001 +534410 +534401 +1023655 +1802595 +1219276 +1731750 +1399494 +365784 +15833 +534352 +1559430 +89911 +299234 +691429 +1802605 +1328541 +795936 +691443 +1093170 +965179 +1067517 +89898 +1112458 +2263956 +15826 +1028732 +691437 +2170329 +1202247 +221093 +1559421 +1647971 +651855 +651837 +2170383 +1186263 +2170345 +1274299 +1429234 +1705047 +651840 +491946 +1817151 +1871078 +359717 +922028 +1243837 +1918310 +965198 +89977 +1112464 +15832 +2170310 +2170316 +1328538 +1937114 +158971 +534344 +965160 +922003 +534403 +1918326 +1219266 +2650221 +795961 +1559405 +795952 +922004 +448992 +534406 +221094 +89967 +2681705 +1112426 +2170393 +1683513 +965188 +795901 +1501240 +534388 +741832 +2170361 +1731758 +1918320 +89988 +1007722 +651851 +2388485 +89912 +965203 +1169105 +1074862 +735674 +1975901 +1302934 +2170351 +89949 +1112467 +89925 +1731761 +2792074 +384954 +1871096 +965185 +2650220 +534416 +89978 +1028737 +2329769 +1125452 +89983 +965152 +1328535 +1918329 +965181 +1731760 +1937117 +1559400 +2417346 +1074861 +1023656 +1219273 +1243834 +327983 +197066 +965147 +1559396 +359719 +221078 +299221 +1125451 +2388469 +1559409 +15841 +2170390 +1254013 +1693667 +1559443 +1501245 +1112457 +1780091 +1186287 +2087681 +54855 +1559480 +2792116 +1172098 +795980 +436793 +1501257 +2263958 +1871116 +1429252 +2792112 +1023658 +965232 +1186290 +449007 +2170460 +2535153 +2792113 +1472236 +54834 +1429268 +2170419 +1429260 +2170444 +285684 +943131 +534479 +467024 +1104261 +534446 +616908 +616906 +1186331 +449000 +2388535 +1501259 +359722 +429103 +54852 +1186318 +354933 +1961168 +15869 +616916 +1429261 +922055 +2329782 +90028 +221121 +759919 +1754041 +54825 +479356 +2388516 +1676105 +534436 +292530 +2490285 +1559458 +1186324 +158992 +2170467 +292533 +15851 +1630391 +90016 +616907 +429108 +15903 +922036 +2792131 +15879 +1658996 +90034 +2005424 +449013 +1186332 +208193 +1472237 +1731763 +1186280 +2087688 +759923 +1975902 +365810 +335703 +1559456 +221112 +2514817 +1186327 +1731773 +208187 +2170433 +1429240 +2792155 +1559478 +1731774 +335704 +2699734 +1328557 +2650253 +534477 +1712422 +479359 +2300807 +15885 +1112481 +1731768 +15850 +616910 +90027 +922035 +90032 +1731776 +467023 +292528 +2710338 +2710336 +922031 +2792130 +2722051 +795982 +2792101 +1802607 +292535 +2699733 +922048 +208189 +377304 +922051 +2063667 +1401214 +436807 +1112482 +922063 +1219337 +1219349 +1559488 +1051883 +922094 +2828070 +1903772 +292538 +54870 +1559509 +491961 +411237 +739907 +1903771 +221127 +1429279 +377348 +411238 +498101 +1104274 +1354320 +197107 +314284 +436799 +1112484 +1219313 +922096 +2792168 +292546 +2063666 +943148 +1150891 +1903768 +467037 +15910 +903992 +1067534 +922093 +1093215 +292551 +400075 +2439473 +1832670 +1263488 +2681708 +1093199 +197105 +872740 +1067537 +1918337 +54861 +1139080 +359746 +2490309 +90051 +1871139 +1243856 +922098 +1784887 +1139078 +943138 +2020028 +90036 +2170482 +54901 +796003 +15928 +1074863 +467075 +467081 +436796 +1104282 +2589037 +429113 +2650262 +54904 +1520887 +491960 +221142 +872751 +2017901 +54881 +331308 +197103 +2040067 +90042 +903991 +1784889 +1559489 +2170478 +2828072 +221133 +340599 +1087984 +365829 +1712429 +1243881 +208205 +15914 +449022 +221140 +1028750 +340607 +1846110 +467036 +1060088 +1093198 +1630408 +922075 +404231 +340594 +1186343 +943141 +943158 +903994 +331310 +943156 +1243889 +2017903 +292541 +273605 +467078 +429119 +15938 +335708 +1903784 +340595 +1219355 +965246 +2490302 +15927 +2828078 +354939 +292540 +534493 +1219300 +479362 +1243879 +796006 +1186346 +1784891 +240568 +1202284 +1186358 +1975913 +1219331 +54899 +1871161 +1559523 +616927 +1243861 +795997 +54902 +340608 +449046 +1429274 +922114 +314297 +1951210 +467059 +1802613 +1056128 +1093213 +15915 +479365 +872745 +1175987 +436798 +359749 +1028756 +534492 +159030 +1219291 +1871162 +2017902 +1219292 +1488108 +1243870 +922112 +340593 +1328560 +796000 +1390098 +1559529 +1395428 +348526 +90088 +2329789 +741841 +1820236 +1937125 +197114 +273607 +1663043 +365836 +359756 +872754 +314299 +15944 +2017906 +2170527 +299258 +467097 +1125464 +299263 +2589066 +1186377 +759929 +240617 +1975917 +1918341 +1820245 +2170520 +1046552 +1683515 +922128 +1520890 +467093 +2729213 +713989 +54911 +872753 +723353 +1150904 +467092 +449080 +904001 +1762693 +534515 +299261 +1401216 +449066 +273611 +15943 +344207 +922127 +354952 +1429297 +411243 +390508 +616932 +429135 +1676114 +1780105 +240605 +159060 +1658361 +159048 +1186383 +285697 +745245 +377354 +90094 +1820226 +90095 +1219370 +159064 +221173 +1186404 +1172112 +335713 +273612 +1067540 +943168 +240603 +15952 +240596 +240614 +1243908 +1202295 +1780106 +90086 +1399499 +90065 +1429283 +965264 +1683516 +1501288 +240609 +365837 +2170536 +365838 +314319 +1472248 +943167 +1903786 +1429289 +1871177 +467086 +208222 +436838 +2009878 +1871181 +159047 +1429288 +1501289 +1169111 +651861 +159063 +534495 +449059 +1951214 +1388289 +467102 +240616 +1630411 +1683518 +365843 +534511 +2300818 +436844 +1731782 +2549376 +1156052 +1172116 +240627 +273636 +1219386 +449100 +534558 +1086489 +411245 +2743342 +534577 +691508 +749567 +365845 +2426397 +292566 +922167 +1676125 +1328579 +377372 +796036 +1150913 +2023512 +411248 +2388563 +1370991 +534550 +2535171 +1354341 +449145 +904005 +159067 +1067547 +2009880 +1676122 +965283 +467115 +479396 +2023517 +1832684 +159076 +15965 +713994 +1832680 +691520 +344214 +404254 +1186427 +54930 +1871193 +1219418 +15987 +1186416 +449132 +221198 +2017917 +251885 +796047 +1202310 +534556 +404250 +1402354 +744305 +2549375 +1832686 +1311624 +429157 +2005435 +1143502 +752703 +365844 +904007 +1219421 +2005438 +1219405 +1780117 +1975921 +449133 +1186433 +2426399 +273627 +1780119 +1007753 +943184 +1388290 +221208 +616952 +922175 +1028768 +1186421 +273615 +377379 +922158 +404248 +449139 +713992 +327997 +221195 +752706 +15970 +796045 +1676133 +965303 +2005432 +1007766 +340630 +467107 +429158 +1104298 +467120 +965278 +1219390 +1050844 +1007760 +1186432 +1354344 +1693690 +922164 +2283592 +2283599 +1093220 +2283595 +965308 +15984 +1219397 +221194 +404252 +732158 +1975924 +479388 +354953 +285701 +1202345 +922187 +501626 +449224 +1520894 +467169 +1559551 +1311626 +2388598 +1219446 +1172122 +90143 +429187 +1112497 +314349 +1219444 +1093237 +1832694 +691540 +1559546 +436890 +344222 +1274336 +436909 +467147 +2589079 +16018 +534597 +197133 +1186511 +1375760 +1802645 +221230 +221239 +1202329 +616960 +1186471 +221223 +467164 +534613 +1354373 +2388602 +449205 +1186523 +1186491 +1219443 +965329 +1903819 +1067560 +240650 +344220 +1871269 +1399507 +221222 +534600 +1186492 +467160 +1007790 +1903808 +741862 +1093235 +467152 +1254030 +1202332 +2388583 +197141 +449214 +377406 +221233 +467149 +1903812 +498126 +377404 +1219431 +965341 +1060099 +714001 +2388605 +1186468 +436897 +2388592 +15997 +54938 +2699741 +449188 +16005 +1219440 +365856 +340636 +1871256 +922192 +1969169 +1559548 +159088 +2388585 +208236 +344219 +1293709 +1371003 +1871234 +359774 +365855 +1186514 +2589072 +90129 +498119 +1399506 +299282 +90137 +449201 +1186480 +354958 +2388580 +436905 +1254033 +467153 +1139125 +943197 +467158 +449225 +1112500 +240651 +467165 +1871252 +449159 +299281 +1354378 +377388 +1903821 +1040877 +1871239 +922190 +1780129 +359771 +1139127 +16004 +292567 +1382911 +2388586 +221240 +534586 +2792170 +1186519 +498134 +467141 +1328581 +723372 +534598 +1388293 +449207 +2650280 +292580 +965338 +449204 +1219460 +741857 +1219445 +1219452 +2388574 +2681711 +429183 +498132 +748111 +1802650 +2009537 +752716 +1378322 +348544 +16029 +1395458 +747017 +491992 +749591 +741863 +1846113 +449253 +417275 +534641 +2023521 +747019 +1219519 +1354392 +1395466 +359777 +2009885 +1219525 +2747573 +2589095 +1093242 +759938 +745263 +1186556 +1802659 +745259 +449243 +1401225 +1401228 +651878 +1399511 +965355 +314357 +467199 +1395457 +2017929 +2012322 +1133560 +314356 +449231 +1378326 +1186574 +479423 +738501 +16027 +752726 +1903838 +2755317 +1871306 +491994 +616963 +749585 +273646 +1559569 +1186544 +479441 +479430 +1378310 +449236 +354963 +749592 +1219532 +1162817 +1820260 +1937132 +436919 +2439490 +2170555 +1871319 +1501305 +1150923 +1046558 +1202357 +534623 +2760082 +1139133 +749588 +1390103 +449235 +723385 +1707058 +2747569 +1395453 +744308 +467208 +1918377 +741864 +1219547 +1918380 +1401229 +2747581 +2170559 +449259 +1388295 +2747571 +390530 +723383 +1024845 +1395461 +2012315 +240656 +1903840 +1871328 +1354398 +449232 +745260 +714005 +1903826 +1378316 +749593 +1871317 +1832695 +1186577 +491993 +965357 +534635 +534651 +1559568 +359781 +1202355 +1871303 +1559566 +377418 +534632 +965370 +872771 +922217 +1429308 +1802666 +479464 +2439506 +922216 +159120 +2490348 +2589140 +54961 +417280 +273671 +2589145 +273668 +1780142 +2439497 +2012333 +1832726 +2589109 +1007816 +943211 +922218 +1429311 +744310 +1243984 +1202372 +2421835 +365880 +299287 +1802665 +273670 +1219577 +285719 +411274 +1817174 +2650301 +344227 +492029 +479477 +390534 +2792189 +1007813 +1169118 +429201 +436926 +377421 +390538 +1244002 +2490351 +273675 +397149 +2589121 +1112505 +221250 +365882 +1104328 +273659 +1871343 +1871337 +1871346 +449278 +479481 +492026 +1263497 +691564 +1219568 +534680 +2017932 +2439503 +1243997 +292586 +745267 +2421833 +2426406 +240661 +1375766 +1328593 +1139141 +208246 +1056152 +2589114 +365879 +1802668 +340660 +1375765 +1918390 +436945 +1219557 +1328594 +2518530 +1871345 +2490340 +1254046 +2589141 +251905 +1175995 +251911 +1832722 +1937140 +796078 +467239 +498146 +2650302 +1243982 +2005453 +617010 +365910 +449301 +1903859 +2710371 +449309 +1023667 +1060107 +2869210 +492037 +732175 +314413 +54963 +1186611 +1104338 +1244077 +651889 +2792212 +691574 +467257 +2170570 +1244022 +617023 +377469 +1820266 +1093252 +436959 +449311 +2087696 +714013 +285720 +1219655 +1903861 +1244062 +1219621 +1244068 +1219642 +365893 +1903862 +616983 +2710373 +251915 +1293713 +1244035 +1202382 +2792241 +2681724 +377479 +2650312 +314382 +1647980 +1186618 +2857613 +1244032 +1219659 +616994 +159137 +449302 +1244075 +1219605 +2869205 +2828085 +1975951 +1328597 +2170573 +2087693 +534692 +1219601 +617024 +1104343 +467286 +467264 +617003 +436965 +1219592 +1244021 +292606 +1186608 +617037 +2681721 +2857583 +377491 +651888 +2857603 +365885 +2857576 +2681725 +299292 +1186605 +436964 +2857577 +534699 +340664 +2710370 +377484 +714015 +449291 +2792215 +365906 +1975953 +1219641 +1871367 +1202384 +2710364 +2170567 +1202392 +2869181 +2710385 +1731808 +365904 +492048 +2792240 +2792225 +1707843 +2170582 +377472 +2869184 +1219607 +2869195 +1354405 +159139 +744313 +390541 +2857592 +2869206 +617025 +397158 +449363 +498159 +1731836 +1501320 +2514847 +273707 +492079 +221279 +498153 +221304 +197160 +2490369 +340677 +534736 +449385 +1172150 +407560 +1162820 +1202397 +1731842 +411304 +741891 +159184 +359810 +741893 +1219716 +436980 +54995 +1871378 +617052 +359811 +492071 +159173 +479528 +2087705 +651898 +240694 +1676165 +292615 +1202402 +1802694 +1501316 +400088 +2170595 +335736 +745271 +1395474 +1186624 +354989 +90180 +344248 +943217 +449353 +796083 +1219680 +1472256 +2087717 +752751 +240708 +1007830 +273713 +479557 +417296 +299307 +752759 +1060110 +714017 +498157 +1676151 +354977 +411285 +449349 +1918406 +498152 +691608 +749606 +1399527 +723408 +90203 +2170596 +449323 +292619 +1219679 +739915 +384962 +299313 +449376 +208260 +54971 +2490377 +732188 +752744 +449402 +2040071 +1244093 +159194 +90183 +1219720 +159219 +1429316 +1676158 +407562 +1399528 +2650337 +221272 +314462 +492052 +449329 +2170611 +159163 +159190 +359818 +159157 +348558 +240713 +314442 +467333 +1067578 +429234 +273696 +273701 +90195 +467341 +2170598 +534701 +467308 +344244 +749607 +534708 +498151 +159230 +1328599 +1820274 +738502 +429230 +340671 +1659000 +617049 +314418 +1520904 +1871384 +498170 +90214 +417300 +390544 +1244095 +328018 +400087 +273685 +1067576 +90202 +240703 +1395477 +1219709 +354987 +335742 +617061 +1056157 +197155 +1780148 +723415 +872782 +251920 +159191 +745278 +240755 +1399533 +1202398 +741902 +197171 +796084 +240723 +479503 +1871383 +1186644 +1150945 +54978 +240687 +752754 +1871395 +411284 +437000 +159172 +1067583 +1244080 +498168 +208255 +335744 +747028 +54982 +292614 +221284 +159201 +377520 +1067581 +1219672 +1040883 +1676185 +2589156 +54970 +90197 +221296 +159252 +348569 +1903882 +752797 +2699754 +2087719 +348563 +617078 +752784 +1676194 +1395490 +1395496 +534745 +344250 +1139157 +1354420 +1395504 +1395481 +1784901 +1802695 +159241 +2589167 +745289 +1871408 +2710394 +273716 +1395491 +1395494 +1219736 +90221 +197172 +1780160 +752791 +2747593 +2490386 +16067 +691631 +2020044 +1802716 +1150953 +1399544 +348567 +752796 +1676195 +221321 +1820280 +534741 +1802706 +759941 +2792246 +417307 +1802718 +1139162 +16065 +1402359 +2760087 +1388303 +1390118 +1378334 +411325 +1665371 +1366475 +2755328 +1139153 +752801 +714034 +1705060 +1705064 +1429317 +1802714 +2069526 +400092 +1328603 +159233 +2731433 +331334 +1169126 +749623 +1871409 +2020043 +744318 +943249 +617097 +417317 +739917 +1302944 +1366477 +1067592 +617126 +348576 +492092 +617109 +417323 +2012353 +2005476 +1156077 +617104 +467359 +240787 +1780163 +1390122 +1401273 +2012350 +2792262 +2005475 +1139170 +534779 +2760103 +1186653 +1375773 +1401281 +2283610 +1399562 +749648 +534789 +2792272 +344256 +417327 +2760092 +314471 +651907 +1354450 +749646 +752814 +1390128 +1375772 +437024 +714056 +221326 +417320 +2869222 +1390126 +359823 +411347 +2104526 +492100 +1395514 +1244109 +749635 +732202 +1390121 +273731 +492094 +752838 +2857617 +1395532 +1375775 +417325 +2490394 +752828 +359822 +354991 +1665377 +273737 +2020067 +417324 +159265 +2017942 +2760094 +741914 +1784905 +208294 +2017941 +2857629 +872794 +534765 +1388306 +417316 +752840 +1390131 +749641 +1366490 +2005471 +796095 +1040886 +1366484 +2005461 +2017947 +747045 +741920 +1395508 +2426409 +1169128 +1401280 +1219745 +1395531 +744320 +732213 +390553 +2760101 +2020075 +1390124 +240789 +617113 +2857624 +1817191 +467354 +1244116 +467417 +922264 +943257 +1903895 +492109 +240818 +796110 +449443 +467396 +479599 +208295 +314475 +2681740 +437048 +314508 +1104359 +2650351 +1429326 +1219767 +492126 +2069531 +467395 +273743 +741923 +437035 +1202430 +2354416 +1172151 +872819 +467420 +55016 +2514864 +2490411 +2388653 +159268 +1186661 +365947 +492115 +285733 +492104 +1219762 +2069535 +467397 +534794 +2354432 +1172156 +492108 +2388614 +314496 +2354434 +723442 +159287 +2388616 +872817 +240796 +467399 +1186668 +2699772 +479595 +1186670 +1150963 +943263 +437039 +1028798 +1846127 +943274 +55032 +417332 +2857635 +492118 +1731851 +2354420 +449442 +314489 +1665381 +1559608 +377544 +1202426 +2354430 +1186687 +1630439 +90228 +1832779 +2729232 +404305 +1832762 +1244122 +1028795 +1559582 +1274357 +437049 +314498 +1176006 +1559598 +1559581 +1676211 +467378 +1176004 +2514863 +492123 +2354436 +1328617 +1244117 +1186667 +796105 +1820281 +1219777 +1024848 +377550 +16072 +390554 +314491 +617135 +1630446 +1244137 +467389 +1202439 +747047 +197178 +1559583 +732227 +1871418 +1244155 +1104360 +1274355 +292639 +1802727 +314476 +1832757 +943251 +1937148 +1846128 +467392 +723437 +492134 +1060119 +1172169 +1186774 +904021 +651911 +1731860 +221376 +2490412 +314517 +90266 +1871480 +1056172 +55058 +1559622 +1559641 +221360 +1139190 +922283 +1172173 +1219788 +2699787 +908390 +159336 +1871459 +344264 +1832789 +2069559 +2069554 +1559627 +1202471 +1871424 +467494 +377559 +159362 +1559619 +1961197 +90260 +1501333 +1139196 +617157 +534800 +1244159 +1871452 +1150966 +1903934 +1354473 +2589186 +1429332 +2388663 +2792297 +2388687 +1871475 +1186767 +796136 +2069565 +159293 +411361 +617151 +1996601 +2300841 +691675 +1918421 +1961198 +377563 +90261 +2170653 +1007859 +1007866 +1067601 +1186714 +1501340 +16104 +1918424 +197181 +1112524 +2388679 +437090 +796140 +2699786 +292668 +943280 +208317 +2681749 +922281 +1961199 +691673 +1007865 +55048 +2388692 +796142 +359829 +2699783 +449469 +1903922 +1202483 +292662 +922293 +159298 +2589183 +251932 +1186723 +159352 +2549378 +1093297 +1186779 +159324 +467440 +796141 +1871432 +1683553 +90233 +1263509 +1871478 +467461 +1871494 +651913 +1172172 +1186704 +872845 +449465 +1385955 +1186699 +340706 +197193 +796135 +221353 +738508 +2388658 +1093296 +1501341 +335750 +1104382 +1328634 +2439526 +467465 +872850 +1244157 +1378345 +16091 +1630461 +1139183 +285739 +404309 +479616 +437100 +1501337 +285747 +404312 +1559637 +2828087 +292644 +651912 +429270 +221370 +479614 +1871477 +1354477 +617168 +1244160 +1832791 +1395542 +159295 +965415 +314521 +365969 +1143543 +1392274 +1202451 +2589181 +1176012 +965420 +208313 +1676235 +16087 +1390134 +1559625 +2069558 +355000 +16083 +467427 +449489 +2792304 +1501346 +2170626 +2388688 +1219796 +1202479 +691679 +467443 +159306 +1663050 +1780176 +221369 +1046564 +1961189 +2170637 +2170657 +534805 +1559630 +1871437 +2650386 +16099 +1186760 +1186769 +1354472 +1067599 +377560 +400098 +904019 +2069561 +449471 +2388675 +1665383 +437105 +1382945 +449470 +796144 +251937 +1817196 +417336 +943275 +1202509 +2170666 +796134 +1832790 +437093 +1378347 +1354471 +449460 +1975966 +691658 +2589208 +1028819 +90296 +1219822 +479655 +2589232 +723468 +467503 +1802736 +1328641 +348587 +1989047 +1244179 +1172186 +1150975 +1903945 +1219816 +922298 +922343 +1832802 +1354487 +2792313 +796169 +251941 +1274366 +404321 +221397 +1028820 +479634 +2589224 +390563 +344278 +273769 +1219810 +2589252 +1254070 +2589206 +922307 +197225 +922322 +1007871 +723457 +1219818 +314546 +691710 +1202520 +534844 +377595 +467499 +1169135 +479653 +796148 +197223 +273771 +1172175 +2490451 +2490456 +221415 +741940 +1501357 +1024850 +390562 +2589197 +534866 +1731871 +390571 +1780192 +1172178 +943295 +922361 +1871567 +1219830 +534862 +1975980 +1244178 +1093313 +1676241 +922332 +1354502 +55073 +1219840 +2792339 +1112527 +2589226 +384967 +467515 +534868 +1328638 +1219863 +1731886 +1871506 +449517 +2699794 +1395550 +1780185 +1559699 +2792315 +344268 +2283614 +2840568 +534875 +1802735 +1023674 +872864 +796147 +2650390 +872863 +1125503 +1067616 +1989046 +1328645 +1731884 +759958 +723459 +437115 +1429338 +1501363 +1086499 +479652 +1918431 +449543 +922347 +2840552 +285758 +1112529 +1961207 +449560 +384966 +1219821 +197215 +429284 +467496 +467512 +90276 +314542 +2792340 +90289 +1731873 +741943 +2792338 +2005489 +479645 +1028809 +2439535 +1871534 +2650399 +534895 +965479 +617209 +467538 +449580 +273773 +377608 +16147 +240860 +691729 +1871591 +359856 +55102 +1559725 +872891 +1647985 +796186 +240855 +467545 +1676258 +1871597 +355017 +1832816 +90344 +1093345 +1559742 +1559775 +534920 +221445 +1397004 +617195 +1559743 +1961213 +2388729 +366007 +492157 +359857 +251945 +1028840 +2490475 +2589268 +467560 +796190 +328036 +55126 +55103 +1871574 +221451 +2170683 +197236 +1087994 +90339 +467573 +965461 +796210 +159433 +159427 +2283616 +2170706 +922370 +314582 +872919 +2087730 +1903966 +2170682 +1630480 +534905 +159398 +1731890 +1559708 +355016 +16156 +534899 +723471 +965468 +90320 +299381 +796208 +617189 +943304 +55094 +1093343 +908394 +355025 +479663 +221429 +492156 +1918440 +159397 +492162 +208334 +2388747 +273772 +159450 +16169 +159437 +159421 +331344 +479662 +2170732 +273780 +159420 +2388732 +617192 +221473 +359849 +534891 +1112540 +285765 +1817204 +617216 +1274393 +2722058 +1802747 +467547 +1731889 +1104409 +1989049 +872879 +159453 +1961214 +16159 +159425 +1485022 +437125 +691737 +492163 +437127 +159404 +1354515 +1202527 +1202523 +1871580 +1918443 +299373 +534909 +738511 +1472287 +872922 +1918441 +2388730 +1559715 +2589282 +1832805 +299379 +90334 +90327 +359853 +2722056 +1354528 +314560 +55084 +1559720 +240869 +1112542 +2650423 +617211 +534897 +2170700 +492153 +1162835 +2625844 +479667 +1087991 +1559771 +314549 +159405 +299371 +872902 +1328661 +1559767 +1832803 +2650427 +1559829 +2792542 +1028844 +2792637 +2792656 +2490510 +314585 +965530 +1104425 +965488 +1754065 +965485 +617222 +479670 +1731911 +1731934 +2793086 +2792822 +617230 +965515 +2650490 +2793039 +2650466 +2793001 +2792739 +2792601 +2490492 +2792374 +2792682 +2792639 +796223 +2490483 +2792955 +1371038 +796244 +2792676 +2792432 +467574 +2650488 +965540 +2792641 +2792367 +1219878 +738513 +965493 +2792578 +2793035 +2650454 +2650493 +1559809 +2792695 +1754069 +2792528 +1961215 +2792884 +2490498 +1559790 +1559787 +2792874 +691744 +2792475 +2793088 +534935 +534939 +1274396 +90349 +796240 +2792501 +2792471 +1754064 +251971 +2792891 +534963 +2650500 +2792466 +2792894 +2792777 +1559785 +355031 +1559792 +366019 +534952 +2792963 +796238 +2792719 +2681765 +965556 +2792560 +2792960 +355029 +2792699 +90371 +1371033 +2792431 +2681758 +965532 +2792700 +1112565 +2792648 +796233 +534936 +377613 +2792446 +2793043 +534968 +2792842 +965509 +2650461 +251960 +2793026 +251969 +90372 +872937 +796239 +2792561 +2792558 +1472292 +1559802 +1731933 +2650476 +2792584 +273789 +2792607 +221486 +2792373 +2792424 +1731917 +2792948 +2792887 +2792457 +2792541 +1630495 +2792821 +1989054 +221480 +2793066 +2792463 +1676263 +2792818 +2792461 +1731915 +2650445 +2650480 +691751 +2792430 +965531 +90360 +2692075 +1630499 +691758 +1559889 +159495 +90398 +723494 +691770 +535012 +1731966 +1976006 +2329826 +691789 +922410 +1976003 +1989073 +691783 +1951246 +377620 +904045 +2743355 +2170777 +535003 +1274422 +314588 +2170747 +745333 +1371055 +691797 +1328675 +2731467 +1219907 +651950 +2388766 +1274437 +1559877 +1104428 +2739907 +651945 +691773 +2170754 +1951234 +796270 +1354542 +651992 +1186873 +2650551 +872939 +1871615 +745336 +1274407 +872944 +449599 +1559850 +651974 +1162838 +1354574 +479691 +273795 +691790 +1388320 +872940 +159499 +535013 +1328682 +922408 +1028855 +2589289 +1731945 +745319 +535039 +1832828 +1186875 +691815 +1354567 +273797 +2170762 +498181 +2739911 +1976008 +1429370 +922406 +1274415 +1731952 +535044 +732241 +691818 +2017983 +1219879 +723508 +1937157 +1731942 +1780201 +796284 +1918456 +1951227 +1559856 +1395553 +796255 +1976002 +2170751 +1354573 +90383 +299401 +273791 +745340 +2087731 +1371050 +1354585 +723500 +1683556 +1354580 +1871624 +1254091 +1871644 +1382976 +2747612 +1976001 +1918450 +292700 +390576 +2739915 +691776 +965580 +2005516 +2388774 +922404 +1354539 +411374 +348590 +723503 +617238 +1989074 +965559 +2755339 +1354570 +1731969 +943320 +90396 +1630498 +535031 +1731935 +723483 +1274404 +1676273 +328038 +1731954 +2329816 +796278 +741957 +2329824 +2699800 +366037 +2005498 +2388767 +1559884 +1274403 +467582 +1186894 +714101 +2857673 +411376 +55150 +2514896 +2681770 +299420 +1976049 +2650562 +479697 +292702 +723516 +732249 +1731978 +796330 +691844 +1254104 +2589375 +1780204 +467580 +348591 +1429410 +2589347 +492175 +1472304 +759983 +314626 +922440 +328040 +691847 +251998 +1903995 +1202560 +1520932 +90431 +221501 +377627 +2589341 +965603 +796314 +1918474 +535109 +714096 +1354616 +1871683 +908397 +1219911 +159521 +535149 +285781 +617257 +1328710 +714086 +1382988 +617256 +965605 +1903989 +16219 +429314 +922427 +1385961 +965594 +1693707 +221506 +2063675 +240881 +1731980 +904047 +1846152 +159516 +377659 +449627 +1784917 +691866 +1244205 +1903974 +922421 +1007909 +1871672 +714087 +1244210 +535146 +1871666 +1274447 +768947 +1501404 +1395557 +2170822 +2170832 +2857677 +965616 +377632 +535091 +1186884 +1395558 +1976046 +741989 +397171 +221507 +1219919 +292705 +1328703 +1328711 +2170839 +1150980 +1676281 +159513 +535102 +197247 +429319 +714098 +744333 +1328708 +1274453 +90424 +1366505 +2170798 +1125523 +796323 +2170828 +1104450 +617277 +16201 +299423 +390581 +535099 +1676289 +1937167 +55148 +467578 +2439556 +2170815 +273817 +429321 +1559931 +1846153 +872955 +90435 +749680 +1559925 +1918472 +437146 +1520931 +467579 +90403 +1007912 +1918471 +714100 +359869 +1244218 +2439555 +745342 +1254108 +2490523 +1731987 +2020089 +1918481 +467612 +872956 +1630511 +437149 +1219922 +1871658 +739922 +2012398 +535162 +1559933 +2589352 +2857660 +617260 +16215 +1254106 +1395556 +2857661 +1176015 +273813 +2388788 +16207 +922419 +2388786 +1559913 +1007910 +1401333 +377658 +377644 +1501388 +741978 +2857656 +1104451 +1676295 +1311678 +1007918 +292712 +417340 +340734 +1501393 +535094 +1559916 +1202555 +732254 +723534 +2388779 +1051898 +2426418 +2589329 +1832849 +2857691 +796328 +1817208 +1429409 +16211 +1104446 +1371078 +535190 +723545 +1186910 +377661 +1832865 +429350 +1202569 +429327 +752898 +1244249 +617291 +2283620 +747060 +943347 +1093435 +2681775 +1007972 +366061 +1937173 +796357 +1007937 +1832857 +467628 +355046 +2170937 +479748 +359887 +714103 +292728 +366071 +2747614 +1904010 +437160 +90449 +691886 +943359 +2439568 +2589435 +404330 +2650591 +55178 +922455 +1676312 +749689 +16253 +366070 +292738 +1328714 +943343 +1683565 +1219977 +355052 +1112588 +1832861 +16244 +90465 +449657 +292724 +1871700 +449653 +159537 +437215 +273832 +965619 +1802781 +449651 +90455 +417349 +377692 +366075 +417345 +1918494 +2388831 +479731 +1093406 +2589388 +872974 +314650 +492204 +1093409 +872996 +1143555 +535188 +1244245 +492199 +535185 +965621 +1202563 +2388826 +1112592 +747058 +208359 +965639 +467647 +1501408 +1559943 +1976061 +2589390 +1731996 +492218 +1501417 +2300871 +1007943 +437166 +922464 +55168 +2012406 +467636 +1172201 +1871710 +1630530 +16232 +617287 +492209 +449673 +1220008 +437194 +1186921 +437197 +1093422 +1176017 +467618 +2589429 +2283619 +292734 +449682 +965642 +1937170 +2170892 +449663 +965647 +2514903 +159549 +366072 +796356 +2439574 +1202561 +2170926 +159571 +407589 +1676305 +1630519 +2170889 +1172198 +2747616 +159572 +1244261 +492197 +208355 +331351 +2023569 +691869 +299433 +1693710 +732262 +2170884 +1311680 +1732003 +299432 +1007961 +1104462 +1219960 +691871 +1904003 +796363 +467650 +1918529 +796350 +1086508 +2589422 +273831 +159593 +208362 +359883 +355051 +1244267 +2650579 +749687 +492229 +1254117 +1244246 +742010 +1520943 +377687 +748129 +2170925 +1871718 +1399585 +2170936 +1007955 +314641 +2388814 +1395561 +1028868 +377686 +1202573 +1382998 +1007982 +796368 +1767203 +1693711 +1382995 +90470 +437210 +417351 +1832879 +1244299 +273853 +1961232 +745363 +1125549 +2650607 +943384 +1220025 +2439577 +359896 +340746 +2857745 +1757518 +1028900 +1008036 +873016 +617328 +159604 +2589451 +1904028 +2012417 +1254145 +1220038 +1254137 +449705 +535217 +1871763 +467730 +2650598 +1186966 +2857769 +943372 +159600 +2549384 +437239 +535261 +2739925 +1202595 +498197 +1630539 +2857752 +2857792 +377710 +1871775 +2170955 +2589486 +714119 +1125538 +1676321 +1784920 +1172206 +759996 +208372 +1817222 +2857801 +2857796 +299442 +2857713 +1937188 +691888 +1143557 +617330 +965665 +1712481 +1712478 +1976069 +535225 +1375794 +1186949 +2009545 +437220 +90486 +1112617 +159648 +2063683 +240916 +498200 +796388 +1008025 +2514909 +1040927 +1007996 +1186956 +2857743 +2535189 +535214 +796391 +1220041 +965725 +1871757 +1040921 +922505 +2857742 +299446 +965691 +1989110 +90487 +55221 +292744 +2650612 +384975 +159645 +437219 +2170964 +252009 +1093438 +221530 +1244306 +355060 +873009 +535230 +437244 +501638 +390606 +467701 +449710 +1023683 +449709 +1056204 +714117 +1871743 +2857806 +2040093 +467724 +1560006 +922489 +355066 +355061 +965685 +723560 +2388840 +2857838 +535264 +1112598 +2650605 +1067651 +429353 +16275 +1871758 +2549385 +90501 +55223 +1244301 +535239 +467705 +2589464 +1871745 +411391 +2388841 +16278 +2087737 +2040097 +1904036 +742018 +1263552 +965695 +2063680 +745366 +352376 +159616 +2857735 +314672 +1630540 +2857849 +1028883 +1371086 +723551 +1125556 +501642 +340750 +429352 +943382 +299437 +2857755 +1501434 +437223 +1007985 +2040087 +1007991 +922483 +617323 +2857786 +467693 +1028889 +1046587 +1263553 +1904025 +285793 +2857763 +492234 +922485 +55203 +922506 +723548 +749697 +965723 +1693713 +691916 +1559988 +1501429 +922496 +1375793 +55219 +1712479 +796425 +2329831 +1112614 +745354 +159625 +2692087 +1093443 +2857709 +159630 +535253 +965712 +273855 +1186963 +1220045 +221547 +535277 +1655915 +501644 +221552 +1976088 +1371093 +252025 +2388863 +2650615 +1560093 +1560025 +1328734 +221555 +1293734 +1712484 +501681 +873038 +1429446 +2388864 +498228 +1303044 +965767 +1560065 +90535 +2650642 +1093456 +2087742 +1560036 +1274485 +1732062 +285799 +2857851 +2171029 +652022 +652027 +2005550 +691925 +252016 +2650649 +1354662 +1274466 +2069580 +252013 +1067663 +159660 +252021 +285798 +1941612 +1303028 +159663 +652032 +965793 +501658 +2857865 +535308 +159662 +1008050 +2650656 +1918553 +873028 +479791 +498223 +535275 +873037 +652034 +299453 +535304 +535278 +2650631 +1023687 +2329843 +2170978 +90531 +2008378 +1303052 +652036 +2857889 +2857866 +359917 +498220 +1560064 +2650628 +1937190 +2170970 +1303050 +2490570 +1186970 +1693716 +652028 +273865 +1918548 +2722066 +1560040 +2681797 +1274502 +1093457 +965764 +965805 +501688 +90513 +2650645 +1757524 +252048 +1754082 +1560061 +652031 +796462 +535288 +2589492 +2650657 +1871782 +1093454 +1429437 +796431 +1371092 +2490567 +1757526 +252055 +1328752 +796466 +1244329 +1084704 +2171038 +2171110 +2388894 +437250 +691933 +2535196 +1732073 +796465 +873069 +1274522 +742025 +1067668 +1244331 +1388328 +2417355 +1084700 +1937194 +1078915 +2388897 +1220064 +314696 +796469 +221562 +1871819 +1802815 +691943 +1429465 +535312 +1802811 +90562 +535314 +1378376 +467740 +1293737 +1078921 +2388885 +400113 +873068 +2650667 +2171114 +1008059 +1354672 +2589530 +1560140 +1078899 +1112639 +400112 +2171044 +159699 +159714 +90549 +535330 +1274517 +2589532 +744339 +1429489 +1630564 +1311687 +1429484 +738521 +1303058 +535324 +1429480 +2171111 +240935 +2171083 +535336 +922523 +377732 +1472333 +2171101 +1560121 +90567 +90556 +760006 +90576 +2388893 +1093462 +1328760 +691953 +1630561 +159718 +1429473 +1560145 +1871808 +2171073 +1078905 +2171065 +1220071 +1817234 +240938 +965850 +1274520 +221577 +873057 +691944 +1078913 +922527 +943395 +314699 +2171037 +965865 +359919 +1429458 +1676339 +668080 +1078904 +2171092 +273877 +2329857 +159676 +2171103 +2040111 +535328 +1871816 +449730 +535356 +535354 +2589511 +2388874 +1871824 +2171087 +1560133 +1560127 +535335 +873058 +1693734 +1274523 +1630557 +159711 +873073 +1186973 +2283625 +2171068 +2650664 +2171099 +2361037 +377733 +1403363 +760005 +159694 +1028908 +965827 +159704 +1093470 +965861 +2388881 +1008058 +1328784 +1560179 +467758 +2171143 +1871837 +349838 +1472343 +1802828 +1560190 +535393 +1328782 +796507 +349837 +1104513 +1162854 +1093476 +873076 +1328783 +1630575 +1802834 +2490598 +240942 +652066 +159728 +1560161 +904067 +1220114 +1802831 +390618 +2731484 +2589566 +1472341 +2650700 +273889 +2490594 +2699815 +221583 +1274545 +1303069 +1501446 +965878 +1705083 +1093479 +1311690 +2329879 +2171172 +796519 +1078932 +1676344 +1871838 +1008088 +739927 +1693738 +1732094 +535389 +1186987 +535362 +2171173 +55251 +1274538 +1989122 +1354692 +1220083 +16317 +691978 +2171174 +796517 +2171151 +2329878 +2300886 +2589550 +2650692 +691982 +349839 +1150995 +1732087 +965889 +2329875 +873099 +1732092 +1560197 +1693744 +2589562 +796533 +252074 +90619 +1186977 +1371113 +2710435 +159749 +252063 +2171138 +2171137 +2490601 +617379 +760014 +1254151 +2263979 +1429507 +90583 +1976093 +479806 +2171153 +1560255 +2171178 +965882 +760010 +2388930 +617380 +691959 +796503 +159739 +1244343 +1560171 +1220103 +2171175 +1560234 +1008089 +355079 +1560165 +1754089 +2300889 +429367 +1186992 +1186995 +873102 +1918589 +479805 +159729 +2171179 +796510 +1084710 +1274535 +1112657 +652056 +1732115 +1093493 +1429580 +1429520 +1693761 +965934 +2535202 +2023579 +535540 +535419 +1040937 +2388977 +1732130 +1560350 +796649 +1112659 +617413 +796661 +2087764 +908408 +692011 +617417 +1040942 +2490621 +652083 +2300891 +2650726 +796602 +1871906 +1093489 +2361045 +2388996 +1560303 +1429577 +796571 +90641 +16330 +873153 +1560289 +535437 +1871880 +1648007 +965938 +2650713 +1328798 +1560391 +285807 +1560305 +1732122 +2535206 +796566 +1560306 +2329891 +2650727 +2535209 +617411 +1560312 +2650751 +2171307 +2650729 +1705101 +1832890 +1976100 +965937 +2650770 +1732102 +1354701 +1560389 +617430 +1757538 +2681811 +2684976 +1520961 +796572 +535449 +692006 +159766 +159763 +2171196 +1125569 +2171298 +2388945 +535460 +292765 +1630609 +1403366 +2171330 +2263982 +1560319 +1560295 +2329896 +1560351 +1665389 +2589576 +1104521 +2361043 +1732103 +2275791 +1429550 +2650765 +1560273 +2008405 +535506 +1904105 +2388979 +299494 +1472353 +2710440 +314709 +90661 +1560367 +2087759 +1560260 +2699824 +2650768 +652086 +2171193 +2069584 +2710438 +2681809 +535410 +1303104 +2171335 +1187008 +796638 +692001 +2171328 +2650750 +873124 +299481 +1162859 +652076 +2171293 +1705100 +1732128 +1274575 +2388961 +796646 +1560336 +2388974 +873144 +2388978 +1501460 +2589588 +2263988 +1757537 +873105 +1648004 +1560346 +1093496 +285808 +2008407 +535504 +1399594 +2589602 +2171246 +2650711 +1630593 +796601 +1328797 +2793126 +2040140 +922553 +1028928 +273893 +1162867 +1104524 +2171316 +1560267 +1560377 +2388941 +2840576 +1254169 +2388955 +2650736 +2171317 +2589598 +1429581 +390625 +1560337 +1560390 +873104 +691984 +1676346 +2171216 +1104517 +2171215 +796624 +1328803 +1104523 +90628 +1989124 +1169157 +16321 +2040146 +2171258 +652085 +735695 +1630608 +1904113 +2171267 +2171183 +1093503 +2793207 +965971 +796668 +796686 +2793196 +1871925 +1274604 +1560477 +535558 +2389038 +2171450 +2171434 +535583 +1871924 +90675 +2793155 +1871938 +1560436 +2171432 +1802845 +1501472 +2793375 +2300893 +2490666 +2490651 +668088 +1354724 +2171363 +2793192 +2793218 +349846 +2793395 +1989135 +1354712 +1274599 +2793462 +2793496 +2755358 +2490643 +1871915 +2793387 +2793489 +1560424 +2490662 +2171387 +2793348 +2793168 +2389048 +159787 +90672 +1976107 +2040171 +2650810 +1028934 +2793366 +2793267 +2490649 +2793295 +90676 +1303136 +2040173 +1354728 +1093504 +535594 +1560447 +349854 +1989129 +1274611 +2793205 +2171458 +159793 +873165 +1732140 +2793413 +1354722 +873172 +2389024 +1093506 +1676349 +2171346 +2171449 +1951278 +2171380 +2793397 +2389012 +2793304 +2171448 +2490658 +2793439 +1354713 +2171405 +1354721 +90667 +2490665 +1293750 +2650786 +535552 +2747626 +2171350 +2650822 +2793239 +2008408 +2793396 +2589607 +2793241 +1220142 +2040172 +2650819 +1560441 +535555 +1648011 +159782 +1732149 +2283628 +2490654 +1501469 +2793237 +349841 +1961267 +1560451 +2793466 +2793314 +1989131 +2793356 +2389035 +535578 +1354714 +2793483 +2793280 +2389017 +965985 +2589627 +966042 +1560520 +2275797 +2329930 +1871949 +2389085 +535682 +966057 +1501474 +796748 +2171534 +723587 +922568 +2389064 +1187018 +535649 +652135 +2329936 +2329989 +1429630 +1961279 +2171656 +1078944 +1871954 +2389117 +2171500 +535679 +2490695 +2650922 +2650840 +1078965 +922572 +760025 +2589689 +90685 +966054 +796714 +1429708 +2490674 +1078958 +1429644 +1951294 +2171592 +2040204 +922582 +16342 +966050 +1429689 +796735 +2040186 +1951304 +2589682 +2490668 +2171658 +1354741 +1712499 +355089 +1303146 +2722097 +796711 +535694 +2087786 +1560519 +2589624 +1429653 +2171663 +2650864 +1871945 +1560511 +1429634 +1941649 +535646 +1560491 +652136 +2650879 +1560538 +2589639 +2171640 +535655 +966036 +2171628 +2171570 +2361047 +1429621 +2389102 +2650865 +1501479 +966023 +2329985 +966026 +2389084 +1732175 +221617 +1560495 +1560506 +1918649 +2589613 +2650908 +796726 +2589687 +1941629 +2171659 +2589698 +2171470 +2171655 +652140 +2589632 +2171582 +2040195 +2300902 +1560526 +1560531 +2490711 +535644 +760023 +2171603 +1429683 +1078980 +796728 +1187017 +2329954 +535677 +90703 +965996 +2171598 +2650919 +966032 +2490669 +1732173 +1560535 +2710453 +652124 +2329968 +2171687 +692021 +1802853 +2008420 +1941652 +2329992 +2171602 +2650882 +221616 +2171683 +1802852 +2650861 +2490683 +1328849 +2490708 +1560500 +966046 +2650883 +2329953 +2650889 +2389069 +1187013 +2171578 +2171512 +2171664 +2008416 +1951289 +1961281 +1028938 +2490682 +2389071 +535705 +221619 +2171975 +796862 +796794 +535790 +2650959 +1732205 +1429764 +285814 +2171812 +1802876 +2710461 +1028955 +2171727 +2171724 +2172027 +1802871 +1757545 +1918664 +2008440 +2171740 +2699852 +535810 +1371153 +796803 +535765 +2710462 +723591 +1293755 +2171893 +2087791 +1817242 +2171910 +1303152 +2361054 +535869 +2171872 +2171971 +2650986 +1328883 +535726 +1918697 +2275804 +1560677 +2171937 +1918712 +652154 +2171720 +1802866 +1202617 +1303158 +796842 +1941671 +1429730 +966103 +796760 +2087808 +1429794 +535731 +2171820 +796859 +1918679 +535854 +1429745 +535735 +2171976 +1079014 +2710465 +1501496 +2171715 +2171737 +2171818 +1429775 +2389195 +2589759 +2389122 +1328876 +1078992 +2389190 +652163 +1871998 +2589711 +2490728 +2389183 +2172016 +966098 +1560595 +652199 +2389173 +2171930 +1560686 +966134 +2171862 +1220155 +2172007 +2040214 +2171853 +2040221 +2330008 +966117 +1560581 +2736344 +966105 +2171954 +617458 +617454 +2589780 +2171987 +2171965 +1354758 +2417399 +1079002 +2171993 +2589764 +1378379 +760037 +1274696 +2172002 +1501488 +2650981 +966116 +1078989 +2589769 +2417386 +2263992 +2650947 +2040239 +1693789 +2171994 +2747628 +966144 +535769 +1560666 +90751 +1732190 +2040229 +1732179 +796840 +2439594 +2171823 +2389180 +2172038 +692029 +1429729 +1560632 +1371149 +1757546 +1429774 +2171773 +796762 +535889 +652193 +1220145 +2361056 +2171714 +1989148 +966131 +1501490 +535748 +2171736 +2589749 +535805 +735703 +2389207 +2171923 +2087794 +796804 +2171718 +1429795 +735704 +90748 +2417382 +2417400 +2000780 +2722105 +1676359 +2650953 +535855 +652189 +1560592 +1693787 +535867 +2722108 +2171716 +692033 +2589778 +2171754 +966118 +2535222 +1961285 +1693790 +2171764 +1429753 +2171921 +2650999 +2171861 +1560580 +2589733 +2171741 +1918673 +2330074 +2330004 +2171824 +535723 +796767 +796799 +652215 +2755373 +2722110 +1802873 +966139 +2171810 +1429800 +2589743 +2023616 +966125 +1371135 +2330067 +692026 +1871982 +2171758 +966088 +90734 +535781 +1429726 +2171913 +90796 +1560606 +796819 +2650928 +652213 +535770 +2000781 +1918670 +2330088 +1328887 +2087813 +2172031 +535750 +535886 +2171998 +652168 +1989149 +2171761 +535756 +2172015 +1560627 +2171947 +2172247 +1303191 +2651028 +2172217 +1220173 +2535244 +2651102 +2172109 +2490770 +16385 +1560797 +535906 +873198 +1328924 +2722117 +1023706 +2389267 +2172393 +2172085 +1941688 +1560713 +2354447 +796960 +1303173 +2172092 +1093527 +2389223 +966163 +1162900 +1274738 +2172195 +1328902 +1560737 +90838 +535967 +1303192 +535973 +2172206 +2172315 +366145 +2300914 +55265 +2389233 +1560812 +90853 +2389210 +2172097 +366165 +1254193 +652249 +2535238 +966164 +1941686 +1948160 +1712509 +1303196 +366167 +1560783 +535895 +2389264 +796882 +535923 +2417407 +2300916 +1274723 +2087822 +1693804 +2651060 +2275816 +1162918 +1429889 +2722134 +796919 +2172161 +366164 +1328927 +1303172 +796952 +2389231 +1162904 +2172115 +1560729 +1429826 +1328904 +2361086 +2172373 +366169 +692052 +2172395 +2389340 +2589859 +2172280 +2755379 +2040283 +2490762 +2172381 +366152 +2172041 +652236 +966172 +1274724 +1951317 +2172340 +1328893 +2300912 +1328894 +2172075 +1254177 +1254186 +1429854 +2008452 +2535239 +1220170 +2087826 +2389243 +2389240 +2490748 +2389225 +796977 +873195 +2651048 +2722124 +2651100 +1328901 +2389232 +2651093 +652231 +796933 +796968 +2172273 +1872027 +1472380 +1220159 +2651039 +2389213 +2651106 +2389245 +2040293 +2330130 +429379 +1560778 +1328920 +1162889 +1162898 +1941685 +1274718 +1429848 +2172336 +652251 +1872050 +2172141 +796903 +2172286 +2172063 +1028966 +2417405 +1560724 +2589834 +2172422 +2172382 +1941736 +16383 +796949 +90831 +1693793 +1169158 +2389244 +1951320 +796924 +1274734 +1254200 +2040341 +1560793 +2330137 +2490749 +1303174 +2172429 +1162901 +2389337 +1274747 +2389214 +1560734 +1162893 +966159 +2490766 +2172380 +796974 +796945 +1328929 +1941703 +1354781 +1560750 +2589864 +535896 +2172294 +1941735 +2535237 +2040302 +1429896 +796942 +1941701 +1951329 +2330117 +1040945 +2040277 +314723 +1560721 +90806 +2172218 +1872018 +2755378 +1693829 +2172357 +2389238 +2589867 +2651051 +2172400 +2729245 +2651107 +2172359 +2589843 +2439596 +2651041 +1303177 +2490745 +1023707 +1354784 +1274709 +1328937 +1328890 +2172265 +2172499 +197287 +90860 +1732247 +2651126 +2389381 +2651141 +2172440 +1961324 +2710485 +873207 +1274756 +2069590 +1093550 +617484 +1560853 +2535282 +2755386 +1093546 +536028 +1274768 +1274777 +2300923 +2535267 +2490778 +2589886 +535990 +2589900 +1429922 +742039 +1328955 +2040342 +2330155 +1732248 +617470 +1732244 +1274776 +273920 +2722147 +159827 +2330156 +617477 +2651119 +1008118 +2535250 +1961321 +2684989 +208386 +1560836 +1872055 +2389386 +1093552 +1079024 +617471 +692061 +2389409 +1008120 +2389375 +2651169 +2389412 +2589885 +2389395 +2535270 +299511 +922621 +2684984 +1472390 +966214 +796984 +1328961 +2172450 +2426426 +2330160 +2417410 +299512 +873223 +2589903 +2389358 +1328963 +617472 +2389397 +16395 +1429927 +2722146 +2710491 +1354791 +2012433 +2490790 +908409 +652261 +2172494 +1274773 +1429918 +1274755 +90865 +536027 +1328949 +1328964 +2172442 +221642 +1732231 +1328952 +2692109 +2005563 +1303204 +1560875 +252113 +55270 +2651182 +90873 +873213 +2389415 +1560845 +1274767 +966215 +1220183 +796995 +1429920 +536033 +2651149 +1560816 +2172474 +723596 +1872061 +1093540 +536001 +536013 +1187049 +366172 +2389387 +2263998 +873206 +2651143 +966218 +1560858 +1560865 +2755391 +2087845 +55272 +2589873 +873200 +2535261 +2710499 +692065 +2651147 +221640 +796986 +873201 +2300927 +922636 +2793538 +1162927 +1941752 +797025 +1948162 +2389437 +1732277 +2389471 +2389443 +2172686 +1067680 +536060 +1732259 +652271 +2172683 +2439600 +1560916 +2172682 +1274832 +2793578 +1472400 +2793506 +2172654 +2012445 +1472397 +1683578 +2172548 +536057 +2793511 +2793543 +1328975 +536078 +1630631 +2018017 +652276 +1274798 +1918736 +2589951 +2087850 +1104533 +2589930 +617498 +1429937 +1328986 +2172573 +2589929 +1802892 +2710508 +1872085 +1918735 +2589943 +1328981 +536080 +2172587 +2840586 +617489 +90897 +1941755 +2104529 +873237 +617507 +1429940 +340761 +2589947 +2743364 +2793558 +652265 +2264006 +1976190 +1560895 +1162937 +240951 +1429932 +536079 +159838 +2330173 +1961336 +2589965 +1560939 +2589922 +1354815 +208390 +797014 +1712514 +652266 +2828104 +797010 +2172586 +1732265 +2589969 +797032 +2389446 +314731 +536062 +1961341 +2651190 +1754104 +221646 +1093572 +2710531 +2793590 +1328980 +2389430 +2793562 +2172647 +1918720 +1274805 +1989177 +2172626 +1969187 +1802881 +1274806 +1676369 +1303230 +536043 +1780247 +1485044 +1501516 +299517 +90895 +1560926 +2793548 +873245 +966231 +2172681 +2172653 +2793589 +2172657 +2172592 +2731499 +1732255 +2535311 +1220201 +1429947 +1303226 +2172623 +908410 +314732 +2710516 +1918721 +1162935 +1941747 +1028977 +904087 +1254235 +2840583 +2000795 +2589970 +1720163 +2417413 +2793581 +2710512 +1961328 +1560899 +1560901 +1303240 +1008122 +1961338 +536053 +1303228 +1220190 +2590019 +2439616 +2330218 +1802945 +16419 +2590038 +2172812 +536099 +1693868 +2590043 +1399619 +2172842 +1560989 +1395575 +1079052 +1274860 +1429951 +2172713 +966241 +966236 +1354854 +159864 +692078 +1371175 +1354838 +2747643 +2330237 +2389492 +2589983 +1560976 +221659 +2172866 +2172757 +2330205 +1079099 +1693846 +2590040 +536160 +2172746 +2590065 +2439606 +2172839 +221670 +1560994 +1429966 +1560975 +536098 +2172849 +2172797 +536129 +2731502 +1354820 +1802906 +1328988 +2172751 +1303248 +2747639 +1079057 +2264017 +2651208 +2000804 +536119 +2172771 +16429 +1560954 +2005572 +536147 +536106 +1802922 +692087 +1693833 +1079090 +2300944 +692080 +1754105 +2736369 +221672 +1872091 +2490872 +2439607 +1429950 +2300950 +1802913 +16430 +90921 +2040386 +2330215 +2172852 +366181 +1693857 +2087884 +1303243 +55285 +90929 +1354871 +2590063 +966252 +1802939 +2172795 +1399612 +292783 +1693870 +2535335 +2651199 +1079071 +1354819 +2172740 +2172756 +2736365 +2172701 +2590064 +2172855 +2008488 +2172848 +16437 +1383014 +1079048 +2651200 +1501529 +966247 +2172775 +2172869 +1079068 +1079089 +2172789 +1693848 +90934 +221658 +1162958 +2330204 +1560992 +1079078 +1918739 +2590009 +2172718 +2172739 +1395570 +2008475 +2590030 +2300953 +2172738 +2699877 +1079098 +90943 +2535340 +1872095 +2490862 +2535344 +536126 +2172861 +1328992 +1802919 +2710540 +2490850 +943424 +2008479 +221660 +1403370 +1693845 +1354844 +2172731 +2743365 +966244 +2300954 +1067684 +2692122 +2389509 +1329015 +2747657 +2330309 +2172992 +2330425 +2173106 +536262 +2087929 +2173081 +2173004 +2755457 +2330383 +2172938 +2040399 +2743369 +2535357 +1501549 +2755416 +2172944 +90972 +2439652 +760069 +2330335 +2389513 +2330320 +2731524 +2330490 +1561067 +2173082 +2490962 +2710553 +2330477 +2330448 +2040392 +2172941 +2330247 +1976211 +1780274 +2330250 +2490923 +2736390 +1941773 +1941782 +2330337 +2330330 +1941794 +2439649 +966275 +2491023 +2300971 +1067689 +2684995 +1976244 +2490895 +2173038 +1151008 +2590078 +2490915 +2491030 +2490978 +2417416 +2651231 +2330381 +2710588 +2330351 +2173057 +2173110 +536248 +1732285 +2439655 +760077 +797079 +2330360 +2172886 +2172901 +2172946 +2012498 +2490954 +2710607 +2330325 +2699886 +1501560 +2490959 +2491018 +2172935 +2330399 +692091 +2731523 +16466 +1976226 +1872126 +2040486 +1941796 +2172903 +536195 +2491025 +797095 +2330307 +2590101 +2173009 +797076 +2012466 +2300966 +1676385 +2731505 +1941768 +2087934 +2699885 +1220208 +2330443 +2012486 +2389512 +1976238 +2040400 +652292 +2490985 +2490906 +2755425 +2710547 +1976206 +2018055 +2490902 +1151005 +1941761 +1872104 +2173075 +2040471 +1561056 +2330424 +1961374 +2491020 +1561069 +1976239 +2172973 +536253 +2699883 +2173100 +1187068 +2040426 +2755423 +2755433 +2173090 +2330464 +536277 +2330261 +2590131 +536255 +652291 +2040405 +1329012 +2087906 +904090 +1872116 +2330376 +2710595 +1561043 +2651230 +797067 +2330410 +2173035 +536208 +1501535 +2439641 +2040478 +2755435 +2087946 +2330249 +2755427 +2685000 +2330413 +2172919 +536189 +536240 +2590127 +2590154 +2172979 +1329028 +760075 +2173088 +2330416 +2330258 +2330427 +2173055 +1961379 +797071 +1067697 +2040469 +760066 +2087921 +966297 +2330463 +2173002 +966286 +1961403 +252119 +2590108 +2172882 +2087916 +1329005 +2172957 +2172977 +2389508 +2651225 +1780288 +1561023 +797106 +1429989 +2491060 +2330526 +2173130 +966337 +2283647 +2173151 +1561076 +797125 +2439702 +90991 +159869 +2027017 +1162966 +2491056 +966354 +2330506 +1561083 +1429980 +197300 +1405844 +1780295 +1079103 +966343 +2069606 +1802947 +2173164 +2027018 +2173200 +2173218 +2173199 +16491 +2173173 +2027012 +797100 +397181 +2173149 +2173157 +2173230 +16473 +2027011 +1429984 +1429992 +1561079 +2173193 +1430006 +2300982 +2426434 +1187081 +2330499 +2173123 +2040505 +328058 +797108 +2173185 +2330498 +2389521 +2439699 +2330518 +797123 +2173176 +760083 +2069596 +1430008 +2087953 +2173152 +1561144 +2491090 +2087993 +1430026 +2301023 +2173364 +2087987 +2301015 +797197 +922654 +2173371 +2173290 +1485054 +1693880 +16526 +922659 +1663073 +2439721 +1767211 +2491116 +2426442 +1162985 +922666 +2301005 +273923 +397187 +221678 +1405869 +2040517 +208393 +797146 +91009 +1802955 +1162982 +2439720 +1561148 +252130 +2087994 +2173236 +797191 +1802953 +1430028 +252132 +2301044 +797182 +797179 +91005 +2301004 +1405880 +2087976 +1561113 +797172 +2590166 +1676396 +16545 +55290 +1501582 +1430025 +331365 +2590167 +797169 +797214 +1561129 +2301031 +797148 +2491130 +943426 +1162968 +1802960 +2330530 +1872132 +2491084 +2087973 +2173234 +797200 +91007 +2439714 +2301025 +2330562 +1561150 +904103 +1501584 +2301026 +2301034 +1520984 +1430045 +1162989 +692121 +1904119 +344320 +536324 +2389530 +1561170 +1329043 +1630676 +2264042 +159914 +2040553 +2173391 +735713 +2173382 +652300 +2389535 +208394 +1329039 +536280 +91035 +1008138 +2722193 +617526 +2625848 +617570 +1084717 +617534 +1832944 +1561166 +1472433 +2590201 +536308 +723607 +1093575 +797251 +159912 +159886 +2040550 +2088001 +943440 +1561156 +617565 +536298 +617572 +159897 +1169171 +2040537 +2389531 +714127 +797233 +221685 +1630685 +1561157 +2590189 +1403381 +1520976 +536315 +797226 +617567 +692125 +2264030 +768961 +536305 +617563 +2301048 +2439727 +1961404 +1561198 +159876 +1683582 +1904123 +652306 +2264032 +159895 +2389541 +922675 +1630651 +2590175 +873323 +1088001 +873310 +1403379 +2173425 +1754112 +2625849 +1354877 +1220217 +91027 +1630674 +2173412 +2008496 +692100 +1969188 +1846166 +1274889 +1712522 +2681817 +1343993 +2755460 +536302 +873275 +2173378 +652307 +240956 +1472411 +617541 +692122 +873290 +1630659 +1008125 +617540 +617544 +2173380 +797239 +1904120 +1705109 +536283 +1705111 +91030 +873261 +1472414 +873418 +617622 +1472465 +2389622 +159946 +1472487 +2040566 +617592 +2651246 +2173608 +1872139 +617640 +1501606 +2069608 +873366 +536414 +1028983 +2651269 +1430097 +2000808 +922693 +1872142 +2264067 +2651268 +692157 +1472473 +652329 +1220219 +2173534 +1918757 +55314 +1430082 +2023656 +668110 +652330 +873407 +314744 +797266 +2590212 +1561251 +1244359 +91042 +797303 +2651271 +617690 +1220222 +1802968 +1561215 +617660 +2173519 +617574 +2699893 +1008152 +2330587 +1303267 +1093583 +1112716 +873343 +1663080 +873402 +1561313 +2173456 +467782 +91047 +2389574 +617598 +2275830 +1561256 +498252 +479840 +1093587 +2173528 +467775 +1371196 +2040576 +1918746 +873387 +1561217 +2330601 +1472481 +1354907 +2173474 +873424 +797265 +2264050 +2088002 +2173562 +966397 +2330583 +797279 +1079117 +1630698 +2389561 +2535373 +2710612 +652316 +2264070 +536331 +1918759 +159963 +2173498 +1561314 +1630706 +1008167 +2590231 +299519 +873406 +652334 +617619 +797273 +1918756 +2173554 +1630745 +2173594 +2651270 +2173580 +617588 +2699892 +1561279 +536413 +797254 +1008153 +479852 +1472453 +2173513 +617631 +735723 +159932 +159915 +617644 +797272 +1630718 +617658 +1104560 +1780329 +536423 +873413 +2173476 +943453 +1430073 +1961410 +1561270 +1472477 +1630712 +197308 +2590229 +2651276 +1561214 +2389569 +159925 +1187084 +966407 +159919 +2330611 +2491147 +2173454 +1630704 +2173544 +479853 +1832949 +873430 +1561211 +536385 +2173504 +742058 +873426 +536400 +1561237 +1008154 +2389555 +2389594 +1561240 +1354889 +1472482 +1329056 +617682 +1561259 +617666 +922692 +536339 +1472476 +2491150 +2173551 +873404 +55309 +501732 +1162994 +536394 +2264058 +617579 +797292 +479838 +492295 +692161 +2651264 +873388 +617627 +1008141 +2491153 +2330598 +617624 +2301055 +1104549 +1079123 +1630720 +1630690 +2590218 +617581 +1008146 +943455 +873403 +160049 +1561372 +873510 +797359 +2857908 +366187 +732283 +1732389 +760107 +617721 +314785 +1029022 +2389639 +314907 +1088002 +2793630 +1125585 +1104605 +273981 +1104596 +1135002 +873463 +273975 +1329057 +1732335 +1130287 +160061 +314794 +1008187 +159977 +314867 +160066 +273959 +1202634 +1676412 +1104606 +1172228 +873487 +873464 +1086526 +314890 +359950 +2651301 +797334 +314774 +2389685 +2590240 +492309 +2389675 +16588 +1561359 +1918773 +1263558 +377771 +240969 +714136 +1683588 +966408 +2173687 +479887 +1561380 +1023724 +2439732 +873503 +355098 +1244394 +2173618 +299554 +1254243 +760111 +299551 +536451 +1872199 +1732397 +2681827 +2389660 +292836 +16590 +292845 +1244368 +1488124 +1872194 +159999 +2590246 +1918767 +1732372 +1561358 +1093611 +479886 +221691 +2590242 +437288 +1172250 +479884 +2173631 +1040980 +873478 +1732361 +1244381 +873489 +1244412 +2173629 +1904153 +314886 +747064 +2681847 +797364 +1754120 +299528 +1802973 +359939 +1202632 +943477 +299552 +160034 +943464 +1832953 +2590270 +2389658 +221694 +1202639 +273984 +292847 +377760 +492317 +873523 +2651319 +1630748 +2514930 +314899 +1561342 +314856 +1220233 +285841 +314762 +1104599 +797341 +344322 +1918760 +760118 +1274910 +1093600 +1040983 +2173677 +2739928 +1220236 +760115 +1244408 +467790 +2651330 +2651292 +1732347 +2681835 +2088015 +2330632 +299557 +1918775 +2793633 +1244369 +873462 +252149 +314819 +2590255 +1024861 +744359 +873455 +2173636 +908416 +1561379 +437262 +1676413 +1088004 +2368747 +2651307 +1244403 +922697 +536450 +2869235 +1409464 +966425 +55345 +314880 +760116 +1732393 +1029024 +1244364 +1683596 +437267 +160060 +2590266 +1732321 +2389651 +1023721 +1172255 +1561323 +1754131 +2173635 +314831 +1040973 +1172220 +240971 +160018 +692173 +492306 +1244396 +159983 +2361114 +2088020 +1254247 +314783 +1732354 +1872207 +1918762 +536462 +1754143 +1172247 +159974 +292850 +2173630 +2793637 +390643 +377759 +91078 +1872209 +449779 +160020 +314816 +1630761 +159987 +1104563 +314803 +797378 +1051906 +536433 +797358 +479872 +390632 +2651294 +1046595 +1008177 +160065 +411392 +1187118 +314857 +314791 +1104600 +1303276 +1732358 +536465 +2389656 +417353 +2651324 +2389647 +292800 +1040971 +1220247 +1904140 +1754127 +2368756 +1392283 +1074884 +241008 +1561397 +1501618 +273998 +221721 +2828140 +2590279 +1630793 +797396 +335784 +400135 +1375799 +922731 +314913 +1086529 +2173734 +943498 +1784943 +922719 +348634 +2173700 +2018065 +617733 +91120 +2828137 +437290 +160125 +1501613 +221724 +2173713 +2173726 +943483 +752906 +340772 +160081 +1156115 +1139227 +1169185 +1008226 +91106 +417366 +943492 +241022 +344336 +390646 +745370 +404373 +1780364 +1676441 +752902 +2018070 +1202647 +1074882 +1401343 +404360 +197318 +2088036 +797388 +1665401 +407604 +208429 +1430119 +1561392 +966452 +1802985 +723632 +922726 +873548 +966450 +1976271 +768968 +1802997 +16597 +274004 +536471 +2514933 +2012514 +437296 +1904171 +467804 +241035 +2426456 +966448 +2847383 +208439 +922740 +16592 +2491197 +2439752 +1802992 +943500 +2426451 +348627 +1067732 +2747676 +467803 +1561402 +2793647 +1008231 +344337 +1143575 +160109 +732290 +285844 +1401347 +1918781 +1676459 +1143565 +2301068 +1163012 +1872215 +873536 +1244421 +160136 +1187126 +1067745 +1941810 +273992 +160094 +1187122 +1665400 +55382 +1244415 +904116 +2793653 +2439738 +252154 +1067752 +943488 +241026 +1501614 +2173716 +348609 +749700 +240998 +397196 +943510 +197323 +407603 +407611 +331380 +1135003 +1378382 +2828149 +208426 +407599 +1802977 +2088023 +91119 +1163014 +2828157 +55384 +160106 +404370 +1008222 +908426 +1392285 +745371 +411412 +1402377 +404364 +340774 +797405 +348633 +922735 +1561394 +904120 +348606 +873534 +2088041 +1151038 +1676440 +2828153 +1008230 +943497 +273994 +2747672 +2747675 +1139237 +536481 +1780348 +1659008 +1780392 +1187128 +55422 +252158 +1169200 +1676477 +335793 +467822 +1254263 +355101 +1784961 +1683637 +331397 +55453 +2439804 +437305 +1008267 +1904172 +2283671 +197347 +411460 +966481 +2793684 +348640 +1139271 +1139277 +160223 +467827 +2491243 +2283676 +1143601 +274049 +160205 +467811 +1060164 +1780402 +274044 +1008276 +1817277 +2514952 +467838 +221786 +252164 +2828293 +467819 +1074888 +331389 +1767225 +1676465 +417425 +2828233 +2491216 +221779 +404387 +2439840 +1244427 +449794 +1051917 +1780388 +492340 +1763313 +241094 +1780376 +274038 +1143604 +2491204 +397211 +922753 +160210 +1780365 +390648 +2439831 +1683631 +1135020 +314915 +1693890 +943525 +1067769 +1683622 +1663088 +241067 +1156117 +2514956 +1156150 +1060170 +1803017 +1151071 +2828280 +1780391 +241061 +449800 +2828209 +2301083 +873579 +221753 +1151061 +943531 +160227 +922752 +2590281 +335794 +2828286 +417432 +1780369 +1803037 +1143610 +274046 +2491232 +197346 +1683627 +1220320 +241105 +407626 +411450 +407642 +873572 +1803008 +749711 +1676493 +1163026 +348644 +411445 +241123 +1008283 +1060160 +1156147 +1125596 +1705127 +768971 +55397 +2514974 +1705122 +397204 +335792 +1056217 +2426479 +344344 +1784945 +2828241 +2590292 +2590289 +739935 +1139261 +377785 +1784948 +411437 +55428 +2020108 +160209 +241103 +404384 +1050878 +407627 +404397 +966482 +208455 +1169203 +1008259 +943514 +1143605 +1056212 +1143619 +221750 +2828197 +1163022 +1676473 +2828237 +2793669 +411455 +1780385 +1008266 +536484 +1067780 +160208 +1067758 +467814 +1156131 +2828229 +2439794 +2828221 +241041 +411440 +1803004 +407657 +1693893 +1409477 +411454 +2491226 +1139268 +274019 +274062 +2439791 +1676480 +417434 +407628 +1244433 +2828206 +417411 +160219 +2514976 +1683623 +241124 +417400 +1996605 +1803023 +1139263 +221761 +55429 +437312 +1784949 +197351 +2491220 +1151077 +1683621 +2514967 +55433 +1050875 +352393 +908434 +1397012 +390654 +1817296 +449823 +873588 +344358 +160280 +1630821 +536506 +749729 +768972 +274140 +714170 +1354926 +55518 +411516 +377797 +1220322 +1385965 +1354925 +1395608 +335800 +160239 +1151098 +739936 +943560 +274077 +2264093 +449831 +1763343 +160230 +617804 +1008336 +1630816 +536493 +352388 +197361 +1561409 +714157 +742070 +1395615 +617749 +750882 +411485 +2590301 +1961417 +208505 +1008303 +617754 +617760 +160257 +417437 +2264109 +1767228 +352389 +1780407 +274153 +744386 +1395613 +492341 +160289 +160373 +742090 +241192 +1630814 +335801 +1401355 +160333 +2301091 +335814 +274069 +348657 +668128 +1780408 +160309 +1093619 +252182 +1139308 +1392290 +390650 +1366523 +1143622 +744381 +377803 +2439859 +1074893 +744385 +748142 +617757 +390657 +738535 +1383023 +160283 +404423 +377814 +617770 +160313 +922763 +873605 +1074897 +467882 +2444711 +2439892 +160338 +160369 +241131 +411481 +797422 +943542 +1904184 +1803050 +1395619 +1872236 +91151 +723647 +274073 +744401 +1937221 +1244444 +747074 +16631 +335827 +160320 +492354 +377794 +467869 +1383028 +221800 +1392841 +2491301 +1008284 +449833 +274139 +160285 +749735 +241186 +749740 +1763342 +467864 +742068 +437319 +366199 +1665412 +160233 +252172 +739937 +2491305 +492357 +873595 +668123 +429415 +252189 +2444710 +1383026 +160308 +1354923 +1397020 +1918787 +411479 +340835 +1399634 +160243 +742080 +411499 +160306 +2439866 +55486 +1143629 +2491303 +1139303 +749728 +714174 +617831 +1630843 +2590298 +449816 +536489 +536488 +1139300 +2264099 +714181 +1187135 +160258 +1663103 +1125598 +2491290 +1665417 +467860 +1074895 +274074 +2264101 +2857923 +340847 +492349 +348652 +411501 +411514 +241177 +197357 +449819 +467878 +750894 +2439886 +1187136 +348671 +1630841 +1485079 +160363 +348660 +160334 +2264076 +692194 +1151099 +348665 +966493 +492351 +377793 +1693896 +723641 +1630837 +943575 +2309896 +2439888 +1485077 +1630807 +1139318 +377817 +1143648 +2515008 +2491341 +160385 +1008389 +411530 +2515015 +1784988 +1784992 +400188 +331428 +1156180 +1074935 +407695 +400189 +1156189 +331426 +1156174 +2063710 +1392292 +1521025 +1156179 +2857943 +241225 +241199 +331419 +407706 +1763370 +1008362 +2063731 +2013438 +1763387 +160375 +2857942 +1074945 +2491347 +417462 +1784985 +1785020 +1784990 +1074944 +1008357 +2063747 +407703 +1785000 +2063749 +1074906 +2692126 +160395 +423359 +340859 +2063704 +1151123 +1784996 +1139344 +2013443 +2018081 +1630851 +1763366 +873610 +335842 +760136 +2009903 +2857952 +1780417 +340862 +1784998 +241200 +2009900 +1008375 +1050891 +1074917 +1051931 +437328 +407699 +1763390 +467893 +2009899 +331432 +197369 +274240 +335835 +1008363 +400191 +2352836 +2009906 +221807 +2857931 +1139328 +241214 +2857929 +1139316 +943580 +335839 +2063707 +407692 +1397024 +417470 +1008374 +241213 +1104618 +1501637 +908442 +2444727 +1665440 +400205 +2009910 +274266 +55566 +197393 +1169225 +2439900 +908443 +2301105 +208552 +208547 +390664 +335870 +1151153 +160442 +2625859 +1937222 +407739 +160433 +750898 +404453 +2309900 +160428 +943609 +1754147 +1683648 +1008398 +1767253 +221819 +417473 +221812 +2309902 +1156205 +2005594 +904132 +404448 +160445 +423371 +873627 +197385 +1133596 +274260 +160419 +1008420 +417475 +2491361 +197387 +55574 +943637 +285847 +966518 +91171 +873628 +467914 +407738 +1169231 +1139352 +335852 +400221 +411547 +1785035 +274261 +160434 +1133599 +1139361 +423384 +1008434 +208546 +922780 +797428 +423372 +467909 +411550 +331435 +1151134 +1139375 +2301118 +423373 +1008410 +160479 +943606 +1151151 +208545 +400193 +1139390 +2793695 +335851 +335847 +2793691 +1780444 +1143682 +400228 +1156219 +340885 +1395629 +1139396 +1401361 +407743 +55568 +423381 +160471 +536510 +1169230 +404455 +404450 +1521043 +400198 +2439905 +419811 +2013461 +197389 +1785038 +2012552 +1139374 +922784 +2439914 +221811 +2309897 +966512 +1501645 +2439949 +397235 +2012554 +2439901 +2491359 +2439953 +943613 +160414 +344381 +91165 +1143692 +241234 +2444717 +1156202 +411540 +1521047 +55561 +340891 +873626 +400218 +1074954 +904131 +160458 +2422166 +55603 +1139413 +943688 +1187157 +241275 +922797 +221830 +221823 +922788 +1630869 +1395636 +328110 +397247 +274275 +340904 +2439991 +1961421 +411577 +1392296 +1050897 +1785045 +1501647 +1780450 +1139444 +2009916 +1665454 +1139433 +400238 +467925 +1397036 +160497 +55593 +2440021 +1151174 +1472534 +1720181 +331447 +1763422 +411565 +1354936 +55606 +1561454 +407755 +1139411 +1763424 +873639 +2009915 +2440010 +1561453 +2440003 +1169237 +1151173 +922786 +1139419 +160504 +2440007 +2440009 +407762 +335910 +2444759 +344398 +160529 +1763407 +340913 +1151171 +335911 +397246 +55595 +328112 +1143715 +1630863 +1763416 +943666 +1763427 +1501665 +2440017 +1156226 +1501646 +55609 +241269 +1663112 +692214 +1151160 +2440026 +1630878 +2491401 +1665451 +749749 +2444762 +904144 +1067812 +617862 +1060213 +411575 +348717 +2439993 +1763397 +241292 +1803068 +348714 +908457 +335899 +397253 +1763400 +274274 +1074968 +692212 +943685 +1561444 +160520 +1133604 +617857 +208577 +348721 +943683 +1139434 +1785052 +652353 +1139441 +197422 +617855 +160516 +359967 +335879 +1780447 +344393 +1074967 +1366542 +1521060 +1383031 +1976282 +274271 +1501661 +1139407 +91176 +160537 +160498 +1430130 +2439986 +1139442 +692224 +2857967 +1329088 +1961434 +536523 +2491410 +873647 +1485085 +208586 +1941819 +1630883 +2828488 +2733786 +1872261 +1561484 +1202690 +2828449 +221852 +1989199 +1561470 +2828455 +2828549 +1139459 +359971 +1329096 +2828302 +437352 +760141 +1961431 +2828462 +1561473 +873660 +2828484 +747087 +2828376 +2828334 +1976286 +2828358 +91183 +1561480 +449854 +2828562 +197448 +760140 +1501670 +692219 +760143 +692217 +1941812 +2828503 +221849 +536518 +2828529 +1472544 +2828554 +536530 +2828569 +285850 +404475 +714203 +2828404 +2828501 +1501680 +2828443 +2828305 +2828363 +1293790 +437348 +1093624 +197440 +1501679 +1176045 +2651351 +1961423 +221855 +2828464 +873662 +1430134 +2828460 +1202691 +16657 +2828532 +160538 +922813 +221858 +1501676 +2828497 +873666 +160539 +922807 +1976294 +2361117 +1961422 +873667 +55611 +2007702 +2389691 +2828314 +2283687 +1976285 +1501674 +1354943 +873728 +1399648 +467938 +2023671 +1041009 +55625 +160585 +617889 +1176047 +160606 +2264122 +160620 +160561 +2264135 +1244480 +1244484 +617903 +873683 +1561493 +738547 +943703 +1395652 +274280 +160635 +1561495 +2264119 +1630906 +617896 +1693901 +668141 +617898 +314940 +617927 +1383039 +467935 +1712567 +2009919 +1683659 +1388352 +617887 +617890 +437357 +723679 +723672 +1395655 +873684 +160558 +160578 +873677 +1780461 +1817315 +1630907 +1683657 +723668 +617882 +873679 +1732422 +377845 +1008472 +377833 +1084731 +1244486 +1872272 +1561485 +292872 +873730 +160615 +966540 +1630900 +2005596 +1904205 +55636 +738546 +55638 +1872273 +1366555 +1008469 +966532 +1008456 +723666 +1383043 +1366558 +377829 +1630914 +492386 +873678 +1311722 +617939 +873670 +1472556 +252212 +692245 +723669 +1683662 +160566 +55627 +2088045 +714215 +1817318 +1630895 +221873 +1390177 +1561510 +2173781 +467961 +1008465 +536536 +536537 +314938 +1392305 +943705 +753991 +2173784 +966530 +1390160 +873685 +1244485 +1051941 +2104548 +966539 +241306 +617919 +1904198 +160593 +160569 +274291 +1366547 +1163040 +1937224 +617911 +1630910 +160625 +1311718 +241305 +299572 +873714 +749755 +55642 +617895 +873682 +1397042 +55629 +1354955 +1383040 +348726 +467948 +1985218 +467951 +274277 +2173777 +208592 +197463 +1084744 +1561547 +377853 +160657 +423397 +1263575 +1705143 +723689 +2088075 +536554 +1872303 +1130290 +797496 +536550 +344411 +501746 +91215 +1561550 +355117 +348729 +1561552 +1763438 +1630943 +1430148 +1785059 +2422185 +449880 +2018097 +1872322 +91210 +1156237 +366221 +1220360 +400249 +492403 +2104553 +1244504 +1056253 +2368773 +2173794 +2264150 +1561554 +467967 +536559 +2104561 +1244497 +348728 +437364 +2517458 +873735 +16676 +1780469 +429457 +1074982 +797489 +966557 +467981 +2368771 +1904211 +617944 +1872286 +335920 +1172276 +1383045 +1707082 +197467 +536552 +2731544 +1244502 +922821 +2549393 +2722201 +349870 +91225 +2440071 +2747686 +2517459 +1392307 +1561518 +2264157 +2088054 +2278270 +2719373 +1817325 +377852 +1996614 +1008489 +423404 +366215 +208596 +377863 +1008478 +1074987 +429452 +16674 +449896 +2088065 +723690 +797463 +429462 +1169248 +55650 +1220359 +349878 +2440068 +2088081 +2828590 +2104563 +1244541 +2301176 +241337 +873782 +335928 +1720192 +1904234 +400262 +348734 +1378399 +753995 +2023683 +1133617 +55685 +1220381 +468012 +2857974 +2012572 +2012569 +2023691 +1151198 +241354 +966572 +2301181 +2515043 +1156254 +723694 +468026 +16695 +1785078 +1151207 +314957 +1872349 +411604 +221895 +1630968 +1401388 +742103 +692268 +1395664 +2000830 +1139474 +2088095 +274309 +714256 +1172278 +1060221 +1401382 +1244516 +1104634 +1872363 +2012582 +1397052 +2301194 +1665461 +1008549 +1392862 +1872326 +943730 +479927 +355118 +1354969 +160693 +1390188 +1244526 +1060224 +1763442 +2857977 +873776 +1187189 +197475 +2018114 +55668 +208600 +1665465 +2000824 +1720191 +1872329 +2515041 +1244542 +1872359 +1390187 +1187191 +1169259 +753997 +1169270 +274325 +160702 +1395661 +348731 +943724 +797505 +749762 +2828582 +1785080 +1169268 +404481 +160673 +1395667 +492423 +1202705 +1187195 +160688 +1220371 +208604 +2025750 +2828599 +1202711 +417501 +748155 +1904229 +1244543 +617975 +1244518 +617978 +723706 +738552 +2710623 +1156241 +1817336 +1904227 +943729 +1388364 +208601 +348744 +2104569 +252228 +2427953 +1803089 +1561580 +1329111 +2088103 +160706 +397263 +966584 +411608 +1392865 +966592 +2535396 +2440076 +1392314 +2731545 +468007 +2018113 +2013473 +692271 +417502 +449912 +966571 +1169264 +2749315 +2857975 +197472 +348733 +492445 +160667 +1093633 +692269 +1156257 +617977 +241364 +2828585 +449908 +1561592 +1169272 +748161 +536563 +1399659 +2710632 +744429 +1244515 +2549399 +1904222 +2009926 +1220388 +467999 +1187190 +747096 +377869 +754000 +1663119 +241336 +2755486 +1244522 +1383052 +2440077 +744431 +2744096 +1785067 +1008558 +2012578 +91247 +749769 +748159 +331469 +2088086 +2747695 +221898 +760151 +1803097 +1395658 +437386 +536569 +479931 +429472 +1169275 +411595 +2733793 +747099 +1785083 +2828588 +922826 +1712570 +2828597 +390689 +252223 +1872337 +400259 +1125632 +437423 +739960 +274462 +241434 +1169295 +274407 +1176059 +2280158 +208615 +873841 +1075044 +468037 +274423 +274363 +1156268 +208632 +1631046 +1937237 +618017 +1872373 +160717 +1521092 +352422 +1125636 +437403 +314967 +292878 +2301199 +274388 +241429 +1187197 +390710 +55805 +1817347 +1263586 +1202723 +1244612 +2007711 +1104644 +943792 +2063765 +360007 +407785 +221902 +160806 +377911 +1008563 +2389701 +55742 +437419 +437429 +241454 +943770 +252245 +1075031 +221905 +873797 +1676530 +1961435 +208633 +618010 +160723 +360040 +340942 +377888 +1472571 +1187202 +1202725 +2681854 +1008629 +423421 +241436 +1008689 +55791 +1817341 +873888 +618014 +241398 +331477 +16706 +1521107 +352415 +377906 +2549404 +1169294 +2063766 +274478 +2857987 +797511 +1937243 +1244580 +437404 +2389699 +749770 +377924 +160784 +2264171 +274361 +1244572 +377916 +1918805 +714259 +943784 +1472582 +1631009 +873903 +943774 +2279822 +360004 +2793748 +1220399 +274404 +1202737 +1630981 +1631006 +91261 +1630983 +241456 +1008686 +943756 +1293819 +241402 +943744 +274490 +468058 +16710 +241446 +241424 +714272 +377892 +1631039 +1817355 +618021 +2264200 +1918807 +1008645 +2264215 +2309911 +1904251 +943776 +2301200 +873931 +1008650 +160747 +1501693 +1008577 +1156265 +208620 +1244608 +739957 +492459 +2280154 +314982 +55789 +1817354 +797516 +1732436 +744441 +2264204 +2491468 +1631013 +2793757 +208611 +1125652 +241407 +55730 +1630976 +873859 +55779 +2264211 +315000 +1732435 +437407 +492470 +2264210 +1985237 +55752 +1244627 +873814 +377884 +1008732 +2681855 +1754173 +55827 +1631016 +1472573 +366229 +1817369 +943800 +1151210 +160872 +2264202 +1390192 +1075037 +241378 +1388365 +160820 +352413 +873788 +617995 +1263590 +197486 +873808 +873900 +390722 +1263592 +1630998 +241435 +160833 +2651376 +400265 +492460 +55820 +241393 +55828 +873851 +423418 +160858 +943789 +1263600 +274384 +1872379 +1202733 +2491475 +873902 +1008658 +274441 +1665470 +1631029 +241473 +208639 +2515055 +437415 +359996 +873944 +1631012 +1521100 +2440080 +2729253 +873945 +1172283 +1008595 +1075051 +241445 +1075027 +55709 +348756 +2515054 +1263599 +1780489 +1904260 +873816 +1008599 +1156266 +241367 +160748 +617999 +1803103 +1051949 +315007 +1041019 +468079 +1008665 +1008601 +274362 +1088008 +55748 +55693 +160874 +492453 +1521094 +1008589 +966619 +2440083 +1561624 +1392316 +2264230 +1041027 +2692129 +1263609 +160978 +160966 +723714 +1130294 +2535405 +355123 +274508 +873974 +1163065 +1388368 +714288 +315030 +874006 +390746 +2699903 +618058 +274502 +714280 +1254273 +618023 +1693908 +1390196 +668153 +1244639 +1112739 +1093636 +1366612 +1008749 +2651382 +1329116 +55850 +1008803 +160968 +1008764 +2264245 +377965 +1293821 +1390213 +1631108 +1366591 +274500 +873993 +2264261 +874011 +160975 +1385981 +390734 +2491499 +2535401 +2013488 +1918814 +1472612 +1631104 +468092 +873995 +1075072 +91276 +315020 +1631121 +411622 +1872395 +315022 +390736 +2023703 +55853 +160974 +2515063 +2264277 +874007 +943816 +2012597 +1008809 +2755500 +874016 +536594 +2744137 +160931 +2413963 +2705312 +738560 +714294 +714303 +91279 +536593 +1008787 +160946 +2012596 +750915 +1008782 +292894 +714291 +2264227 +1989218 +2309914 +1125672 +1388369 +1976318 +1008798 +714310 +1390198 +91278 +1075079 +1754178 +160918 +1075073 +1472631 +1041029 +1631059 +1008802 +874021 +2264223 +160956 +449922 +2264237 +1048078 +874022 +723716 +2755496 +1385983 +1683691 +292893 +618039 +1472624 +1366597 +160908 +668150 +2023700 +390741 +536605 +241481 +55857 +1311723 +754005 +91273 +1311727 +943809 +1220408 +1631078 +714283 +874025 +2427956 +2651385 +874100 +1244647 +1008898 +874103 +1008896 +161022 +618087 +1008821 +55948 +1008876 +208666 +274549 +377973 +1472657 +2264306 +1561629 +161069 +2515067 +492500 +1521141 +55925 +874119 +874057 +874104 +797546 +55895 +874080 +874116 +2491521 +1187206 +2088120 +360069 +1705158 +1561638 +1067848 +55912 +1008851 +2278274 +2264289 +55914 +1104662 +874099 +2710637 +874064 +2088110 +1008879 +1344056 +1872406 +492502 +55901 +197497 +161049 +55906 +55885 +160999 +1008880 +1683698 +874107 +1918815 +1169321 +468106 +1067847 +2264304 +966623 +161046 +2088124 +2651390 +360071 +366239 +161027 +274536 +1561637 +55872 +618089 +241507 +274531 +1561642 +348774 +2747710 +274572 +197495 +714325 +161011 +1631132 +1048081 +739966 +2173832 +874075 +797547 +2104571 +874096 +922838 +55896 +492499 +315035 +874041 +55894 +1366615 +1075088 +2651397 +377968 +449938 +1561639 +377977 +161020 +1693912 +966640 +2491510 +1631165 +2173829 +874137 +1472664 +315042 +1705165 +55945 +1705170 +2590348 +241505 +501765 +197500 +348776 +1050912 +797541 +55947 +55923 +714320 +274517 +1008814 +161054 +1561626 +874037 +618101 +922840 +1220414 +360053 +2440101 +2747709 +161076 +908480 +1705169 +161028 +1631164 +1112750 +1732480 +723723 +1918819 +618151 +1561674 +618117 +2173919 +377982 +91291 +2736399 +943858 +2173887 +161106 +874226 +1631209 +2710641 +2040607 +1472686 +2007721 +274579 +1371209 +2389750 +1008917 +2722218 +2389720 +618240 +1521155 +1732481 +874222 +1561693 +874168 +2173921 +1918841 +1732473 +1163077 +2173859 +1732490 +618174 +1329128 +161127 +1631197 +1093644 +1561655 +2023707 +618132 +1655930 +2104585 +1430184 +2040608 +536640 +1366619 +274584 +2040599 +2389749 +1354995 +1303285 +2699917 +1631220 +618211 +874210 +161147 +2719382 +2710642 +1008903 +742108 +1918845 +2699910 +2040612 +536620 +1803127 +1008901 +1561657 +536652 +1354999 +161136 +1008907 +618162 +2264348 +2173902 +536656 +1561667 +55953 +1732465 +1918820 +874197 +2710639 +652366 +274583 +874231 +735738 +2040611 +2027022 +2389710 +1754205 +1561660 +1561673 +742111 +1732491 +161101 +1521150 +91293 +618216 +618126 +1355000 +2710646 +2389745 +2651411 +618173 +1631212 +874214 +2173850 +874173 +536657 +1872422 +618243 +874242 +2731556 +735744 +1041037 +2173851 +668176 +536650 +1918853 +874180 +2173842 +1918828 +742109 +1163086 +735734 +2692135 +618121 +874181 +161102 +2590382 +1311730 +618209 +161110 +652369 +536647 +1472691 +723724 +2173844 +618127 +1371207 +1008930 +2710638 +252267 +2685018 +252276 +1093656 +2440110 +2008505 +1780501 +1303295 +2173985 +2389804 +1561752 +797627 +536738 +2590389 +16730 +1732496 +2088135 +2008506 +966667 +2174002 +2088152 +2426481 +1163133 +1803136 +1254313 +1676551 +2491554 +2173987 +2736408 +1693940 +1780498 +2301221 +2590433 +1254311 +1274964 +2590417 +2535417 +2710663 +1872456 +2173999 +2301228 +1732499 +1274961 +1067852 +1561710 +2174077 +1693942 +966666 +1676553 +2440113 +1112758 +2174081 +2747719 +2330672 +1430197 +2590446 +1976335 +1388378 +2590416 +2491531 +2755517 +2173970 +874253 +2174055 +91319 +2174088 +2174033 +1676550 +2040628 +797610 +2174103 +161158 +221932 +2330658 +1561754 +2731565 +2590431 +2174016 +536691 +1430211 +922852 +797629 +2174067 +1472709 +2174006 +1693949 +1561726 +1355019 +536669 +2389762 +2651429 +2685016 +2389781 +1430214 +797588 +1303291 +1648041 +2174098 +1163102 +2651434 +1833012 +1561713 +315053 +16737 +1355026 +2755514 +2173990 +922848 +2174090 +91309 +2330656 +2590392 +966665 +2088157 +797604 +2330662 +760167 +797616 +2736407 +1501715 +2491546 +536705 +797591 +2743384 +692318 +2736414 +2173962 +2174072 +536715 +1303296 +221923 +1951365 +1067851 +2590462 +536689 +1872436 +735750 +449944 +2174082 +2330673 +2012606 +1951364 +1918875 +2699930 +1872446 +91298 +2590426 +2301231 +2590409 +2008503 +1732505 +1274979 +2283699 +1163131 +16726 +2174000 +2590390 +797608 +2088150 +1872452 +2590396 +2173988 +2173978 +1472708 +2173968 +221929 +692314 +2590441 +1561755 +366245 +1472736 +874316 +1472739 +1009029 +1430224 +2018130 +1918885 +2389847 +161203 +161195 +1311766 +2174161 +874363 +2174142 +618366 +1631301 +2264355 +1631227 +2063819 +874279 +1631293 +91324 +1311748 +2264420 +874270 +618370 +874258 +2681861 +2389841 +2063816 +1430223 +1561797 +1631263 +2417442 +161252 +1303307 +1655931 +618431 +1989239 +161210 +2264365 +161200 +966682 +874308 +1561777 +1371234 +874410 +1732517 +274618 +299583 +2681866 +1631318 +668196 +874345 +2264418 +874382 +692334 +1631283 +1009024 +1961455 +618311 +2264401 +668202 +618271 +1631305 +161206 +874317 +1293875 +1293845 +161177 +874394 +1631269 +797642 +1561790 +2174144 +668227 +874459 +1311772 +161218 +2063821 +668201 +2417434 +1631276 +1311786 +360074 +2008527 +2651484 +536746 +2040632 +2389811 +618302 +668195 +966695 +2063826 +1989254 +1220421 +618414 +2264419 +2710681 +2264382 +161243 +1631261 +2040637 +714328 +874353 +2389829 +2389842 +1293853 +668243 +874400 +55964 +1008937 +1293868 +1244653 +1872458 +874448 +2264387 +1631272 +618389 +2040634 +2417433 +1293844 +1371229 +668253 +1311775 +1961454 +874313 +618416 +1631289 +668230 +2651506 +2389825 +2389861 +55961 +2088161 +1311744 +161207 +1311785 +2264372 +2330697 +2174123 +668218 +618326 +2651496 +1009001 +966681 +2651455 +1757567 +652390 +1631265 +1631229 +2651464 +2651453 +1008959 +2590486 +1008978 +2330700 +668231 +2389868 +1293849 +1989235 +161167 +2174178 +618397 +1371241 +315067 +221934 +668256 +874328 +1202750 +2330696 +55970 +390769 +2264504 +618575 +874629 +1366630 +1631335 +1631433 +874670 +874628 +1472776 +618482 +2063838 +874634 +1009104 +618679 +1311873 +1041108 +1631454 +1631414 +874588 +1430229 +668294 +1561814 +668305 +2063841 +652407 +618687 +618631 +161258 +874546 +1009153 +315103 +1041084 +1009139 +161338 +1125715 +1985260 +2264461 +1009077 +1009059 +874684 +1951371 +1244677 +1311813 +161323 +55969 +1311890 +1009129 +1631419 +618569 +315120 +1311902 +2651516 +2008556 +1631445 +618655 +1293922 +1937269 +161283 +1009084 +1041122 +1041125 +723733 +874493 +1371253 +1041123 +874650 +618507 +1009035 +1371248 +1311827 +797648 +2681891 +1472766 +2689220 +274652 +618577 +161345 +618594 +618633 +668335 +618468 +2389881 +1705177 +618459 +874538 +1311819 +1244661 +315137 +2330710 +161286 +1631449 +1303323 +2174195 +668316 +1311888 +1989258 +274628 +2681875 +274647 +874467 +2278290 +1472835 +1371250 +2417459 +618628 +161326 +1311892 +1009111 +1311812 +1655938 +1009151 +1631430 +2174210 +1631420 +1904311 +618508 +1631425 +161321 +874585 +618491 +874477 +618692 +161324 +2008536 +274672 +2264501 +2264506 +1311898 +2174213 +1757572 +1631344 +1041109 +2264444 +618665 +874640 +1472812 +652412 +1472770 +1041080 +943865 +2008543 +274679 +161309 +1904292 +384989 +2174192 +315092 +1937267 +1948183 +315111 +1631360 +2389900 +390760 +1041114 +797647 +2264443 +1989260 +315115 +618602 +1009135 +2828609 +874474 +315116 +732314 +1631383 +2174216 +1009076 +1311849 +1631337 +618668 +1472829 +315128 +668278 +618472 +1631382 +874566 +1311856 +874525 +1472758 +1948193 +1631373 +1472822 +1311826 +1311818 +874510 +390764 +2174189 +1904310 +1293892 +1472815 +1631416 +2389885 +1293916 +1293900 +2352840 +1472824 +2008565 +2264492 +668313 +1631339 +1009119 +618483 +2389902 +2264500 +2828614 +1244671 +1705183 +874664 +874518 +2008563 +1009070 +1472773 +874562 +874519 +1112772 +536768 +618529 +315106 +161330 +618598 +1009145 +2174199 +1941824 +1937272 +618640 +735765 +2008541 +2689215 +2174209 +2264448 +161271 +668267 +668322 +1631330 +1371256 +2389898 +2040645 +1872463 +2264505 +2689219 +668295 +668264 +1631424 +1009137 +1009064 +2264561 +1311911 +668409 +501777 +2174227 +874766 +161376 +1472901 +1754295 +874800 +2264592 +874910 +2651522 +2063844 +874960 +161481 +1631617 +618921 +668451 +2793773 +1631532 +874877 +2869260 +1009220 +1653730 +1754297 +668540 +1311985 +619027 +618930 +874966 +2174228 +618772 +618911 +1312004 +1653729 +1937282 +1631718 +1754260 +1631705 +618964 +536780 +161384 +1653720 +619012 +723735 +1041150 +1009214 +668382 +1631609 +1311928 +619055 +1631646 +1048139 +1048136 +2681910 +874755 +390776 +668464 +2793780 +874779 +1631611 +618766 +1311995 +1918905 +1009255 +501766 +1293987 +668379 +797653 +1390216 +1472900 +1293998 +2793790 +1009218 +1754287 +2264604 +390775 +1293962 +1293944 +2651527 +874920 +2793764 +2695314 +2264544 +161442 +2747728 +2793781 +874956 +1311980 +315183 +618789 +2755528 +2651548 +501769 +1631481 +2847395 +1472878 +668454 +1009213 +1472856 +2722254 +2264541 +1472916 +618877 +874753 +1631612 +536777 +668439 +668450 +1631606 +874795 +874697 +1631521 +874770 +2440120 +2264571 +2793802 +714332 +1048134 +1009161 +618761 +1009264 +618826 +1631553 +618978 +2847388 +1561848 +618843 +668453 +1048129 +1104674 +2793774 +618855 +2828624 +874958 +1631644 +1009190 +2847391 +2681911 +1311940 +618858 +1653723 +2413974 +2695318 +1631720 +874783 +668394 +1561850 +874912 +315170 +619039 +874878 +1521167 +874812 +2264564 +1125721 +161455 +1631698 +668499 +315197 +1631633 +161395 +744459 +1009221 +1048105 +1009243 +1009208 +2264591 +1293943 +2869275 +161479 +1041132 +874828 +874758 +618717 +2857999 +874869 +619033 +1631721 +1048107 +1125726 +874903 +1631562 +2722250 +1754271 +161452 +1311961 +1041152 +2869284 +668341 +668461 +2840606 +1366648 +760174 +1645255 +1631678 +668403 +1312009 +618991 +619061 +618792 +1754247 +874804 +1311983 +1311993 +2264537 +501787 +274697 +292938 +1263628 +1009240 +1472883 +1046603 +501786 +874698 +1561830 +2264615 +1048089 +2840615 +668342 +874851 +668410 +714337 +2264545 +1311925 +618803 +161447 +274693 +618988 +668466 +668377 +618946 +2264570 +1732534 +618776 +2840612 +1472903 +1472904 +652416 +1631601 +618741 +2869268 +1293997 +1631474 +668415 +1561824 +1754258 +2278294 +1631670 +1311941 +348777 +1009210 +668511 +668482 +1631599 +1631504 +1937288 +1311946 +874965 +619031 +161425 +1048153 +1631488 +2828660 +2710683 +874741 +1048167 +618958 +2352872 +618833 +1472923 +2063850 +769055 +2793807 +1631771 +875383 +874992 +1948201 +2549410 +1472937 +1631732 +875355 +161649 +875361 +619154 +875171 +1631902 +875058 +161741 +2264665 +161727 +161896 +1009382 +56041 +161957 +2264668 +56339 +2264701 +56226 +161908 +1631765 +1521168 +56195 +875433 +1472970 +875337 +1472984 +769050 +1683718 +161687 +1683711 +208698 +1631785 +161772 +161633 +943912 +2444779 +908500 +1754299 +1631793 +208707 +875370 +1631827 +966714 +769089 +352429 +1645261 +161660 +1631775 +161874 +56234 +1473007 +2352897 +1754305 +56200 +161565 +2063863 +1683733 +943940 +315203 +161671 +2689221 +274747 +1084770 +56010 +1009276 +161913 +390799 +56159 +875148 +56051 +1785106 +1472967 +875022 +875159 +1473042 +1009342 +2264783 +161508 +208685 +1009367 +2264636 +2264631 +1472977 +875150 +161748 +619099 +56138 +1473076 +1631792 +875282 +56217 +619138 +875201 +274782 +875464 +769045 +1041161 +56009 +56141 +161719 +875386 +2352899 +875032 +56166 +2063876 +1631836 +1009428 +56241 +56129 +161832 +1817386 +56342 +1763457 +2264731 +349880 +2793829 +1294011 +875157 +1409510 +56280 +2793826 +56322 +56330 +56228 +2264742 +2264641 +161700 +292950 +875116 +56135 +56116 +352425 +875182 +2264679 +2264653 +1754308 +875319 +1009310 +2063871 +2264771 +56311 +875393 +161616 +874981 +908507 +161850 +2264658 +875309 +943939 +2264730 +875215 +56040 +2063893 +943903 +619094 +56065 +161777 +1472949 +348780 +274771 +619115 +1631759 +875007 +2793825 +2264785 +1948205 +1631748 +1294010 +875439 +908492 +943917 +619100 +1785108 +2444782 +2028673 +875258 +769065 +56071 +1009398 +875318 +377985 +2063861 +1009316 +1294012 +1009365 +161922 +875043 +1937302 +943905 +2330718 +875123 +2264763 +875119 +875136 +1631898 +2063884 +619172 +161577 +56183 +1754306 +161915 +769049 +1009345 +875314 +875336 +1048181 +2063865 +161934 +1009412 +161797 +2264727 +2063857 +1472947 +161731 +1409508 +875401 +943924 +161672 +875257 +2689230 +1409495 +2793847 +1084776 +875291 +875427 +1409485 +769043 +1683712 +1763460 +2689222 +875371 +274750 +161785 +348779 +221937 +241545 +56212 +56268 +56307 +875210 +769036 +161679 +161813 +2793846 +56355 +161765 +161877 +1009356 +875191 +875222 +161780 +2264663 +56197 +1294008 +1705194 +274742 +161648 +875149 +2264746 +2793839 +875399 +875185 +1009422 +161707 +875263 +161518 +274727 +56270 +875141 +769053 +2264773 +2264733 +161514 +208675 +1472985 +56050 +161907 +875481 +2793808 +875357 +161833 +908496 +161788 +377986 +56114 +1009375 +161786 +1631910 +2264633 +2174250 +908527 +2174263 +56401 +56404 +56384 +1632089 +16752 +1009594 +1009484 +56518 +1009578 +714344 +875581 +2651561 +1009487 +2440125 +2389910 +2301243 +1631924 +2301244 +274824 +91355 +797673 +2491645 +1009610 +1561920 +2264836 +56382 +1961459 +875772 +875824 +2491643 +875844 +1473098 +769115 +162204 +1009592 +56416 +797685 +162081 +769133 +875694 +875771 +875650 +2440130 +739967 +161999 +1693965 +162133 +966742 +875484 +162191 +1009623 +1632063 +1676567 +875635 +56484 +2491601 +760178 +875498 +1009518 +162136 +162006 +2330723 +56533 +1041162 +875743 +162153 +1632036 +875493 +2301251 +1631936 +1561922 +922867 +1561874 +1705232 +56509 +797680 +91341 +2264829 +1009556 +1009606 +875585 +1430246 +1009511 +56418 +2352923 +162194 +875497 +411631 +2264880 +619189 +1683743 +797664 +1561908 +56386 +875795 +1632054 +1473099 +2352916 +1632094 +1705235 +1561938 +348785 +875784 +875669 +875605 +56503 +161975 +2444795 +56470 +797682 +797668 +769139 +1561918 +241551 +1139487 +56526 +1430243 +1632000 +2491592 +1409524 +769141 +1632032 +943949 +162100 +161985 +162018 +411630 +1561948 +2491644 +875718 +1561894 +1817422 +619198 +2264882 +1632022 +875520 +162038 +274821 +769117 +908524 +875746 +2301248 +1705199 +2264861 +419820 +1009499 +2264838 +1693966 +56430 +1683754 +1705239 +875503 +1693967 +161987 +1561880 +875728 +411628 +875606 +162033 +769127 +875845 +875769 +2352914 +2793860 +274843 +2174262 +162124 +162096 +1632013 +1075094 +2491648 +875756 +1693968 +2028674 +16759 +1409521 +875847 +1693974 +769120 +875573 +2309918 +2264891 +274852 +56365 +875740 +2264887 +1473111 +56427 +56504 +197508 +162141 +2174251 +875833 +875745 +1009574 +966757 +468114 +1009583 +2491616 +2174241 +1473107 +162019 +966716 +56506 +1803151 +875649 +56522 +797666 +908526 +2301253 +91345 +162056 +2793870 +501790 +91354 +904163 +162140 +1473086 +274827 +966733 +1803161 +56452 +1632009 +1632002 +161964 +1693964 +1009525 +966758 +875515 +162091 +875729 +56487 +162050 +2491600 +56389 +875512 +1780506 +56508 +797699 +875921 +315229 +619294 +875935 +875858 +2264952 +1344077 +1125755 +2264942 +162264 +274927 +2755561 +1009835 +1754357 +162323 +619587 +2264954 +1632236 +2007751 +714360 +1985308 +1473140 +1048215 +1312067 +619251 +162294 +390831 +668710 +162210 +1632287 +1366694 +1294059 +1985309 +875873 +2681926 +619281 +1904333 +2352941 +668559 +1401399 +1009663 +1009721 +619378 +1048237 +668760 +875931 +2264967 +668636 +1754322 +1390236 +668735 +1632195 +315233 +1632190 +315219 +1985306 +2264928 +619400 +1009685 +1632100 +1632202 +619408 +619372 +2007750 +1632218 +668612 +619487 +1760603 +619559 +668681 +1048242 +668604 +668786 +162343 +668784 +875852 +1312032 +390814 +1009742 +2389911 +875951 +56547 +875961 +315230 +2491656 +619490 +1632115 +1632237 +2689258 +668682 +1312038 +162244 +668753 +875881 +1366705 +619627 +1244703 +1390223 +315238 +1632208 +668754 +1653739 +619617 +1732552 +1366713 +1985292 +1009764 +377993 +1632318 +1632112 +1632260 +619495 +274936 +1048246 +1344078 +619460 +162344 +619624 +1632282 +2278298 +2722277 +668729 +875934 +2695439 +1754323 +1985265 +162341 +668772 +619274 +668621 +668756 +668654 +2719398 +668776 +1009652 +1918929 +1401396 +56548 +668656 +619622 +1985275 +2722276 +2719395 +2414001 +2515079 +2264948 +619491 +1409526 +2689256 +1985287 +315215 +1009737 +492518 +2265013 +1366723 +875942 +1048203 +390829 +1125757 +2695392 +619299 +2695332 +619353 +2692145 +2760156 +274914 +1632289 +1632242 +668625 +1048227 +1985302 +1473155 +875878 +2264973 +1125790 +2265015 +619265 +274889 +2063940 +1244696 +1312016 +668771 +668751 +1263643 +619349 +619625 +1976349 +875992 +1473161 +2104600 +1344088 +1312064 +1473169 +619592 +668676 +1473166 +1632316 +1754358 +1041174 +2063953 +1632297 +668588 +668720 +668647 +2695405 +1473151 +668689 +468117 +1254318 +619396 +1312025 +2063939 +668812 +1009632 +668696 +668830 +1632303 +1312101 +2264937 +619262 +1009750 +2264986 +1366725 +1009821 +1754330 +1009698 +619398 +619526 +1954640 +1312073 +162226 +1009831 +501798 +875872 +732320 +619402 +619498 +1009674 +252308 +668672 +668698 +2265004 +2719394 +875891 +1366667 +668797 +492521 +1244697 +1009754 +1754329 +2695390 +619416 +1312043 +1872481 +619247 +1632194 +2264988 +2651565 +769144 +1294046 +1009759 +668717 +162240 +1009740 +2695335 +1366674 +1009629 +1312022 +1632283 +668628 +1009712 +668829 +1754345 +1048204 +2755565 +1125782 +2264957 +668606 +652420 +241561 +162252 +1294079 +1312081 +1048248 +619565 +1263633 +274903 +1009626 +668574 +2695418 +744461 +1632301 +1294028 +2719400 +668733 +714353 +2760153 +2695364 +315241 +1954633 +1009741 +619350 +1390241 +2264960 +2755569 +619553 +1312105 +876168 +315275 +1344099 +714395 +619701 +1473270 +876105 +619812 +1632423 +2689289 +315372 +1294132 +315368 +1366763 +299588 +1294168 +1473248 +1312189 +619923 +2689441 +162530 +56565 +1954727 +162375 +1294193 +1275020 +162403 +1473243 +1344103 +1312154 +1048273 +619889 +2689350 +2352956 +162543 +1632392 +619727 +619809 +1294151 +876118 +1294211 +2840623 +1294093 +1294136 +619663 +2705360 +2689446 +1969215 +619907 +876058 +876146 +2705346 +1632375 +619712 +2689402 +315255 +1041206 +1632360 +162494 +1846208 +1244733 +162371 +241566 +162506 +1312111 +1632380 +1294175 +2265032 +2689296 +1409529 +1366775 +162535 +2705340 +943979 +2353005 +1969224 +668945 +1244741 +2689471 +1048291 +1041182 +1125810 +1632400 +1632330 +2013497 +619758 +2689423 +162384 +1954680 +1366733 +315315 +315280 +668877 +1473227 +1009914 +1954655 +876199 +162467 +1366752 +2689314 +162465 +619744 +619664 +1948252 +619671 +390839 +162436 +668933 +668934 +1048305 +619680 +1312121 +1024872 +619669 +1985379 +1473184 +876019 +2689292 +1985369 +1632323 +2265023 +162386 +1244761 +619791 +2353006 +56562 +1294156 +1294187 +876211 +1048274 +274981 +2689448 +1009876 +1041178 +162440 +1009863 +619687 +1294140 +668946 +668935 +274997 +668959 +619818 +1632363 +1041181 +619785 +668942 +315293 +162395 +1954677 +162524 +2689430 +1948270 +2689469 +714402 +668924 +668911 +1632346 +1948268 +619934 +1632344 +2063973 +769150 +1312155 +162492 +1653748 +2689278 +1473256 +315334 +1521192 +2689282 +377997 +315361 +56563 +619724 +162374 +1009926 +1048263 +1473263 +292960 +619803 +162417 +619852 +619951 +1985371 +1041197 +1244725 +668930 +876010 +1048301 +619886 +1473272 +56555 +668882 +1473186 +2689458 +1985362 +1294154 +1312199 +1312183 +876096 +619941 +1473187 +1312184 +315322 +668956 +619866 +274991 +1948288 +315356 +162514 +668909 +274963 +315276 +876156 +876087 +162496 +2689416 +162520 +1041184 +274995 +1041210 +2840622 +619913 +1294106 +468120 +1473234 +162379 +876130 +876186 +162457 +668986 +619783 +162385 +1294191 +876121 +162486 +668940 +619939 +876161 +2352955 +1125805 +162452 +1312134 +668915 +2689295 +2689328 +1948305 +1969220 +668864 +1948283 +1024873 +377998 +252314 +348798 +2692152 +619981 +1125825 +390878 +1989301 +714418 +1244791 +275104 +1125840 +2265138 +56576 +162592 +620260 +1632506 +754010 +221941 +91362 +1390251 +1632521 +315457 +620063 +1473296 +2023744 +536820 +1390257 +2695447 +1303341 +536858 +669204 +1312208 +2695469 +1473284 +162764 +619999 +620109 +2722285 +669068 +669190 +162769 +620202 +723741 +275004 +620253 +692340 +2840637 +669099 +1473273 +1009999 +732333 +275124 +1366786 +1390291 +943981 +241579 +943987 +620027 +1632489 +2733799 +2692168 +275043 +1355053 +1130296 +1093662 +390854 +744474 +1985391 +275066 +1366790 +620020 +669071 +536815 +1632485 +275092 +669063 +620084 +1390296 +252313 +162580 +2063980 +2755585 +162776 +669096 +162684 +2007769 +797710 +714460 +1632483 +536813 +2847402 +2265079 +620146 +1989336 +1366804 +2007767 +492543 +1048319 +966768 +241591 +2695465 +1009984 +2692151 +275173 +620094 +620023 +669085 +56579 +390875 +275174 +620182 +162688 +16764 +714411 +732339 +1754372 +275023 +1397063 +468123 +162621 +1954751 +56577 +1010008 +1632464 +1561972 +620087 +2025791 +275037 +162622 +723746 +1125818 +669025 +1632473 +1390272 +620141 +714444 +620218 +1632511 +1048316 +2265094 +162664 +275145 +1156272 +620309 +620118 +162702 +669236 +1244793 +620269 +2722309 +56580 +492532 +742121 +390881 +492550 +449952 +669199 +714427 +275035 +876255 +241578 +669212 +1009991 +620300 +1202766 +1084788 +378001 +2265057 +275194 +669112 +492534 +1632490 +2023750 +162696 +1989316 +2265063 +714430 +2847403 +536889 +162603 +2265071 +275029 +1010005 +275099 +1388399 +2265117 +1473297 +275195 +162612 +536892 +669200 +536893 +162708 +876245 +275159 +2265049 +669154 +620175 +2755573 +714450 +241595 +2692161 +1954756 +1390277 +754014 +1312215 +275116 +315419 +2722313 +714446 +1989333 +1918931 +1561965 +2265127 +620303 +620143 +1390302 +1954739 +492553 +652433 +2265143 +1009973 +162732 +1355059 +1632446 +2695463 +620236 +1366821 +2265081 +2018137 +714421 +162647 +620029 +620252 +876229 +162674 +162680 +2265055 +1872485 +56584 +1954736 +315387 +1390278 +669136 +536845 +1632457 +1430252 +2007774 +1366814 +620155 +1390268 +390865 +669203 +162620 +620206 +91365 +275149 +162770 +620259 +620142 +1632451 +1244796 +1632523 +162689 +620165 +1954737 +162727 +162714 +620066 +669128 +315467 +1009997 +620077 +1473311 +1366785 +620179 +162788 +162718 +2828670 +1130298 +2689475 +275036 +2265124 +754064 +620894 +621062 +276418 +390959 +292976 +276400 +669607 +620578 +621112 +744614 +352561 +670071 +744738 +732446 +275425 +669651 +2025848 +669886 +352593 +492611 +2025818 +670111 +275851 +492726 +501977 +669352 +620588 +670196 +754140 +1010051 +352563 +501910 +2025822 +423569 +669673 +252332 +502013 +621196 +620986 +276386 +732350 +620469 +275878 +739976 +315484 +241697 +276231 +501905 +2023785 +1632619 +620408 +732412 +492596 +162946 +2265150 +744561 +492724 +492704 +276033 +714526 +275957 +669891 +241681 +276422 +620377 +750940 +714603 +241667 +1390326 +876261 +669996 +669362 +275804 +468138 +275378 +275993 +744743 +744782 +620771 +163085 +620683 +275756 +162796 +352485 +744744 +2265190 +620518 +276076 +754161 +669429 +275956 +163026 +2025827 +276110 +670003 +670127 +390945 +275937 +620856 +163073 +2265171 +275906 +732419 +276178 +669595 +275789 +732345 +714637 +348824 +275904 +669827 +1366861 +620770 +1632613 +669488 +669245 +501839 +669814 +1390445 +276445 +621122 +754219 +501841 +620414 +670018 +163015 +1366872 +620979 +275331 +423461 +2025811 +275922 +748167 +2755600 +670037 +670162 +275568 +620631 +162811 +390949 +620892 +714587 +275603 +669575 +669875 +241718 +754136 +423486 +620460 +275494 +876263 +754190 +620885 +1937327 +276455 +315590 +275936 +620416 +423460 +390971 +56592 +2265208 +2025804 +620649 +502068 +1401423 +1010040 +276008 +620611 +501836 +162919 +1390386 +744801 +669699 +276331 +492658 +275487 +276270 +536911 +1390334 +620466 +378058 +669978 +252319 +275693 +669579 +275712 +620851 +669282 +360089 +670045 +620812 +621136 +275213 +501826 +391049 +669987 +669955 +669966 +669283 +2265201 +275907 +669908 +714534 +669521 +620394 +1048324 +620866 +276035 +750930 +744759 +501850 +275948 +620789 +621024 +620503 +378016 +1632667 +1401434 +621057 +378042 +162876 +732352 +2651574 +669918 +620976 +669972 +275657 +536899 +275961 +352566 +669425 +669620 +754054 +241677 +492594 +669574 +732443 +391041 +669289 +492574 +390920 +1632660 +652447 +417530 +162956 +275608 +163022 +1263688 +502001 +744504 +315490 +750921 +492620 +669756 +492634 +670076 +2265187 +732391 +1632581 +315480 +669594 +276191 +276348 +1390385 +275505 +162829 +620720 +744724 +468178 +620412 +275690 +390941 +502024 +620955 +714498 +669610 +1632635 +241702 +163089 +744663 +162984 +162863 +492685 +669556 +669523 +621030 +723790 +670007 +714707 +714672 +669778 +275321 +315601 +620678 +275215 +275268 +744731 +669623 +275310 +669366 +275471 +276382 +162903 +621187 +621195 +620433 +620496 +1010083 +714524 +315632 +352628 +1632663 +2265256 +670043 +714654 +1048323 +315598 +276435 +670050 +501844 +620757 +390989 +275488 +669519 +714535 +620935 +417522 +621071 +620796 +501957 +276097 +670064 +2265254 +275279 +163092 +714519 +620547 +669885 +744630 +1390413 +275458 +669807 +620423 +162996 +669499 +276201 +754175 +275644 +275966 +276190 +714599 +275835 +754068 +276449 +502002 +620961 +744723 +162913 +241627 +162901 +162982 +501890 +714643 +2025801 +744500 +1010081 +1989351 +669915 +620840 +620917 +621087 +2265164 +744809 +1632602 +669563 +669396 +492662 +1390312 +275782 +669441 +723814 +732440 +732373 +620643 +348815 +620829 +621058 +744495 +275287 +501882 +1632629 +275507 +1390438 +732448 +275744 +621177 +620816 +340964 +315493 +670113 +241668 +2733802 +423499 +275737 +723793 +732425 +241618 +2023768 +378050 +620329 +502037 +620752 +1632618 +492568 +669302 +276103 +162861 +1010076 +275859 +501925 +1632647 +423580 +275837 +276487 +501876 +275691 +390902 +750931 +750936 +378094 +714641 +620607 +669453 +670151 +315534 +670087 +732364 +754192 +620545 +275647 +747104 +501989 +2749337 +378102 +276497 +275506 +620737 +669583 +620410 +2265214 +390917 +620855 +670114 +669843 +1390447 +1390425 +275709 +1390304 +276324 +620557 +276068 +1010064 +276522 +669919 +670199 +732399 +502018 +1010110 +275665 +739978 +479977 +479979 +501843 +276484 +390887 +163097 +723804 +275902 +732427 +276276 +714566 +276488 +714650 +275220 +1632672 +479973 +315541 +754032 +621181 +276031 +241669 +276538 +348832 +669984 +714523 +621103 +276030 +620744 +669940 +669929 +241624 +502071 +275787 +621145 +162994 +620473 +2025798 +669704 +241633 +2760171 +2722322 +669787 +2265169 +621135 +2265227 +620822 +669469 +536919 +275541 +620956 +692352 +275280 +669577 +275828 +423575 +620419 +423498 +2025843 +276394 +754037 +275499 +621198 +620357 +669639 +620785 +275921 +378048 +620586 +241720 +468176 +276396 +669654 +352600 +620534 +620701 +714659 +275491 +241703 +275824 +621005 +620880 +2733806 +275617 +744700 +754105 +275373 +723809 +620538 +276043 +714501 +492691 +669571 +162911 +723774 +468171 +669917 +275686 +754163 +241689 +2025820 +732346 +275854 +2722323 +492679 +739975 +754102 +276282 +276165 +669924 +754073 +292973 +352528 +620998 +275949 +275946 +754035 +669930 +502036 +620527 +723797 +1632636 +275400 +275856 +669314 +1366871 +669393 +315608 +275350 +492741 +492605 +162792 +276373 +620331 +1390333 +2747740 +620346 +492640 +276308 +502006 +502040 +744490 +315505 +1632611 +276369 +276385 +391005 +468143 +669538 +739990 +2755588 +669822 +620749 +620888 +669904 +620758 +252335 +492570 +620575 +744646 +276188 +744728 +744572 +1390373 +714623 +744697 +276082 +492676 +417528 +744498 +162837 +423552 +1632607 +276258 +501973 +390982 +670021 +275569 +669284 +670142 +276000 +2265210 +744541 +732422 +670178 +620354 +360086 +163126 +1385991 +620430 +352640 +744753 +1010044 +714554 +754210 +620330 +2733801 +275836 +378045 +1937325 +163032 +352586 +2749334 +620422 +241682 +621014 +501913 +340967 +732366 +492747 +501892 +275584 +620944 +275414 +468161 +754158 +714567 +620673 +2025821 +536917 +670096 +620438 +352635 +162814 +669517 +1632580 +744645 +670134 +1632703 +876275 +492755 +621249 +2063992 +1395675 +1561989 +1985418 +1732558 +1521197 +2174335 +1391158 +1632700 +2005626 +1275036 +621241 +621200 +2491677 +536930 +732462 +1665487 +1473322 +692383 +754627 +723839 +692381 +163168 +1872504 +714748 +2174323 +1803181 +966776 +1388413 +670248 +2590515 +163194 +2426485 +2003352 +1501723 +1366887 +2003351 +744817 +1473326 +536947 +1355062 +670253 +2444799 +536940 +1388412 +714743 +1386005 +2590525 +1312274 +1390458 +670245 +1125868 +621276 +1220452 +692375 +1067865 +2590522 +91392 +1562012 +1390467 +1104696 +360092 +2174332 +1918937 +2265278 +2007781 +1501724 +1976392 +1521202 +621209 +1976359 +1473325 +735768 +752917 +1989359 +2590509 +1275040 +91390 +621272 +1060249 +2427958 +1985426 +1386009 +1275034 +797726 +1397075 +670231 +723840 +2828680 +752920 +652452 +1918936 +536942 +621205 +1366891 +2828673 +966782 +241729 +1754378 +1375814 +723837 +208727 +1371274 +652449 +391058 +2535424 +2174324 +1521198 +276555 +163172 +1371269 +252339 +1386004 +1388415 +2440148 +2174340 +1632715 +2353043 +670244 +1371272 +1383088 +536928 +876297 +1403412 +692354 +391061 +2590520 +1976358 +163170 +692366 +1383075 +1817441 +1383072 +1202775 +2025876 +492758 +621222 +797719 +732453 +1390456 +2353042 +1386007 +621234 +1371275 +714747 +1403409 +723838 +2651583 +670233 +2828682 +1397070 +1312269 +2590517 +621243 +752914 +670249 +2265274 +1187216 +1976357 +1344118 +1390466 +1473317 +754238 +1976390 +621283 +1937333 +1632682 +2491679 +876325 +1989381 +2174435 +537029 +1355126 +163223 +537053 +752925 +670261 +754652 +2088170 +2389936 +1663121 +2005642 +1833024 +1562044 +2174434 +1989386 +2747749 +417533 +2625910 +163234 +922880 +2174360 +91412 +2710686 +1220460 +537054 +1294236 +1399705 +747107 +692394 +537039 +2174437 +2710689 +1430274 +943995 +1732570 +1976402 +2389914 +2174367 +797763 +1501744 +1562052 +1329183 +1989383 +2389937 +1976404 +943996 +1391170 +1329190 +1976419 +91413 +1391183 +1163140 +1676577 +2710690 +2736427 +2869359 +1275079 +1473328 +1355123 +91403 +2174412 +221955 +2685036 +1430266 +1303347 +621317 +2731596 +797767 +2743387 +2040649 +276570 +1391196 +797762 +2174354 +2174369 +1989391 +1355124 +537018 +1562040 +2361160 +2174356 +1275068 +621320 +2174375 +537026 +419826 +1430279 +1275076 +1355094 +966790 +163224 +1371290 +2590578 +1976427 +1355114 +2858050 +221953 +754658 +2174374 +742139 +2389933 +1275069 +797753 +2731599 +1355105 +2590526 +2491691 +621334 +2858034 +2747777 +1976411 +2330751 +537035 +2440163 +1803185 +2265305 +797754 +1366899 +1473327 +2747782 +749786 +797766 +1961481 +2858022 +536985 +2440154 +1391184 +1872517 +2088169 +2005631 +2174404 +2590548 +197519 +1329184 +1329176 +1969235 +2869366 +1391198 +2174420 +1029061 +1383097 +1961482 +2755607 +2283705 +1430268 +2869340 +692402 +2301286 +2869331 +2869334 +2731594 +1312277 +163277 +1388437 +2283708 +2064001 +2389959 +1663123 +163302 +1430287 +163253 +1329195 +2755621 +163251 +163294 +1294239 +714759 +621443 +1780517 +1712586 +276572 +1712585 +299594 +537077 +692416 +2174528 +537129 +1720233 +1989410 +1562110 +754693 +2018169 +1676582 +2651596 +2491702 +1976457 +1294251 +1473346 +163252 +1355141 +2003354 +1985438 +2301296 +621394 +276574 +1488128 +1562093 +537113 +2755627 +1961508 +797771 +1029064 +2018170 +221961 +91434 +537064 +1388427 +1632751 +163262 +1375826 +1366901 +2699955 +1104700 +2265337 +2000857 +537106 +2018160 +2368791 +2174540 +1961523 +2005645 +2590613 +2747795 +2063998 +797785 +2736432 +2301298 +1403417 +723880 +1329204 +2535442 +1403415 +537075 +2174523 +2755617 +2731620 +1961495 +2265311 +621362 +1104704 +163301 +1948318 +1961519 +1976474 +966803 +723895 +621407 +2743388 +621345 +2088187 +1632757 +621391 +2491709 +2699953 +2174551 +221959 +2491699 +876365 +621411 +876357 +1388420 +1220474 +1355137 +91425 +621436 +876405 +1355153 +621344 +2309920 +1366911 +163310 +1275112 +1976466 +1403418 +1918945 +2747806 +1390476 +1275111 +1112792 +2590593 +2309921 +537125 +652467 +1904368 +747108 +2590597 +2590584 +2174487 +1355154 +1371310 +2000883 +1067870 +1632758 +754683 +692423 +163329 +2353056 +2590607 +2353057 +2361172 +1562103 +754684 +163268 +537109 +2590598 +1712589 +1375827 +537111 +797772 +2426488 +1961498 +1954770 +1989409 +2710708 +1312307 +2389949 +163306 +1294245 +1344120 +621422 +163241 +2731616 +2174546 +1355160 +315653 +2174547 +621416 +2755614 +537060 +404496 +1366914 +1961518 +2265320 +621352 +1383122 +2174469 +670271 +1969238 +621382 +1294240 +2040654 +197520 +2265352 +1918944 +1344125 +1355143 +537103 +1371315 +2000897 +621482 +692432 +1961548 +2491728 +1329271 +621462 +621563 +966817 +1275147 +723916 +1275152 +621485 +876426 +2000906 +91447 +1754382 +2301303 +621489 +2003369 +1355217 +2710740 +966829 +621517 +1371322 +2590618 +2353064 +1501764 +621536 +1918953 +1395684 +91446 +621531 +378116 +276578 +1430315 +723908 +163340 +2731632 +752951 +2651627 +2265370 +1355196 +1220500 +1010158 +1803202 +2710747 +1355189 +1112808 +1010197 +1355193 +2005650 +1732589 +468210 +2018179 +1275157 +537164 +2590623 +670329 +760192 +621520 +1430316 +1430308 +537217 +2361176 +1803194 +1918956 +692445 +621452 +2710748 +1275158 +966810 +1303353 +1029071 +2491718 +1430330 +1732595 +621514 +1676584 +1989423 +1872580 +1732597 +2353066 +797800 +1803201 +2000893 +621523 +2651623 +1275121 +876446 +670322 +449978 +1694000 +1371323 +1275145 +1093676 +752937 +2755634 +1132320 +652478 +1104710 +2040657 +1961556 +1720237 +1395686 +797832 +2747815 +2739939 +2174580 +692450 +1355213 +876417 +1676589 +1803205 +1366936 +2710735 +1220498 +537165 +2389988 +163379 +537233 +1989441 +1665497 +2625919 +2088197 +2590641 +732480 +876489 +2755631 +652488 +652497 +754245 +1294254 +670307 +1202784 +1275130 +2278302 +1976497 +1989446 +2590639 +1473380 +1388447 +2040662 +2491723 +1473373 +1632798 +1312324 +2265359 +1473358 +621512 +1355168 +1562149 +292981 +1521222 +2003365 +2018188 +670323 +2389992 +670313 +2088211 +2389991 +670319 +2722339 +652485 +1954779 +1355207 +2301315 +2651622 +1010169 +1562158 +2000919 +1202782 +163391 +621524 +1632790 +1693999 +2535452 +621497 +797812 +1390496 +1632813 +537241 +876466 +1275133 +2710743 +2389984 +1941843 +944013 +2005668 +1562130 +163333 +2330770 +735783 +2301311 +1961539 +797829 +276579 +1562131 +276584 +2389967 +1473374 +2005655 +621491 +621490 +2005662 +349901 +163383 +1683766 +2000923 +537226 +163347 +1329277 +2174571 +2710719 +537162 +1371332 +1041230 +1329256 +670320 +1961551 +479997 +1187230 +1501768 +742146 +1344129 +752959 +2390000 +876470 +754244 +1562139 +1303354 +738576 +2000899 +1355176 +2389973 +1976510 +1375839 +754716 +2007791 +1125882 +2353070 +1989444 +2736443 +2025884 +1632780 +797793 +2025886 +754743 +1366949 +276582 +652475 +1473368 +2174590 +537243 +1473360 +1375841 +1275178 +468221 +621622 +732495 +1632819 +2625922 +2309943 +1562181 +276588 +876556 +1473427 +1720258 +1954794 +1632835 +621642 +2265523 +2007806 +621664 +2265399 +2005696 +2265522 +1846229 +1632846 +2003393 +2265492 +714781 +449990 +2535479 +2695500 +1010202 +2747854 +1371364 +621696 +621615 +2007803 +2535459 +1683772 +2265483 +2719432 +944031 +16784 +2007798 +876531 +1976547 +315666 +1294291 +2018201 +1386056 +360096 +2590686 +1632881 +1521228 +163431 +2301320 +2064020 +1632839 +2000931 +1918973 +1375847 +2491745 +2174658 +2265434 +621680 +797853 +537272 +944030 +2590660 +1754395 +732511 +1397103 +1918974 +2018217 +1665506 +1954799 +2174690 +1401467 +2535457 +2018219 +1275172 +1632858 +2590688 +2743399 +1961560 +2535469 +1386040 +163423 +1976542 +2018205 +2309932 +1010207 +241756 +241746 +944037 +2025889 +2174685 +1976552 +2414020 +1918968 +876511 +1104725 +876541 +1375859 +1366980 +1521224 +2265524 +1803216 +91470 +1344147 +2747897 +1937340 +732493 +1632853 +2535460 +537281 +2353123 +1401475 +1780529 +1754397 +1366959 +2023829 +1275171 +2265393 +621567 +1386051 +1720253 +2755646 +1355230 +2491740 +1562178 +2747840 +2710754 +2755653 +2368796 +2353093 +1785123 +1294274 +621627 +2353132 +1156289 +1632864 +1329303 +2265440 +315669 +621638 +537278 +163410 +1632857 +1355244 +1720243 +797847 +1187240 +2174671 +2265455 +417538 +2710763 +1941850 +2747870 +944036 +2104614 +1366971 +1632854 +2283713 +2104617 +276594 +621635 +1430339 +1817458 +2444804 +732508 +1312349 +2353121 +2515097 +2590661 +1294280 +2265424 +2651634 +2353098 +391076 +2009948 +1104720 +2747855 +2174711 +1386044 +1401464 +2174699 +2353111 +1367003 +2088229 +1010211 +2265531 +692467 +732506 +2009946 +1473413 +16783 +2747848 +2353138 +2699959 +2000933 +2590672 +1187241 +1312341 +1937341 +2104612 +2590703 +1329304 +2003375 +1367012 +2736448 +1562184 +1075134 +163430 +480001 +1395696 +2747894 +2018197 +621693 +1430340 +2426494 +1104723 +2590675 +1473412 +1294267 +1872603 +1769214 +2018198 +2007799 +163426 +208732 +1521229 +2755642 +1521236 +163441 +480011 +1948340 +2174737 +1803233 +2174934 +2491852 +2491758 +2064035 +876567 +2174764 +1918979 +2174899 +1220520 +876622 +1961588 +2440190 +163433 +2174928 +1562211 +385002 +1976577 +2491787 +1918984 +2330952 +1430377 +922928 +2174863 +1562262 +2301345 +2088243 +1803250 +2331008 +2174743 +2651684 +1430352 +2301347 +355135 +621729 +2174976 +2491800 +2330987 +1501781 +2174950 +91477 +2590763 +1010240 +1732636 +760197 +2491849 +876614 +2330960 +2739956 +1562259 +1220542 +2491865 +2174907 +252362 +1562245 +1521241 +2491783 +2040673 +2265558 +1375861 +537330 +2174856 +621706 +2330900 +621730 +1872659 +2390026 +2491889 +876590 +163458 +537323 +2023838 +2330911 +2174804 +2426499 +1961576 +2390031 +2535492 +2174971 +2491884 +797859 +2023836 +2330976 +2491799 +1275203 +1976574 +2440199 +2330940 +1941855 +1430363 +2265587 +2330988 +1961599 +1329342 +2747907 +2535490 +1220539 +2330968 +16808 +1780534 +2330849 +1501809 +1872627 +1676623 +966860 +1501811 +2535494 +1329320 +1803259 +2330996 +2174858 +163442 +944048 +56661 +2491838 +1918987 +2265552 +1989469 +966892 +1562232 +91491 +91497 +1112812 +16796 +1663137 +1294300 +2174796 +966855 +1969262 +1803254 +2491847 +621728 +876660 +876568 +2174745 +797900 +2265550 +1329326 +2265555 +876588 +2018222 +16788 +2651656 +2174852 +1833064 +2174977 +876565 +1872660 +2265582 +163462 +1803272 +2330860 +760199 +2651662 +944054 +1562243 +2491892 +2491850 +1872658 +328132 +537333 +2174774 +2491893 +2491851 +2755662 +2390015 +2174882 +2491881 +1041241 +2491801 +2104625 +1919010 +2590737 +1976565 +2064028 +163475 +1961585 +2651663 +1562263 +2330924 +2330858 +163461 +1485103 +1172285 +2491867 +2174918 +2651673 +163440 +760204 +480010 +2736452 +1501797 +480008 +2590708 +2651669 +2491784 +876627 +163498 +1187263 +1632907 +2491777 +1803269 +621713 +908539 +2040667 +56646 +1329349 +2174973 +1501825 +2265547 +1732601 +1473449 +2174916 +2330936 +1275207 +2174790 +1632919 +2174991 +537337 +2491776 +2491790 +2651642 +2330928 +621702 +2491832 +1501783 +1473438 +876637 +1780531 +91490 +1833054 +760203 +797873 +2330980 +1501818 +2651686 +2301342 +1918988 +876613 +1632910 +1501796 +922940 +1473453 +537343 +1976572 +2174879 +2491882 +1220543 +876564 +876665 +2000937 +2174957 +2755666 +2390048 +1562197 +2491786 +922946 +2174900 +16787 +1732639 +1329343 +2755667 +1632912 +2174959 +2330978 +2651692 +670362 +1473455 +2330794 +1833063 +1275193 +1820312 +692472 +1732605 +922943 +2330920 +2301326 +1872647 +1220519 +1833065 +876657 +2651646 +2491857 +1010242 +1803280 +621715 +1803248 +1732624 +16790 +2174978 +621724 +1275206 +91478 +1344168 +1375896 +692478 +2731666 +966913 +2840729 +1562289 +621743 +2265595 +876708 +1244865 +163540 +1632946 +324983 +1202798 +1989483 +944059 +2869367 +276648 +1375869 +621859 +2840670 +876672 +876727 +1633016 +1633017 +2869395 +621853 +1401491 +2731656 +2265648 +2840662 +2719443 +922954 +1430378 +2695514 +2858155 +208737 +1010315 +1401487 +2265606 +1367042 +2840677 +2265617 +163550 +423603 +754747 +1371390 +2869381 +876734 +1403441 +2858154 +2858096 +276644 +163520 +1632954 +2858197 +1010261 +2858082 +2739976 +1344161 +876767 +1104737 +621767 +876681 +2747923 +876699 +2731657 +2695525 +2869432 +2007821 +1312405 +1010294 +2747928 +2278306 +876714 +876691 +2739969 +797918 +2414036 +752979 +2695519 +1954843 +2869415 +324986 +1399745 +1010254 +714803 +621764 +1084823 +714812 +876697 +1989477 +1632977 +2265642 +2731663 +2840724 +2755670 +1632984 +1371381 +1473496 +2858136 +1375913 +621873 +2858138 +537354 +2840682 +2018227 +621875 +621803 +1961603 +1632939 +2731665 +876676 +876753 +1954857 +2414035 +1010319 +621883 +2840689 +1010293 +1562278 +2858187 +621879 +423594 +1244872 +1632948 +2390057 +1375909 +621804 +732522 +1390528 +1633004 +797914 +1104738 +163551 +621845 +1705297 +2736463 +492777 +2858108 +2368801 +621817 +1312395 +1312375 +1169349 +1760607 +797919 +276632 +1132326 +1344158 +91506 +2007819 +621747 +621834 +2265609 +1375885 +2840675 +2175015 +1367017 +1125891 +1754415 +1202802 +163543 +1220552 +2793903 +670374 +163528 +324988 +621794 +1010248 +1803286 +1312406 +163532 +2869393 +1010304 +1705301 +163559 +2719446 +2265618 +714820 +1202806 +1904401 +876694 +2755682 +2869422 +754748 +1732641 +1312387 +1344174 +2265621 +1367039 +2003430 +2793905 +1720262 +1632961 +1104739 +1244855 +1976581 +276645 +760205 +2695509 +692474 +2869400 +1375894 +1010310 +1244851 +56691 +2739968 +1904395 +537356 +621786 +1401493 +1904404 +2869370 +315679 +2301353 +1632995 +1294305 +537372 +1125893 +1010290 +2840698 +2840716 +670406 +163592 +622006 +1985489 +1344175 +276674 +1785130 +1344190 +1633031 +1010350 +1633079 +2025923 +1294335 +241763 +1010354 +1633078 +876824 +1386067 +1633080 +492782 +1010345 +670428 +1383148 +876816 +163672 +2003433 +714828 +944072 +2719471 +1010389 +2025940 +1754429 +315691 +2739997 +876814 +1633069 +1954903 +1329373 +670426 +1041259 +944080 +1367064 +1954882 +622002 +537384 +1954874 +622020 +1010360 +622003 +2353176 +876829 +340980 +1653757 +876790 +1041255 +1976590 +621990 +1954890 +2005720 +1263712 +2005721 +163660 +2736470 +744848 +621924 +1294333 +876822 +324995 +1375944 +1954868 +1010361 +423604 +468238 +2025925 +163649 +1010359 +2265674 +1294353 +2390061 +621979 +621908 +1401501 +714825 +391100 +2265662 +163611 +1904405 +1104743 +621942 +2104627 +738581 +91507 +423615 +876782 +670436 +1075139 +1386066 +1985479 +1989499 +2175028 +2025934 +163615 +2353168 +1985485 +2265678 +2005723 +754758 +1633032 +966916 +2025931 +1010333 +752980 +2007843 +163629 +1244885 +876799 +670450 +1989495 +714827 +1375916 +876834 +276666 +714823 +876797 +1633052 +2005722 +1041257 +1010325 +1060257 +714830 +1367053 +1244876 +1954881 +1104749 +621986 +2414037 +423621 +922955 +1954886 +2000943 +1010346 +2743421 +2331014 +876770 +252373 +1010379 +797923 +1294349 +2719462 +621940 +208764 +2793930 +876836 +1633177 +876984 +1367074 +2005727 +797962 +1244891 +241786 +1817480 +1329390 +2301381 +366271 +2390070 +378144 +877039 +429511 +1633102 +1562301 +877026 +1220560 +876999 +2793963 +276686 +2710811 +163859 +1430395 +1010437 +876869 +1633145 +876903 +163834 +315693 +1562309 +876892 +1633193 +241795 +744849 +622070 +769179 +1919029 +2710808 +2265690 +622048 +1562334 +876867 +197536 +1401502 +163811 +1817474 +2301386 +208744 +2265720 +1010460 +163842 +2353179 +1769215 +1263718 +1633180 +1473520 +163814 +1473528 +197537 +56735 +944113 +537401 +1633163 +876880 +876995 +714831 +91535 +91512 +163748 +537394 +1010435 +622057 +91519 +163841 +797955 +91531 +1355266 +2265708 +944111 +1817472 +944100 +163772 +2301373 +2064044 +2736479 +1010503 +769180 +2590785 +877018 +742155 +622062 +1817481 +797950 +163737 +163739 +1041265 +876998 +2590786 +163805 +2175080 +1562329 +2265732 +1125904 +966941 +966948 +2491911 +1633143 +163768 +315704 +2301374 +1904419 +241781 +876901 +1010477 +877020 +1010466 +1409540 +876953 +1754434 +1275247 +537391 +877049 +400280 +163703 +2793968 +876981 +1803293 +1562330 +2265730 +1041264 +966924 +1633115 +2681946 +1010494 +16827 +1683788 +1375947 +208743 +2104629 +163780 +328139 +1633146 +876960 +1633099 +163687 +378143 +2736477 +1562328 +221982 +2265721 +366272 +1817479 +1329384 +1633197 +1244901 +2755699 +760208 +2301362 +56755 +1010417 +197540 +2175066 +2793958 +2301384 +2175048 +1010469 +2793975 +2007850 +163847 +876837 +797966 +1010474 +876979 +2265741 +1169353 +1803291 +1521271 +738583 +1010431 +1220562 +966919 +1024878 +1275237 +163723 +797959 +2793943 +1294362 +2590783 +56699 +2590795 +56748 +1904418 +2491920 +1294363 +1961618 +1275242 +1329383 +622053 +163761 +735795 +2740002 +2175061 +1329389 +1312448 +2590799 +876937 +966932 +1488136 +197541 +163679 +328143 +1010442 +2265738 +56720 +16814 +2175058 +797943 +797951 +966962 +2858247 +1371406 +163915 +1633262 +1633284 +1176068 +468276 +2535500 +1010559 +2747946 +163926 +1872703 +2858224 +163948 +56792 +537430 +1075149 +966960 +1720274 +1156309 +1367079 +91537 +1705324 +1872697 +877053 +769194 +1104755 +1780548 +241801 +1329401 +1010528 +2175102 +2747943 +2175096 +1904427 +622084 +622125 +1430397 +797979 +1390538 +1263725 +468281 +1976594 +163921 +1075145 +2265763 +797981 +1633241 +1294368 +56781 +340990 +1633227 +1355273 +1169365 +2265760 +2590806 +1430406 +1294380 +1665521 +1954905 +1263727 +450013 +1694028 +2858254 +1023733 +2175091 +468273 +944127 +1263728 +2175122 +1961621 +797983 +2858205 +537421 +1780549 +2007851 +922973 +2265780 +1705318 +1344206 +1754440 +1169363 +2088284 +537411 +1948349 +2265777 +2104634 +468279 +1010529 +163916 +2858220 +163924 +315716 +407799 +1521279 +1562379 +537431 +1010556 +877084 +622100 +1633217 +197545 +1562346 +163886 +1633245 +252379 +2858257 +714848 +877162 +692501 +1344207 +1658380 +877112 +1705317 +1904425 +1263726 +163897 +1403454 +2722365 +877159 +378147 +797982 +391120 +877129 +2088276 +407798 +1633275 +2590803 +325005 +1275264 +622148 +276711 +2858229 +2699970 +2858255 +163950 +622143 +760221 +2265752 +163913 +1397144 +1104758 +56796 +1473566 +1187279 +1633210 +331521 +2858258 +2858239 +208774 +1562365 +1633214 +1846240 +622106 +1633207 +2858208 +1275258 +1633229 +1872705 +877079 +2747956 +2265815 +2005731 +2018247 +1329411 +1976617 +797996 +670497 +877234 +877217 +1329430 +2722368 +622221 +1010590 +1312478 +2175192 +2695549 +2740011 +754760 +2699980 +622222 +622227 +2695544 +2265843 +2023843 +1562382 +966986 +537448 +1954915 +2731683 +1386072 +1985494 +2265833 +944137 +2858343 +417545 +2858318 +1010577 +1633294 +2023851 +2858304 +2491933 +2755704 +622154 +163973 +163978 +1275272 +744854 +252381 +1430414 +1985497 +2018250 +1375962 +2755700 +1312482 +2858268 +2793991 +276719 +1473588 +2710830 +91550 +2023850 +2710821 +2695547 +2858272 +1954927 +1954919 +622188 +1383150 +2858302 +2699974 +2175153 +966993 +2858351 +2064080 +2175164 +537467 +1312489 +1010593 +537468 +1976611 +2858319 +1312464 +622201 +877230 +2794005 +163980 +877273 +1562400 +692520 +1985498 +1275273 +2858331 +276721 +1989520 +1220577 +2695533 +1312491 +1275269 +1976620 +622173 +1954913 +2858355 +2064062 +2858352 +2175141 +2858267 +1294390 +163971 +752982 +2695543 +2755708 +622187 +1633302 +2005734 +754767 +2755711 +2018237 +2651740 +622153 +2695548 +164002 +966989 +1371414 +1989522 +877272 +2005747 +1375972 +2390110 +2265842 +2301398 +163969 +1104764 +1375968 +2000953 +877190 +163994 +2175150 +2064068 +1355275 +2858327 +2794022 +2858284 +276720 +714861 +537457 +622191 +1976607 +652513 +2794015 +2692203 +2590820 +1312473 +2515110 +1989523 +2692207 +877257 +622207 +877220 +797989 +2699985 +798009 +1473598 +2265827 +1371424 +91581 +2517477 +1645280 +2390155 +1648051 +325071 +2175228 +1694036 +56824 +1473620 +1485117 +1112846 +299608 +450019 +877375 +56854 +315765 +798035 +877347 +2361187 +56889 +2390144 +164098 +299600 +1760621 +325099 +1220579 +1294392 +355144 +325032 +1172297 +315728 +1029113 +285870 +325058 +1041316 +2651817 +1104772 +429524 +769225 +1732721 +252391 +2390151 +164045 +1732674 +315772 +1712611 +877280 +2651829 +1653767 +1023735 +2390154 +360109 +798044 +1048346 +2390164 +91580 +56853 +1430425 +2651841 +1010625 +1562434 +164054 +1010609 +2651783 +537483 +16869 +1754447 +2354453 +1633338 +1093695 +2651845 +1732686 +1275285 +1562422 +2651818 +1732722 +1409549 +2651838 +877314 +1112837 +1125923 +877276 +1254350 +1633349 +877362 +877299 +1112848 +299609 +325069 +164049 +2590840 +325015 +622251 +2651827 +798051 +922981 +325034 +2175199 +1653771 +877385 +1041312 +1653766 +164094 +164056 +16837 +1010621 +1172295 +622253 +2361188 +325051 +325046 +798016 +1904437 +292999 +325092 +1041318 +91583 +1633356 +1732739 +299614 +1919045 +2175226 +16877 +1041285 +1633364 +1653763 +1732727 +967013 +91572 +760230 +769223 +1172294 +1501845 +325037 +385016 +429519 +385015 +56822 +2088292 +315744 +2517474 +1029122 +798045 +2331043 +798036 +1430431 +91575 +1562441 +1872741 +1562448 +276736 +2175211 +1562437 +798046 +1645276 +325024 +315781 +877388 +877297 +1430434 +299611 +1029120 +1093690 +760231 +315732 +1430423 +877335 +877376 +877337 +2331041 +164097 +315785 +16851 +325065 +56849 +2681948 +56843 +2175245 +1048337 +1653769 +91585 +1010627 +1754452 +877332 +325019 +798043 +299612 +769210 +1633354 +1872814 +164127 +1833094 +56913 +315928 +1919062 +1244940 +2794046 +1846243 +1254372 +1254365 +378163 +1562520 +1263758 +2278321 +164212 +241820 +378173 +315800 +315834 +1760629 +2064083 +2265882 +2390247 +2651891 +56995 +315923 +1112875 +16907 +2681958 +325118 +904188 +2390196 +315950 +492808 +537487 +56990 +1041345 +2361197 +1405911 +1010647 +967040 +429530 +315903 +2390199 +293060 +1093707 +2175323 +1254360 +2265892 +1220631 +315922 +1244949 +57024 +1010653 +16911 +293040 +56997 +1633406 +1633414 +91604 +2175304 +57008 +2361205 +1125931 +164195 +56960 +56982 +16914 +2651879 +2651888 +57035 +2175308 +1562473 +57028 +769236 +315811 +2175295 +1263756 +1010637 +57013 +1562512 +1029139 +798096 +1732754 +1732793 +56984 +2651864 +325125 +1653772 +57029 +299667 +1473676 +877418 +692529 +1919061 +1220634 +1041364 +1872768 +276748 +315932 +2361214 +1833097 +480045 +1263766 +164187 +315939 +1187288 +1430450 +91617 +315829 +1029142 +366286 +164248 +366300 +2265883 +1029172 +57016 +315816 +1029140 +967032 +1254356 +1010641 +16889 +1254370 +2175284 +299643 +1712614 +315865 +1409570 +1430453 +1430463 +1405909 +1633386 +56920 +57022 +1430461 +2390169 +1244923 +2390222 +798113 +299661 +2590861 +164182 +164119 +2590853 +2361208 +1694042 +56912 +1562492 +1409563 +1220672 +2794032 +293047 +315933 +1473668 +2088297 +1562470 +1562498 +1562519 +2390214 +2175286 +1430449 +355149 +1732811 +2651919 +1220622 +769235 +2175275 +164136 +2064084 +967018 +922987 +2390174 +164162 +1473654 +1244948 +1562488 +299691 +1187290 +1562507 +315818 +1125930 +2794055 +293046 +760277 +2590873 +315878 +16892 +252394 +2390173 +276750 +877455 +164220 +293036 +450025 +57010 +2175300 +1904445 +1872772 +299653 +1633410 +1720291 +1112873 +1041361 +1010648 +1220621 +315888 +222005 +56939 +16891 +1023741 +2491943 +164199 +1754477 +315860 +325128 +293048 +1732765 +1732788 +760271 +344452 +2278320 +1371438 +164108 +944145 +2265900 +1694041 +164158 +2651857 +2175290 +1202837 +1732773 +1220665 +1220616 +2390183 +1872788 +1562476 +315911 +315802 +164188 +1220629 +164173 +391145 +378169 +2651921 +1941870 +1187292 +1732794 +2390237 +1473644 +315808 +299689 +2651920 +1732780 +299683 +798112 +2651856 +1029148 +56902 +944144 +164152 +1633390 +16912 +2175291 +391187 +967044 +450035 +1029176 +2651973 +378180 +2353216 +967075 +164304 +299701 +769267 +164313 +1125946 +1904455 +2265909 +1112881 +293090 +252421 +391176 +208785 +1501855 +2590885 +468309 +366310 +2265902 +391174 +1633443 +164283 +2590881 +378182 +91644 +1941871 +1562548 +1562536 +2175351 +1473682 +164307 +57073 +1732822 +164310 +967047 +315972 +1244957 +1187300 +904190 +2390263 +622275 +1187299 +344453 +57044 +468302 +2652000 +252408 +391163 +222014 +1919089 +2651957 +877483 +16948 +2651969 +967080 +1937367 +1633438 +1872853 +57079 +468304 +1872843 +391171 +16941 +91645 +2651937 +492813 +1010665 +798131 +208786 +1562537 +391160 +1010681 +877473 +164293 +1010670 +355154 +2651970 +2491960 +2651958 +1919099 +1904453 +1976632 +537496 +798119 +1010671 +378178 +299698 +967100 +2535511 +1732820 +798121 +1010669 +1254390 +1754497 +252416 +57063 +1803323 +1010674 +1937365 +328145 +252405 +315985 +1010672 +378179 +904194 +1048365 +241825 +1355283 +877472 +2440221 +1202847 +276764 +1919113 +967091 +1904460 +197556 +57075 +2590895 +1803320 +1125941 +877482 +468307 +1202848 +1705362 +2681975 +197564 +164324 +164332 +164375 +2681976 +2390276 +2018259 +328146 +1010693 +2265922 +2695552 +468355 +2625983 +1202868 +2265925 +2444813 +360153 +1633522 +164381 +316027 +208818 +1904498 +1919118 +1937373 +2517487 +944158 +468322 +2590901 +877563 +1501863 +877522 +57146 +2301410 +1633519 +1409581 +1937374 +1633511 +208802 +1104812 +1041418 +1803326 +1202856 +1473685 +1521294 +340995 +2064124 +360129 +1244966 +1904473 +2549434 +944172 +1521295 +1846255 +2736495 +1872859 +164364 +1202862 +1010687 +437481 +2681972 +877558 +877497 +2175358 +967118 +468363 +967113 +378208 +1041411 +1029197 +2491971 +366320 +1633528 +1244965 +391210 +293114 +1202874 +1937376 +1202873 +1010737 +1202857 +164320 +944167 +1919115 +57096 +1633508 +1937372 +2175360 +2353237 +299707 +877552 +1244970 +16963 +1501864 +2064127 +316040 +2681978 +391195 +437485 +1521307 +877561 +2426505 +1872858 +944184 +922998 +877554 +1769217 +944166 +1156312 +769274 +299706 +1010720 +1803327 +1041391 +331525 +2515120 +1817505 +2390275 +1633512 +1202869 +293109 +622282 +944200 +2390269 +1769216 +1244977 +437491 +1633464 +1732845 +2265914 +2590916 +2331068 +877564 +1846248 +164370 +1371440 +798151 +1104811 +2265926 +316026 +437477 +1263788 +293100 +164338 +1785149 +2390282 +164339 +1633487 +241830 +2390271 +1048367 +1041384 +1244986 +1125967 +1409579 +241828 +877576 +355159 +1056271 +1817509 +360140 +1010742 +1485121 +2414048 +2421864 +1125958 +164369 +2390289 +1220717 +967157 +91690 +798223 +1473703 +1245018 +1521311 +16987 +1562684 +57217 +17013 +798183 +2301414 +16982 +1088015 +967188 +1562624 +57237 +57223 +1041435 +1125982 +1562592 +1010800 +360182 +429550 +923027 +2794060 +1041445 +164459 +732543 +360163 +57182 +877649 +17009 +1010785 +1501877 +299715 +537511 +91687 +57172 +622292 +2794062 +349912 +1010808 +2064138 +164440 +2515122 +164462 +1705381 +2353244 +57255 +2175406 +1732853 +1676649 +1694059 +1010803 +91667 +1633562 +944226 +1562591 +1220721 +316066 +944216 +1220711 +2275868 +1430523 +1562589 +1112896 +2710835 +1732859 +1112910 +877688 +1010790 +1562601 +967143 +1648078 +164392 +1780558 +276782 +2652043 +208823 +1220732 +877582 +2265932 +57156 +1430537 +944211 +1754516 +1633608 +17060 +1041437 +1029231 +2652029 +164412 +537518 +1010792 +1754523 +2652067 +164472 +2175408 +2652087 +2175394 +1501870 +1050930 +1521317 +17029 +164451 +450049 +2652018 +2175410 +1430517 +293130 +2175403 +378235 +967187 +1720310 +2652047 +1562614 +2175427 +1562671 +1633577 +2491989 +1010747 +1562634 +2414054 +164448 +164447 +360180 +316054 +360178 +57153 +2353245 +1048369 +91707 +299722 +1010799 +908570 +798165 +2652073 +17038 +480058 +877646 +299720 +2064141 +967125 +57177 +57189 +16986 +1705377 +17069 +1430510 +1633594 +1633602 +2265939 +2088310 +1562578 +1904506 +1501873 +2265956 +877695 +360160 +1084830 +1125979 +798251 +299727 +622286 +1010771 +222027 +877652 +1633593 +2175417 +1041422 +967193 +877676 +1245010 +480056 +2390296 +1430531 +1294397 +1562642 +164406 +692534 +57160 +2491976 +480059 +468372 +1562631 +468377 +798244 +944222 +164483 +1245008 +1705380 +2175421 +450052 +1633571 +877611 +1220722 +967170 +1048371 +1473712 +2064137 +1104839 +450055 +1501875 +316060 +17035 +2064130 +877686 +1125986 +17032 +1633581 +57240 +1220729 +1112905 +1112912 +877700 +2390316 +798225 +877654 +1872877 +17065 +17006 +1220735 +1430522 +2652058 +1633609 +164433 +164414 +1562644 +450062 +1562596 +316062 +1029220 +1562587 +325456 +424674 +424160 +2794113 +2794585 +325306 +1132408 +423883 +2353264 +325507 +293197 +325304 +424199 +325217 +325792 +325696 +325302 +349923 +316106 +423680 +423631 +2794290 +498487 +2794693 +498406 +424753 +2794695 +424611 +164620 +316091 +2794399 +378243 +2794175 +325449 +498570 +325794 +622317 +2794086 +424015 +325693 +2794518 +325305 +2794373 +423720 +325528 +2682068 +423664 +2794111 +2682054 +424606 +424548 +424301 +325493 +325563 +2794380 +164606 +2794542 +423796 +325374 +325458 +424670 +1132491 +2794081 +498405 +316105 +424075 +498439 +2794683 +423783 +57298 +57309 +423669 +424402 +1760768 +325183 +2794630 +424641 +1760714 +325369 +325640 +423917 +2794408 +423734 +424298 +2794404 +498400 +2682033 +424680 +423767 +498470 +1760737 +325777 +325433 +1760645 +325370 +424275 +423936 +424043 +325499 +1760746 +325348 +423673 +1132460 +424535 +498438 +424296 +423911 +424546 +164514 +424232 +325459 +424260 +325299 +57274 +622333 +391352 +391334 +325687 +2794192 +424558 +423820 +325323 +1760757 +2794120 +164507 +2794525 +424471 +57282 +498319 +1760661 +498504 +498485 +2682018 +423804 +325231 +423975 +325690 +423948 +391405 +424443 +498303 +2794270 +424818 +2794622 +325245 +164626 +316178 +498507 +1132466 +2794444 +325711 +2353267 +325466 +498558 +2794356 +424331 +325476 +2794546 +424400 +164577 +2794499 +325389 +423780 +423999 +2794637 +164598 +1760761 +424466 +424236 +424271 +2794116 +424216 +424057 +424813 +423639 +2794383 +423630 +1760733 +325655 +325742 +1132468 +424055 +164541 +622337 +325207 +423930 +2681990 +391235 +57305 +325261 +1132388 +325731 +498494 +424607 +1132360 +498432 +325338 +378240 +1132469 +2794254 +325485 +325272 +423934 +2794191 +57300 +1132381 +498589 +325465 +325293 +57268 +424686 +325379 +2682031 +424745 +423778 +1132482 +423803 +391310 +424327 +325339 +349921 +423870 +325595 +2682053 +325672 +1132341 +424070 +316175 +424767 +391322 +293181 +325797 +2794204 +1132461 +423877 +164530 +325373 +325798 +424454 +2794705 +164548 +325243 +424349 +424838 +423914 +498362 +2682004 +1760762 +391388 +2794329 +424362 +424531 +1132422 +498576 +424764 +1760779 +424750 +424512 +293161 +423645 +325512 +1760713 +1760650 +316163 +1132392 +1132490 +424689 +325187 +391347 +2794671 +325452 +164535 +424032 +424159 +293179 +293166 +164544 +325241 +2858367 +423670 +423928 +325521 +2794638 +2794264 +424665 +423779 +2794689 +2794416 +424637 +2794160 +164623 +2794477 +325495 +423871 +391368 +2681991 +164581 +423957 +1132338 +293206 +498331 +2794541 +2794574 +424188 +2794697 +325211 +325192 +164597 +2794291 +325745 +622295 +325559 +498591 +391320 +498455 +622294 +423805 +325632 +391259 +391332 +424156 +164526 +325253 +423978 +498344 +424508 +423772 +424475 +391391 +1760734 +316132 +2794652 +424622 +2794146 +1760777 +424564 +424357 +424334 +1760745 +423889 +423950 +2682025 +2353256 +622322 +423954 +1263791 +2794435 +325386 +1132485 +316147 +424087 +2682008 +325575 +423798 +2794635 +2794691 +1132372 +424728 +2682012 +423642 +424580 +498381 +498496 +498451 +325556 +2794308 +498382 +276807 +2265963 +2175465 +1010813 +1112914 +164645 +1919139 +276822 +57372 +1430538 +316211 +1125994 +57368 +360199 +1029233 +1919142 +360194 +378253 +411644 +57359 +164651 +498624 +349937 +316218 +1872887 +498622 +378256 +91743 +57369 +2491993 +1084831 +252444 +424845 +2491994 +1562697 +17077 +1919149 +1919151 +2265967 +1048403 +391432 +1048406 +293254 +57456 +1048381 +2794736 +164715 +164717 +2794732 +316233 +164812 +622343 +316318 +57395 +164743 +164755 +316325 +2794722 +537529 +2175473 +1046626 +1046647 +164735 +57467 +57438 +2858386 +1645292 +2064154 +57437 +164827 +2652113 +391442 +2652124 +1430543 +57375 +17084 +293265 +164814 +17105 +276842 +17087 +285901 +57452 +1048428 +57380 +877705 +1046643 +391479 +316300 +57459 +299740 +2028687 +2040725 +293232 +164838 +164832 +1732896 +1473732 +391427 +316276 +164789 +316313 +1754542 +492850 +299747 +2390339 +164732 +164751 +164661 +316309 +164813 +164816 +57408 +293255 +164666 +164770 +391429 +316338 +391444 +91794 +1046633 +293251 +2858392 +17093 +1048396 +2794719 +1046625 +164683 +391446 +164792 +1732903 +293226 +164849 +1046636 +299765 +2682086 +769306 +57640 +2794755 +1104849 +2278355 +293353 +877779 +877742 +57630 +57644 +1220743 +1126015 +1645295 +164967 +2278328 +1473778 +2414116 +1473734 +57612 +316426 +316362 +622374 +1645304 +2390388 +1041485 +164955 +293330 +1645343 +164950 +57822 +293327 +57773 +1112917 +1904510 +1473743 +2390381 +2414106 +1645345 +1473749 +1473794 +1645402 +1024919 +316489 +57493 +57660 +57676 +164913 +1041451 +1202887 +2414095 +164989 +57836 +1041492 +1904511 +760344 +877725 +877754 +57917 +1048441 +316385 +57720 +622362 +285913 +1904515 +57626 +769310 +57537 +622370 +316414 +293311 +293451 +316480 +670527 +2414115 +299777 +57535 +316519 +2682083 +57526 +164983 +769304 +769330 +378259 +57775 +877726 +299784 +1010825 +769317 +57746 +57737 +2794769 +57896 +57916 +492863 +293282 +57760 +622373 +1473785 +293438 +877747 +622352 +316436 +1010827 +57524 +164866 +164886 +2794770 +2652139 +1029246 +293285 +2390401 +2390397 +2390369 +293450 +468397 +316368 +293427 +57752 +57712 +164862 +57886 +316424 +316507 +316448 +769324 +1473737 +293389 +2390405 +164912 +293279 +877774 +57585 +1645348 +57728 +1041478 +316517 +293298 +164878 +437524 +769327 +57641 +1430549 +316475 +1473804 +1653805 +2278342 +57777 +1029247 +391490 +1041483 +164901 +1645354 +316390 +164885 +164974 +57655 +57714 +769367 +2794778 +1645387 +57879 +316387 +360201 +2794790 +57583 +293352 +1041506 +1473787 +1645356 +293308 +622360 +316530 +2794829 +57907 +1645326 +57756 +57744 +57804 +164996 +1645391 +2390363 +299780 +164985 +1473733 +1041504 +57523 +293436 +57740 +293401 +164951 +877757 +57774 +91808 +2390373 +1093729 +1904521 +877782 +293379 +1473757 +1645337 +316356 +1029239 +293342 +57504 +1041454 +164969 +58141 +293476 +58014 +2549476 +2175490 +57993 +58143 +293475 +316617 +2858526 +58155 +769399 +2858538 +58204 +316640 +316650 +293531 +2858494 +2858468 +2858488 +165007 +877822 +877835 +877849 +293505 +316605 +1720365 +165049 +2858451 +58202 +58167 +58165 +1263802 +165042 +378287 +299810 +877836 +316551 +1263810 +877834 +2265990 +378295 +293581 +378300 +293483 +2858433 +58045 +58137 +57959 +58174 +769381 +1720391 +2858516 +2265992 +165022 +877813 +2535524 +316577 +316571 +1720339 +316565 +2858440 +316602 +293457 +293606 +165028 +877824 +58055 +58041 +316682 +316553 +877830 +2549480 +57977 +57957 +1562718 +1720366 +1720359 +1220760 +1254412 +57965 +58023 +2794855 +1720326 +769374 +2858503 +877869 +769395 +58179 +2858437 +769390 +1633634 +316685 +2858438 +316657 +2549479 +1220754 +378276 +57992 +1245068 +2858444 +2266002 +316548 +58145 +2535540 +1720377 +1720336 +316550 +299789 +293583 +299791 +58009 +2858470 +316616 +2265978 +285935 +293598 +1245070 +2535538 +58066 +58200 +316639 +316574 +769388 +57988 +2858421 +316670 +2858528 +58134 +1720356 +316679 +2265985 +57937 +316589 +1220758 +1245041 +877815 +293569 +1245050 +165001 +58130 +2175487 +58021 +165027 +58106 +316680 +2858536 +208838 +1093741 +208884 +1104857 +1104871 +165193 +208872 +165152 +276880 +58783 +2794878 +2858575 +276970 +58987 +1817518 +58662 +58645 +165157 +165238 +208916 +58936 +58234 +1919164 +58605 +293739 +316712 +58694 +1084833 +58737 +2795030 +276937 +1202892 +293732 +293755 +165239 +165083 +165388 +276974 +208923 +2794976 +165462 +877906 +2795017 +165372 +58210 +2858606 +58742 +58417 +165366 +276969 +293654 +276856 +293652 +165323 +165276 +91832 +58250 +276994 +58547 +316702 +58909 +1473814 +165230 +293731 +91818 +2795033 +1521334 +2794974 +58571 +208845 +769437 +58705 +58316 +241874 +2795047 +58236 +2858607 +293650 +165288 +2794917 +241884 +2858603 +241913 +165401 +208896 +58810 +2795005 +58803 +165098 +208967 +276959 +58955 +91839 +622398 +58751 +58473 +58537 +316740 +58697 +1104868 +2266034 +165437 +58599 +58844 +208857 +276918 +208897 +58996 +165225 +165341 +316781 +91838 +165080 +316785 +58272 +208862 +58941 +241893 +58795 +208968 +59082 +622399 +760353 +165261 +2795048 +58274 +1521327 +58765 +378303 +58216 +316725 +2794896 +165146 +2266050 +58266 +58579 +58930 +58986 +331531 +165247 +91819 +2266032 +316728 +208847 +622414 +1093737 +276866 +59045 +165405 +58567 +2794970 +58808 +58549 +2795034 +241869 +17140 +276973 +58503 +276855 +276935 +58292 +58851 +877930 +58680 +165357 +277004 +58293 +208928 +2794858 +58484 +165452 +165191 +165411 +17138 +1139501 +293669 +622423 +2858609 +165251 +2064166 +2858595 +316784 +208868 +58453 +165391 +293742 +58954 +241911 +165333 +2858636 +58805 +2266062 +2794948 +241924 +58594 +58554 +58983 +165335 +58684 +165087 +58593 +208953 +58781 +2794977 +58653 +58391 +2794925 +165234 +293636 +1676652 +1653807 +276909 +58636 +17143 +58900 +208945 +59006 +58706 +378320 +165176 +1202896 +2795039 +165322 +165326 +293620 +2266014 +241946 +165062 +58542 +2795008 +877888 +59064 +2794890 +1653806 +2858617 +2266049 +2794963 +2266067 +58225 +241879 +165164 +58837 +165400 +1754548 +241873 +165282 +58555 +58532 +293670 +2858572 +58399 +165161 +1187331 +58498 +165337 +58869 +208888 +293621 +241934 +316754 +2794871 +2795085 +1187328 +293747 +58700 +293737 +165100 +877909 +293733 +58927 +165245 +165203 +2795053 +769423 +165344 +1088023 +2858562 +208985 +165084 +58872 +165108 +2266025 +58552 +165136 +2794959 +293901 +59420 +165549 +165627 +1760784 +622427 +293881 +165679 +165535 +59368 +1653821 +59129 +1048630 +59340 +165485 +1048551 +59186 +1048549 +59286 +2064173 +59280 +1048610 +293894 +1707094 +59297 +293909 +1732923 +59242 +1048483 +1048517 +293868 +1048470 +1048519 +59163 +1048645 +622436 +293856 +1048654 +1048572 +316855 +165540 +316841 +1048628 +59136 +1760795 +59334 +391512 +1048637 +2795118 +2626011 +59443 +59162 +293916 +165686 +293906 +293911 +1048601 +165638 +293771 +165522 +2795140 +316802 +59347 +293903 +316874 +316960 +59120 +2795113 +59249 +165538 +59253 +59408 +165571 +1048566 +165624 +622440 +1653842 +165662 +165700 +2682101 +316886 +2652160 +59367 +1048644 +2414130 +1473832 +59324 +2795132 +165674 +1760791 +1760794 +293861 +1653818 +1653820 +293773 +1048633 +1653814 +1473841 +391502 +293788 +165550 +59224 +59449 +293842 +316809 +59217 +1048621 +165669 +316945 +59247 +165480 +59321 +59178 +59140 +316850 +877968 +293874 +316972 +1653838 +1048465 +2414139 +316793 +59382 +165612 +391504 +316897 +316797 +293833 +2064171 +165680 +316815 +165555 +1653832 +59444 +165713 +1048482 +59184 +622437 +316965 +59332 +59307 +1048545 +877962 +1754559 +391515 +316899 +316918 +2795115 +59130 +59258 +1048488 +59326 +165641 +1473827 +293895 +59301 +59108 +316804 +165585 +622430 +59172 +59254 +1048841 +1474032 +59657 +1049091 +317236 +1653942 +1048839 +166303 +1048877 +1046748 +2689481 +59808 +59602 +1048925 +294019 +2652183 +317162 +878077 +1474007 +1126122 +317192 +165918 +165860 +2682163 +166219 +165995 +1732942 +59654 +2266096 +59776 +2652230 +1112926 +166202 +166145 +165892 +760361 +293994 +59798 +1430577 +2795219 +165736 +878044 +17208 +1126123 +165882 +2064258 +165816 +59477 +878142 +877993 +2652274 +2795185 +166013 +769458 +1126112 +317117 +59715 +391526 +1049255 +1046664 +165949 +59523 +1126081 +622490 +1754631 +1049284 +317163 +391523 +2795209 +391604 +317287 +2682120 +2027033 +59588 +1645462 +59539 +2682109 +165740 +391626 +1473849 +1872909 +1474042 +1049068 +1754570 +1633664 +1046749 +166151 +878145 +1126099 +59848 +59895 +166029 +2652290 +317004 +165733 +1732944 +59573 +391537 +2682171 +166000 +1049273 +166092 +1126088 +1049159 +878041 +391520 +165930 +2652239 +2064207 +1049026 +17211 +165901 +2652194 +1754615 +2652184 +2652310 +2028713 +59919 +2652199 +59826 +317118 +1474069 +1049020 +317142 +1049031 +317216 +1041525 +317027 +166027 +2795194 +1048701 +166140 +166356 +1126036 +294071 +59697 +1653853 +878001 +1126051 +166344 +378328 +317044 +1104878 +59579 +165877 +1048921 +59552 +59518 +1041538 +1029254 +1046715 +391568 +317039 +878160 +1653906 +1048865 +391651 +878086 +59596 +1732928 +1474051 +294040 +165868 +165858 +1430574 +2028720 +166076 +622471 +1049300 +166334 +1474019 +877988 +2652298 +1048968 +2652170 +1048787 +1041522 +1048817 +2652233 +878105 +1126094 +166137 +165925 +1409596 +2652182 +1474003 +1754586 +59833 +1126130 +1046747 +59780 +59874 +2626031 +391655 +317210 +59845 +59756 +2682118 +59739 +1653867 +317098 +277017 +59710 +166040 +1048873 +1049006 +1473877 +492886 +391587 +1562724 +1049173 +1049266 +166333 +165922 +317280 +317270 +1049230 +2682167 +165848 +166053 +299833 +2064187 +1049074 +1653851 +2652221 +1046670 +59716 +294077 +317074 +59630 +878080 +1048948 +1048955 +2682111 +878115 +1754579 +317136 +391618 +1653934 +2626030 +317174 +1046723 +1029249 +1048986 +1046751 +294093 +165875 +1049009 +317056 +166023 +59538 +1645420 +1049214 +59503 +1645439 +317183 +2590962 +59860 +2795181 +1633659 +1049117 +166110 +1049125 +1732958 +2064184 +1653908 +317119 +1645442 +1048671 +1473920 +1048804 +2652268 +1473853 +1046721 +1041520 +1732957 +165973 +2795196 +59849 +165900 +2064275 +2064233 +166276 +1048908 +1754651 +1653899 +317043 +317185 +166341 +2652317 +1049096 +537544 +1220764 +59559 +293999 +293936 +165965 +59759 +2590952 +165904 +166317 +2652245 +59677 +1474014 +59820 +1919181 +59622 +1048670 +1474076 +1653921 +1754629 +1046724 +317097 +165909 +293946 +1645427 +1048938 +2652207 +166218 +1049158 +317264 +1049166 +2652185 +2266070 +165737 +1126097 +1473969 +878121 +1126043 +1049003 +165746 +294068 +878038 +1126087 +1430565 +1041543 +878047 +1245075 +1046710 +1048901 +1473986 +317255 +317133 +878157 +622493 +317024 +293952 +166230 +299828 +317230 +2795213 +299825 +1473895 +317241 +166058 +1049062 +165847 +165895 +1041518 +2266088 +1048715 +2266103 +2652225 +1473933 +166337 +2682152 +1474056 +1046744 +1049109 +317114 +1048688 +2064212 +1473876 +1653865 +1048721 +1474001 +59752 +1937395 +1653891 +294035 +1049263 +317148 +59847 +165851 +1049238 +1126073 +1046682 +1049127 +1046714 +59899 +2027037 +166139 +2064253 +317211 +166134 +1049104 +1473987 +317126 +1653923 +1473973 +1754632 +1048875 +166086 +1474013 +165788 +59597 +1046732 +317161 +2682164 +1048733 +1049281 +1126135 +317037 +1041517 +59765 +1029257 +1048657 +769447 +293921 +1046742 +2652295 +2682150 +1653856 +165876 +1473855 +2028758 +1049018 +1049258 +166188 +1049243 +1048775 +391570 +165844 +1049297 +1049220 +17216 +166217 +299835 +2028734 +2028746 +2795200 +59837 +1046676 +2795183 +59836 +1048826 +391533 +294013 +299832 +166296 +165948 +1048953 +1653863 +1049211 +166150 +59546 +878098 +2266097 +60029 +769461 +1041598 +1112935 +1656156 +294188 +1937412 +2064302 +878356 +1474115 +2266122 +2266120 +1474141 +502187 +1126162 +2417468 +502189 +1656037 +166385 +166428 +1041564 +878306 +878215 +2175501 +2278371 +59954 +1041624 +502129 +2064323 +317354 +878189 +878224 +166393 +1126170 +878229 +1041655 +1126190 +391702 +317338 +1041611 +1655945 +166451 +317350 +502165 +1010840 +2414151 +2064316 +502155 +502188 +1656106 +1655986 +391698 +1474125 +1041635 +1655981 +878301 +166401 +1633683 +1656150 +1656032 +294158 +1655998 +1126140 +2266140 +1126193 +1041615 +769497 +1656040 +294120 +294150 +1656167 +1754665 +1656149 +2064336 +294176 +1041648 +1633694 +878298 +878241 +2064317 +1656160 +391687 +1904538 +2064325 +59957 +1656137 +317296 +878323 +59953 +1126167 +294143 +166365 +317342 +1655972 +878219 +60043 +166412 +166430 +2028782 +1474111 +166459 +59944 +622500 +317305 +878311 +502148 +1126206 +294123 +1041617 +1474101 +1474142 +1409622 +878247 +2390416 +878280 +1474132 +2417472 +1937404 +1656017 +502109 +1656148 +1041647 +166425 +294171 +294099 +502192 +878226 +1656157 +878347 +1474098 +1041575 +166361 +878380 +1656003 +1656047 +1655982 +1655969 +1041650 +166408 +1041597 +878261 +502157 +59946 +537546 +391665 +1655974 +1656102 +878187 +878313 +1041656 +1474116 +2028774 +60046 +1656051 +1656033 +1872916 +1126197 +1937415 +1041579 +769559 +60105 +1562726 +1041697 +317418 +878402 +2390483 +294290 +2278455 +317544 +1474304 +60090 +2278504 +1656312 +1656628 +1656410 +2064363 +878663 +1474223 +60193 +878528 +391710 +1656222 +1633706 +878498 +769621 +1656447 +1656579 +2064426 +60062 +878754 +1126223 +1126225 +2689485 +2652339 +2414202 +294223 +2390476 +1294423 +294332 +2064465 +2064359 +2064470 +2652323 +2064454 +60238 +878652 +878455 +1656438 +2064403 +2064406 +317548 +317386 +2278476 +769521 +878486 +166580 +60188 +878714 +769552 +317383 +317470 +60135 +1474293 +1656313 +1474261 +878613 +17225 +2064410 +878659 +166562 +294235 +2278473 +769537 +317402 +2414199 +1041751 +2590975 +2278392 +294304 +317551 +294387 +2417498 +1656471 +2278503 +2278432 +878699 +878686 +502277 +2626053 +1041666 +1656624 +2064451 +2064441 +1656433 +1656294 +622535 +2278448 +1656403 +60301 +2064377 +2390435 +1041689 +60218 +2390426 +1474294 +166538 +878602 +878490 +2390484 +1656416 +2590972 +60054 +317467 +60055 +60206 +294351 +769600 +1656552 +2064475 +60201 +2064432 +878574 +2590980 +2417513 +1656400 +2652325 +2590989 +1656295 +1409630 +2591027 +2266199 +502212 +1041754 +166548 +2417494 +166591 +878493 +878676 +769512 +1656257 +166557 +769550 +1474280 +317413 +878615 +878386 +2064455 +1656575 +2278478 +1041753 +1656516 +1409670 +317374 +294409 +878484 +2590984 +1474237 +2028800 +294336 +294257 +1656594 +2064430 +1633708 +1656660 +1656286 +2278424 +878428 +1474189 +1041758 +1656281 +60170 +166578 +60275 +1656468 +1041691 +166496 +60272 +317550 +1656559 +2064428 +317371 +2390428 +878496 +2390475 +317405 +2040750 +878642 +166631 +769579 +2266208 +769536 +1474274 +1656191 +2390506 +878580 +1474174 +878610 +1656235 +878695 +878416 +2278380 +1409682 +1656309 +1656356 +166504 +502282 +1754692 +2390579 +2414193 +2266203 +878559 +294408 +294363 +1474244 +1294425 +294287 +2414180 +1656352 +878755 +317549 +1656371 +1041728 +1656388 +166555 +2278454 +1474216 +2390587 +1656390 +2591022 +769578 +317407 +878727 +60073 +878720 +1656229 +317516 +878479 +277020 +878766 +1656636 +317567 +294418 +60107 +502264 +1656329 +1656264 +1041663 +878501 +1474314 +294374 +60181 +2591056 +1474252 +60245 +1041710 +60161 +166566 +2040744 +1474229 +294333 +1656260 +878385 +878432 +2590999 +1656538 +1474281 +317559 +2390474 +878715 +166567 +878618 +769586 +294209 +317360 +878770 +1656539 +878725 +2390602 +878668 +878393 +1041673 +166621 +2278435 +2278403 +878639 +2175507 +2064486 +878561 +1474249 +1474297 +1656671 +1656217 +60251 +878779 +2591016 +1126231 +769620 +2390462 +60285 +1474228 +60075 +1656556 +1126224 +1656572 +166595 +878527 +769608 +1656306 +1656243 +1732973 +166546 +622518 +317453 +1948355 +1474278 +1656648 +2390585 +166515 +166592 +2414176 +294419 +2064450 +60209 +2278425 +317546 +1041680 +317506 +1656437 +1409683 +2027045 +294355 +1656319 +166498 +1112953 +878824 +798321 +1112968 +294468 +166719 +2275919 +294456 +798339 +166741 +2266223 +2390616 +1474330 +91894 +60345 +1633711 +299851 +1656722 +91891 +878849 +1126244 +1010886 +1010885 +2652357 +317616 +2278514 +299844 +798326 +2414204 +1656743 +1656729 +294516 +166640 +502284 +294479 +277029 +1732989 +166739 +1656785 +798360 +60339 +1656750 +1656713 +317579 +285957 +1656782 +502298 +2390617 +878840 +878907 +1023759 +166735 +1754705 +294455 +294511 +1648119 +1733035 +1872931 +299853 +1733039 +294498 +622541 +294443 +2390656 +760387 +769643 +878837 +317625 +166726 +2390655 +294439 +294522 +652527 +2795248 +1656736 +878813 +878863 +294495 +2266221 +1754700 +285954 +294488 +1644809 +166701 +1126242 +2175514 +502297 +1656754 +878886 +2275917 +2028803 +299848 +760383 +2040769 +1656681 +2175522 +2652372 +294496 +91890 +166646 +1474324 +1656715 +622537 +2027047 +299842 +878878 +1041766 +878904 +1656789 +166661 +355183 +166668 +2175519 +1656717 +502302 +878811 +60315 +2795243 +2390649 +1733038 +798316 +2390645 +2278510 +1872949 +2275907 +967223 +2652405 +2652394 +167351 +60460 +2591094 +429564 +60461 +167113 +167122 +60627 +166924 +2266248 +60481 +1633783 +91977 +197579 +391718 +317740 +277233 +2795306 +878995 +60362 +492923 +317750 +480112 +2390686 +1126246 +60355 +167408 +294553 +1633777 +492956 +60551 +2492008 +492932 +252480 +277238 +1084837 +1112974 +294599 +878935 +1011063 +299858 +60498 +1562754 +60569 +1011120 +299864 +1754721 +2795287 +391737 +1010919 +209012 +166990 +166839 +209013 +480118 +2795391 +277239 +167101 +277124 +167363 +2652426 +1705407 +167144 +2266232 +277133 +2795401 +967275 +1872966 +878996 +1937440 +480104 +1010993 +167106 +294633 +2492005 +967278 +341005 +166832 +378339 +1562778 +294618 +166844 +622544 +2414207 +167073 +492907 +391730 +1474340 +166857 +1562762 +60543 +167126 +294562 +60449 +277099 +60536 +317669 +167422 +429568 +2795341 +60401 +2795349 +2795379 +167157 +166987 +331535 +1010918 +167226 +277232 +294577 +622564 +429573 +60609 +299861 +391734 +166807 +1803348 +241962 +60496 +1245100 +167209 +294592 +277104 +1010959 +360233 +1011017 +878963 +166814 +492967 +1633744 +1029267 +60579 +277117 +967261 +1919215 +17266 +1011142 +622551 +1633742 +1705413 +2266230 +166950 +1011016 +317670 +331533 +1011160 +2795321 +60501 +166788 +60358 +1011159 +1694065 +60400 +167257 +1733049 +2795414 +1010910 +60592 +167077 +167393 +60503 +355185 +60604 +1084847 +878976 +2652406 +277091 +317653 +167014 +1011057 +166974 +967276 +2175559 +1705406 +60393 +167378 +378340 +967244 +167352 +241974 +1633741 +1803345 +492929 +967249 +166790 +492940 +277043 +91930 +2795400 +167001 +91948 +167333 +1011075 +167003 +317716 +2795324 +2795395 +1705401 +167066 +277119 +2175536 +1220770 +1694074 +1754718 +166830 +317735 +2266245 +317728 +294574 +622557 +277056 +294563 +166928 +1733044 +17295 +60586 +2652416 +2591086 +391727 +879016 +492912 +60567 +1705414 +878924 +167347 +2795340 +1011045 +277069 +1011035 +167117 +492936 +166919 +2266237 +317731 +166779 +60453 +166973 +60479 +1084871 +294548 +294571 +167178 +967233 +2390670 +879024 +166793 +166879 +167295 +1011092 +1010905 +166872 +60440 +1904561 +967259 +167328 +167041 +798370 +167072 +317686 +429566 +1011060 +2795297 +878923 +167356 +878948 +878934 +167306 +91970 +317741 +1010907 +878970 +1919221 +167064 +167095 +2795279 +60472 +17260 +277230 +1126258 +167017 +317749 +167392 +2266255 +166906 +60388 +378336 +437531 +1112979 +879020 +1694075 +2795281 +1757587 +60577 +360229 +492926 +60626 +2390668 +60399 +166775 +1474335 +1937435 +1633809 +878936 +967272 +277195 +1041788 +60492 +1084860 +429570 +967256 +60425 +967246 +878986 +2591085 +492954 +1011121 +91992 +1754714 +622560 +1084850 +1011116 +1633747 +166809 +1705384 +241951 +1633776 +60429 +1011145 +2795314 +277086 +1754729 +317753 +1010995 +2795348 +1079171 +91983 +1011128 +209008 +252475 +2795291 +277157 +1011015 +1126255 +1754715 +1919233 +1430629 +17343 +769653 +92040 +798422 +317835 +209022 +360271 +879131 +355202 +1817525 +360268 +60688 +1562824 +1720413 +299871 +1029353 +2278524 +1430612 +429585 +17385 +1720411 +760401 +1562807 +1474373 +1029334 +760420 +769663 +1904568 +317855 +92036 +1833120 +1754776 +2175590 +967283 +1919247 +60680 +2626059 +60642 +17368 +197599 +277256 +1104906 +798408 +355190 +2591095 +1919230 +366359 +60710 +1029343 +60780 +1904574 +360285 +879046 +1104888 +1245141 +738588 +241994 +1011178 +1733134 +317858 +317826 +1104897 +60797 +317901 +294713 +1474347 +798442 +60674 +1733077 +317775 +299912 +60781 +1521346 +798381 +294672 +2278518 +480154 +2275936 +879081 +2088353 +798404 +299896 +294658 +60736 +2088333 +1172318 +1024932 +1873002 +2591109 +60663 +1754748 +1733106 +317877 +92016 +167510 +1245142 +360253 +2266267 +1720414 +197605 +760422 +798443 +299881 +355200 +277252 +299882 +417551 +294644 +1733074 +1029354 +1474360 +1220792 +429575 +622585 +450079 +317819 +1846265 +760408 +468425 +2414216 +1220826 +167484 +2492014 +197606 +1733067 +1202908 +760407 +923034 +317840 +1733140 +1029276 +317795 +1104891 +1029350 +60803 +355206 +2652444 +317833 +1474367 +317800 +167462 +1029291 +167478 +378377 +1474376 +437544 +1754741 +317794 +1633835 +798393 +317834 +1733155 +2275931 +294686 +1049307 +2591124 +2266265 +1872977 +167500 +167452 +1733113 +1430648 +1041805 +294699 +1873003 +879109 +760411 +760393 +1029299 +60775 +294659 +2275929 +450078 +1093762 +1029271 +1562799 +1754761 +317804 +904204 +60714 +798396 +1430630 +1029273 +1126269 +167457 +1029337 +294680 +1187377 +769657 +1430644 +299869 +1733108 +17347 +1088035 +1187375 +222049 +167443 +692540 +17379 +760414 +879064 +2591136 +1245126 +1873035 +317825 +1633823 +317810 +1126270 +1029318 +17312 +2652446 +197603 +1562818 +2626064 +17307 +1029311 +294669 +167430 +2591099 +285986 +2652458 +798421 +378369 +2652460 +2088321 +2652459 +1029317 +2266295 +1041841 +879073 +2275963 +1733126 +2088322 +1733070 +1187383 +1562801 +1130323 +2275960 +209025 +1720415 +1263816 +1104895 +2626056 +769665 +167585 +1645467 +1653986 +378398 +2795926 +2795806 +879201 +2795940 +437587 +167529 +2795939 +167533 +2795912 +2795923 +2515129 +2795880 +1648143 +360320 +450100 +2390742 +2626070 +360340 +2795731 +493014 +60859 +2795659 +317924 +1633871 +1904587 +2795663 +167611 +492991 +60855 +2626072 +17393 +2492019 +277276 +2795476 +1011189 +1904582 +242009 +2515130 +2795458 +209038 +317911 +468493 +2414230 +2795969 +468499 +1846279 +378387 +2795820 +2795595 +2795615 +2795740 +1024933 +2795479 +167576 +209052 +277272 +2795838 +2795783 +1904591 +317917 +1104911 +2795598 +2795688 +1075170 +2795863 +1733163 +622594 +1653979 +2390729 +1833131 +1521387 +468495 +798474 +294754 +167549 +2535549 +2795675 +468490 +378404 +317941 +1521376 +468435 +391749 +2795982 +2390748 +2795791 +2795968 +879194 +879202 +167613 +2795835 +2795765 +2795985 +2795812 +1126281 +2795957 +1075167 +2795803 +1521381 +2795564 +1653978 +2795565 +60870 +2795599 +317963 +366364 +1011223 +2795744 +1846285 +2795846 +2795984 +167636 +468455 +1126277 +2414222 +2795604 +1126296 +2795843 +2795766 +366367 +2795830 +60823 +1521396 +1648142 +2795833 +2795523 +209057 +2795852 +480156 +1633856 +1245169 +1029362 +2390746 +2652481 +2795774 +299920 +1521355 +2795988 +1104918 +2795679 +1011203 +2414217 +879181 +2795515 +1024936 +197624 +2795725 +468486 +60811 +879145 +1011202 +2795471 +167591 +468517 +294740 +167535 +2652485 +2795734 +167612 +277267 +2795821 +242008 +348835 +2795677 +60853 +1041848 +2795579 +2795649 +197620 +2795787 +1562829 +2301436 +2795884 +360334 +2795808 +331539 +285992 +760428 +2795529 +285996 +2795549 +492989 +468513 +437574 +2652497 +2795575 +2414231 +2795698 +1220828 +92048 +360338 +1521360 +2795876 +450107 +2795504 +197614 +2795660 +1011226 +294778 +450106 +2795567 +1833134 +1075166 +60865 +2795738 +2535551 +1653984 +2795635 +167551 +2795545 +1011204 +331542 +61062 +294825 +61137 +2858896 +879350 +1633899 +622680 +167953 +622682 +2859004 +61082 +2796081 +1409718 +2278547 +879371 +468539 +167983 +714932 +622730 +622823 +391770 +294832 +2858759 +908604 +167650 +167763 +378447 +2796146 +1029369 +1169378 +277319 +1633902 +277341 +242040 +2266317 +714908 +468573 +360351 +2858921 +769679 +60991 +61076 +2858944 +167875 +318049 +197639 +2796063 +2796090 +60945 +61078 +318015 +277300 +378419 +1169379 +622885 +60995 +167824 +2858705 +622806 +2858724 +2104697 +2368817 +167923 +318068 +167748 +622745 +60971 +1011252 +622708 +294850 +2796151 +1562844 +879351 +2858774 +252503 +2858712 +2796125 +2858746 +277325 +2858867 +1817531 +1126306 +242063 +879242 +622741 +167656 +2858760 +622599 +2796170 +468561 +2858754 +61033 +2368816 +2858996 +60936 +2858800 +167781 +61114 +167793 +167925 +2858913 +60950 +622864 +2858835 +167818 +1202948 +2858821 +769694 +2858960 +738590 +61138 +879335 +622776 +1011231 +61091 +2796164 +2858979 +2858747 +61027 +468519 +622610 +294847 +318034 +378443 +61135 +944318 +167829 +2858810 +61069 +879231 +277301 +1754807 +2858824 +2858739 +732545 +2858901 +167961 +769689 +622869 +2796037 +167690 +60974 +2266341 +167997 +167933 +1633878 +60887 +1937457 +167803 +2368829 +167755 +2104696 +1011254 +622940 +2796131 +61031 +318070 +378414 +2858849 +622974 +1409706 +2858676 +209082 +60985 +622919 +2858998 +1633918 +714949 +2266355 +61040 +879244 +2104667 +391755 +2858858 +622748 +622791 +2796078 +167726 +294871 +714917 +1176119 +61092 +167931 +317982 +2858933 +167771 +277315 +622667 +2858826 +167949 +670553 +60931 +167758 +1817532 +2549507 +167684 +2858977 +622735 +294838 +2796017 +1367087 +468565 +378428 +2266367 +714954 +2858985 +2796069 +1176121 +714891 +1202936 +2796206 +2796141 +167721 +1733189 +167750 +2858743 +622744 +1474395 +2858973 +2859010 +60898 +2858718 +879331 +2858850 +209097 +622764 +2858696 +622943 +622618 +714955 +2858970 +622934 +2104671 +167760 +2368832 +2858918 +1294439 +60896 +61008 +348836 +2858912 +1937477 +1011272 +2858675 +60891 +2796130 +2796210 +2796104 +1041868 +879296 +2858971 +2858673 +242079 +1733181 +1011289 +2422195 +317991 +2858805 +2549512 +2535560 +879290 +622659 +2858695 +60907 +167677 +277331 +294785 +2266303 +294856 +1754792 +242029 +167698 +1754810 +1011269 +294862 +252505 +167880 +2368820 +167702 +2858997 +879354 +341011 +2266298 +622796 +2368815 +769699 +1011298 +2795994 +2858834 +61054 +60906 +2368822 +437601 +1263822 +468581 +2796136 +2796138 +299927 +2858988 +209087 +1011267 +2858722 +167731 +1937461 +167728 +318052 +1202937 +2175614 +61051 +879388 +60941 +167720 +1733184 +2104672 +167892 +1245172 +294804 +622897 +318091 +2104703 +168084 +277359 +242086 +294899 +168081 +1245181 +168073 +1263823 +168074 +480162 +1754838 +1780564 +318121 +378468 +468598 +286004 +209123 +411647 +1937492 +2492030 +168072 +61146 +1011302 +1041884 +1011312 +2266393 +168083 +2361229 +209124 +61181 +1633920 +1011320 +2266395 +652531 +622985 +1919266 +61194 +1245195 +61190 +318099 +294879 +493018 +92057 +1919268 +1011331 +2492028 +378485 +1633931 +1803359 +1245189 +798479 +2275969 +391792 +2353275 +197640 +366381 +1245192 +2682214 +1937493 +879414 +1919271 +61143 +1245180 +944335 +1754836 +1202956 +1104929 +2175620 +468607 +429608 +2266392 +366378 +493047 +1263825 +277356 +378478 +61150 +391779 +468596 +944333 +714962 +277378 +168064 +61147 +450116 +61155 +2652512 +318097 +2266384 +493049 +294873 +378465 +798477 +168146 +335957 +1169381 +622989 +2266396 +468609 +879448 +2796245 +277394 +242129 +61248 +294905 +1060278 +879429 +1803361 +61278 +622988 +61228 +168174 +714965 +2175625 +1763469 +168101 +1011345 +168139 +168163 +1521403 +424846 +61263 +1633948 +1521401 +61229 +437619 +242113 +61236 +168155 +61238 +168120 +1733202 +168136 +168168 +61206 +209135 +242096 +61250 +61243 +2353277 +168175 +714963 +391794 +222079 +1169382 +348841 +1633940 +168181 +1056277 +378487 +1562853 +468612 +879444 +1075180 +168095 +1011348 +242106 +769710 +197650 +17403 +1263829 +61277 +61201 +468651 +1113000 +1733203 +468616 +1919275 +493054 +468630 +450142 +168185 +2331088 +2652515 +168211 +879461 +411649 +468641 +879451 +468648 +537587 +2515137 +623026 +242150 +1562857 +450137 +286006 +197661 +623025 +437626 +879465 +450129 +2266413 +1937500 +692558 +468615 +623017 +360382 +450136 +450122 +391803 +1961650 +468639 +168187 +437623 +391801 +623022 +391795 +692560 +242143 +318154 +429619 +299935 +2275972 +1562856 +299933 +222084 +360379 +318136 +1029375 +798484 +378508 +429618 +318151 +437637 +294906 +61307 +2652514 +2088385 +2492034 +1245205 +168196 +1989545 +2722375 +2331086 +360387 +2266407 +17406 +879453 +355241 +2088384 +468638 +1733216 +1754847 +623126 +378525 +769719 +879487 +197673 +879477 +242177 +197676 +1395703 +623114 +318199 +61344 +1754853 +1041902 +944370 +1562874 +715009 +2517506 +493064 +879483 +1029382 +1075188 +692567 +468662 +209169 +1139506 +1126338 +1733215 +714992 +242182 +318178 +1633967 +1633977 +1202970 +623089 +1041896 +1754845 +318185 +623149 +2760201 +1634002 +168257 +209176 +944373 +1104949 +2796253 +437648 +537602 +623057 +1904605 +723961 +1041892 +1126335 +2859023 +1562871 +61319 +360396 +168258 +1474432 +429625 +879478 +318201 +294948 +1846288 +2421869 +1733217 +944393 +209192 +299942 +1245213 +715008 +714994 +944391 +1521425 +1634000 +692568 +623124 +879503 +1733212 +879479 +242158 +294930 +168229 +1245216 +61367 +715001 +61323 +537597 +61357 +318163 +318180 +318208 +1202968 +2796252 +715007 +1367088 +391811 +623092 +879482 +294941 +1633993 +168264 +1202990 +1202983 +209167 +209177 +879514 +923067 +879528 +391817 +723962 +879522 +1011363 +879521 +2869435 +1562878 +1060290 +537609 +692571 +537608 +1093789 +1388482 +2492042 +61384 +1029383 +318213 +1245220 +879532 +318255 +879533 +967323 +2266419 +1474450 +168327 +242201 +1011378 +744867 +92082 +318288 +318254 +1562884 +437662 +294966 +437674 +168317 +468684 +378539 +723964 +168341 +242198 +168314 +879542 +437665 +429632 +391823 +294984 +286014 +2869450 +17411 +378553 +222095 +715022 +318285 +2796268 +168331 +61410 +318226 +944398 +168300 +360416 +209201 +437669 +168307 +318289 +1104959 +61390 +437661 +168292 +1634015 +318274 +168283 +468688 +391821 +2796278 +623168 +294973 +2175636 +493079 +715017 +944399 +92080 +299947 +168326 +168318 +1562885 +623173 +1011377 +2353284 +715020 +1919277 +468700 +468723 +1474455 +355252 +1245232 +623200 +360439 +1029387 +1904614 +277453 +1733235 +2652531 +1873106 +692580 +493092 +879576 +1919281 +1203003 +1989547 +1873099 +1029392 +1093793 +1833143 +1130331 +168359 +318300 +437676 +944406 +1011382 +623210 +1187424 +1873093 +1041913 +1712645 +1873102 +1562895 +378580 +17415 +468719 +1367099 +168358 +944402 +468708 +879572 +318308 +1041911 +1969293 +61432 +1634019 +450164 +366416 +335961 +429646 +168354 +879553 +2731690 +429641 +168356 +1562889 +222101 +318298 +1634024 +222099 +450169 +242211 +1172336 +17423 +1344225 +2517511 +378592 +879596 +378593 +1873125 +1873134 +1474459 +723966 +1873129 +879592 +1041917 +92094 +242218 +1873131 +355255 +318321 +670578 +879590 +1041920 +437697 +1562899 +2517524 +1645476 +798512 +366435 +798508 +1833145 +2175646 +879588 +1803368 +2517532 +450183 +2279827 +2266449 +2517527 +1634029 +450197 +1079195 +242220 +537635 +2421870 +61453 +879581 +798511 +468733 +1130336 +1029402 +360446 +967327 +879586 +1873118 +692585 +429652 +429658 +1245233 +1187430 +61443 +1873122 +1093801 +715036 +168385 +1634035 +1430665 +299961 +209208 +360448 +1093804 +1399757 +355266 +1904623 +480186 +879632 +623242 +537653 +242228 +1049340 +197708 +168532 +468745 +92141 +1254448 +744870 +1562939 +366471 +1780572 +286034 +349938 +2869459 +537670 +168414 +168501 +352653 +480200 +429679 +1011404 +1634049 +222112 +493127 +2278562 +61460 +1501926 +92111 +1011419 +299983 +493105 +2747974 +344469 +1011415 +1312502 +670581 +366462 +1079196 +480195 +2840748 +378613 +355275 +798515 +1634039 +277491 +2266455 +480185 +2847405 +715047 +1220886 +879606 +537675 +1733277 +92127 +480209 +61492 +1049336 +61468 +1011413 +1562934 +168428 +2652559 +277474 +360459 +742160 +391857 +1873153 +391843 +168529 +2175656 +967360 +537664 +1084882 +715038 +502360 +1873157 +1648157 +2869463 +2266457 +480198 +168479 +168405 +168445 +360462 +429688 +252541 +378621 +1474480 +1220871 +168393 +360464 +967331 +1113014 +1029419 +967333 +437715 +2626078 +1474466 +92122 +2591153 +623280 +318363 +355269 +1187449 +168430 +344473 +277484 +168409 +277489 +318352 +2390766 +692590 +252532 +2652555 +318353 +1733258 +1104974 +92147 +252539 +92136 +1220873 +318396 +92121 +2064515 +1046762 +1093814 +754282 +344471 +2266465 +168419 +493125 +355270 +366479 +1254449 +168486 +1694090 +197719 +1919282 +378630 +2840745 +1654003 +277495 +879624 +2840751 +366458 +61476 +360465 +318406 +923078 +1873151 +318382 +168510 +197718 +391859 +1220876 +537652 +1474477 +299987 +1733271 +2828714 +715041 +366467 +1501924 +967339 +61472 +1562915 +1093811 +1474475 +2652565 +92125 +623292 +295040 +2828696 +429687 +1203017 +61483 +1485139 +252564 +360472 +2301465 +908636 +450230 +1172340 +437732 +2492055 +468780 +197747 +242248 +378636 +1430689 +378638 +623303 +879652 +429699 +879651 +1135068 +468796 +2869476 +537688 +468782 +1093820 +1126365 +318411 +2722381 +1011438 +879649 +168555 +1245254 +798532 +1245260 +242238 +1562961 +2840772 +242242 +493135 +2440247 +908635 +366506 +1093825 +61509 +2840782 +2840785 +2652571 +168583 +1392328 +1634075 +967376 +2626085 +168542 +944427 +923084 +1203021 +1011447 +348853 +61519 +197721 +1329443 +61501 +1754868 +1203027 +944429 +1733283 +723982 +744871 +17439 +360476 +300003 +1733295 +1562947 +2591184 +2840770 +879655 +378637 +378656 +1011437 +1220891 +967381 +450232 +92164 +360477 +1172343 +295052 +1562970 +450231 +1733282 +2440248 +450242 +904221 +2591179 +92172 +1720431 +197724 +360473 +209219 +168541 +1754871 +252575 +1399759 +2175667 +450224 +1919285 +242243 +2869478 +1501941 +2869495 +2840967 +468845 +732552 +623304 +2591188 +2840856 +286041 +1041934 +1011469 +468816 +2840828 +2841044 +2841023 +760444 +1187464 +168643 +2840899 +1474513 +1919288 +2841041 +168614 +2840951 +1474501 +1329449 +2840913 +2390778 +908639 +1084884 +450246 +2840984 +2869555 +355299 +1501933 +168606 +335971 +242251 +2869623 +2869498 +2175680 +437751 +450266 +967410 +2869584 +2869511 +242254 +2841027 +2175682 +61535 +168611 +1501937 +61545 +2028817 +2840976 +468818 +468832 +2869489 +197777 +1329453 +1329451 +1474497 +1817564 +318435 +2840829 +450248 +760442 +1011472 +2840883 +391872 +92199 +2840917 +197749 +1501932 +2869501 +2841026 +2414256 +277539 +1011468 +1634080 +2869491 +197772 +168677 +2840857 +168623 +1245266 +2840800 +1405939 +168600 +1187458 +879705 +2841037 +2028815 +2841009 +1648178 +168630 +1203036 +222136 +417561 +1474488 +2869618 +2869593 +2869504 +879681 +2841001 +61561 +1712672 +61544 +1665538 +168644 +2869523 +2626089 +1733301 +1712665 +493141 +168620 +2841061 +1430698 +450279 +450255 +168673 +61570 +61527 +2535566 +944439 +300011 +468814 +61526 +2869558 +1733304 +1104987 +623319 +623320 +2840971 +429710 +2840884 +1712675 +2840926 +1430693 +378661 +1676685 +2840853 +1634082 +300009 +1733299 +2841008 +2175685 +623311 +2368840 +378680 +168813 +318461 +2841153 +1563012 +623599 +61804 +1474566 +1961676 +168918 +360536 +769804 +2689520 +2266552 +2368853 +61623 +1961708 +1485168 +2492090 +61955 +1634144 +904271 +1634157 +62230 +1088055 +623569 +400319 +879881 +378697 +2700044 +168850 +769760 +2841138 +1634219 +2088418 +2266535 +2069722 +2266570 +1405947 +879710 +879931 +2064591 +61713 +537784 +2301494 +2266604 +2266547 +209284 +623436 +769858 +209410 +2652597 +61785 +437782 +378669 +747125 +2266627 +623588 +209286 +62222 +1634169 +1430708 +209352 +537778 +879955 +222146 +17461 +62018 +879884 +168868 +1712680 +2088412 +62040 +209292 +295094 +2069654 +286051 +623420 +769891 +2028841 +2028829 +1501982 +623541 +2104710 +1172375 +2064664 +1474760 +1378415 +1294499 +1011505 +1474541 +1088062 +1275351 +1294556 +168847 +168867 +17485 +1430734 +537791 +1521487 +61594 +61776 +61883 +1521557 +318501 +1634156 +880075 +769915 +1485148 +1961682 +1873190 +1088065 +1294512 +209336 +209305 +242264 +1961670 +769903 +62164 +1474616 +62108 +944448 +61862 +62150 +295148 +1176183 +1430736 +760486 +1409743 +1821827 +623465 +2652587 +1521505 +2064541 +209340 +1634247 +944481 +1051987 +92218 +1474737 +879831 +168678 +2064629 +623482 +1763527 +197825 +61909 +1474590 +1294546 +1275328 +242278 +1104997 +2700012 +209236 +378710 +1941889 +967426 +879752 +242261 +1060310 +437759 +168812 +1294535 +62060 +61612 +17519 +880002 +209301 +1501978 +61750 +209258 +424852 +908659 +1937515 +61666 +197862 +61777 +1474820 +242294 +2705461 +168886 +2368848 +62197 +2088409 +623487 +1263853 +2266608 +923105 +2796319 +1409731 +1485169 +378706 +1969300 +2278569 +168971 +1521568 +61906 +2104711 +2064616 +880107 +209322 +295117 +17488 +1329458 +62106 +331568 +1521517 +2175710 +1654028 +1645493 +2700058 +879799 +1763499 +197867 +2368845 +168843 +62155 +1634184 +1056283 +1169396 +378687 +715122 +715137 +2069658 +798638 +1474664 +692648 +1474691 +2064581 +2064665 +355322 +2064595 +1474696 +61911 +1294574 +2175712 +2266542 +61986 +168713 +242323 +242296 +2069684 +1409758 +715113 +318447 +62167 +769890 +62076 +2175706 +209311 +623661 +2705395 +1294482 +623459 +2301518 +2700082 +242346 +400316 +331579 +1521474 +61617 +1474528 +62047 +1203045 +168883 +769951 +1985531 +2064720 +197871 +360509 +769774 +760532 +197817 +1720451 +1961678 +1176176 +61702 +623603 +2175748 +62032 +92205 +318456 +1976645 +623394 +61933 +1634228 +2266677 +1969303 +760452 +879847 +209367 +61778 +769947 +1634221 +2266667 +537702 +2266668 +61731 +944446 +61740 +623509 +879759 +2027061 +62045 +769901 +61807 +197875 +1051984 +61676 +331576 +168955 +1430760 +2088407 +1275327 +623438 +1011538 +623437 +880059 +61628 +1312507 +1634189 +1474749 +1275324 +2266675 +295101 +1961712 +2705418 +879714 +61651 +623472 +2028838 +92235 +295076 +61769 +2689518 +378688 +2069643 +623550 +1294513 +378676 +209259 +879726 +2700047 +1275326 +2028844 +715061 +1562989 +378682 +1176138 +2266673 +879762 +2266615 +61864 +1051989 +1409766 +879840 +1176171 +1634140 +2069737 +769818 +2841115 +209371 +1088063 +1050960 +168925 +623543 +2705409 +168695 +62126 +2731695 +2040801 +1474618 +2069723 +2689515 +2266520 +168748 +62166 +967435 +908681 +2064704 +879967 +2266620 +1088077 +1172376 +2841141 +880011 +318467 +2069683 +2064556 +502365 +879823 +879878 +360500 +1133621 +769787 +623624 +760497 +2705422 +1474603 +17496 +295108 +1409750 +1780576 +1474766 +209327 +355313 +62019 +623355 +1474620 +2705463 +61823 +2266624 +623434 +2175715 +2088408 +168921 +2492076 +61635 +1634119 +1821829 +623369 +769798 +168700 +61842 +1329461 +623546 +2266682 +1501967 +1754884 +92214 +277549 +2175730 +1051991 +2266565 +769913 +62225 +1961697 +242308 +623536 +1521461 +61815 +769799 +2266655 +168761 +1985539 +378694 +429721 +168962 +1634151 +2700049 +62065 +623517 +277562 +328154 +1294525 +760543 +2064625 +61897 +1275318 +944485 +879780 +1645484 +1474747 +1474573 +2064523 +242310 +1474597 +1060299 +692658 +1969304 +1176157 +1474572 +623485 +62165 +1397153 +2009949 +1203041 +61723 +798583 +1474719 +880070 +715091 +1409730 +61701 +537758 +2069704 +769869 +62125 +1821810 +295180 +879991 +61913 +61630 +17481 +318466 +2104720 +242321 +769886 +1378419 +2331099 +17487 +168978 +61678 +760479 +1409742 +2700032 +879890 +944487 +17456 +1521524 +1733319 +623341 +1961701 +2069709 +879754 +1763533 +61596 +341032 +92232 +2700054 +168771 +300023 +1763482 +2064709 +61787 +715069 +715077 +1088059 +378703 +1634232 +1763526 +2064584 +1474622 +1430730 +1011530 +623473 +1969309 +1763493 +880105 +1143764 +623553 +1521512 +623367 +2069689 +1409727 +62198 +1050949 +2064534 +1961693 +769931 +1563024 +623492 +1474715 +769764 +252584 +2064708 +1521545 +295077 +1634186 +623387 +1294575 +1474659 +61956 +1474730 +1720448 +168736 +2064533 +1985512 +623627 +1474653 +1562995 +1634234 +1176149 +1474550 +1275365 +209278 +209335 +537710 +623576 +2009951 +623582 +1763505 +760511 +1344256 +61657 +2064701 +1474733 +1654013 +1961675 +1474767 +2841139 +769773 +1430748 +2275977 +328153 +1961714 +168976 +879933 +1948362 +879747 +1275311 +2069724 +1294521 +1961711 +1521488 +2705400 +1409747 +61656 +1763496 +62104 +760493 +209355 +1051985 +61795 +1275306 +738609 +2301482 +2705487 +468857 +1873183 +760540 +1378420 +1521479 +1409741 +61770 +62226 +2705408 +904263 +2064609 +2064615 +2266593 +623346 +2368838 +1430759 +769887 +1873188 +715082 +242360 +168770 +1172348 +61636 +1402418 +2515157 +2064731 +2069688 +623461 +944444 +904272 +209297 +879731 +61867 +168865 +1563030 +61793 +366530 +537737 +537771 +168805 +2064614 +1634237 +61851 +1093849 +1763492 +2104716 +61874 +1474786 +2069653 +879867 +61902 +2700009 +197814 +17543 +62161 +2104714 +1344249 +1011517 +1405950 +61825 +1521532 +360552 +1329463 +2104717 +62014 +62118 +2700068 +1961669 +1474687 +429715 +1720447 +169001 +169056 +2731697 +1029474 +537854 +197883 +1029465 +880154 +967446 +692675 +923112 +1011563 +2175773 +366533 +2744150 +1634259 +2000957 +880146 +2535581 +880133 +1720461 +2755726 +1634258 +880137 +169052 +1873203 +723997 +169061 +169053 +1126375 +318543 +1367111 +1873201 +880131 +17557 +429727 +967460 +92271 +1733328 +1130352 +2652627 +295192 +1203056 +623702 +798656 +1733337 +169073 +169057 +2361255 +923110 +1011581 +623691 +1392332 +2744151 +92255 +692688 +450289 +1989561 +169067 +378716 +2733818 +169072 +1011573 +692671 +537860 +723998 +92266 +169077 +880130 +1720457 +1401509 +92268 +724002 +1187480 +967473 +537863 +169084 +222172 +222169 +2515161 +168998 +197886 +450286 +2266692 +1355308 +1067909 +2492095 +1733340 +242365 +2368860 +537839 +169028 +1563048 +1430815 +724008 +2722385 +2535574 +1733338 +2492103 +360567 +92264 +1817568 +92277 +880136 +967464 +295194 +623709 +62280 +2652666 +1563103 +2841238 +2000961 +2796347 +944520 +2492117 +1029519 +286066 +1011586 +2859045 +1873229 +2175817 +300046 +2859040 +2064745 +1833157 +197892 +2796321 +1521570 +1220929 +1563136 +318554 +2175802 +623741 +537872 +1220924 +300044 +1733353 +537978 +2755731 +1712698 +2390803 +2175799 +1011607 +1105033 +1275379 +923132 +366541 +222191 +2796354 +692704 +1873259 +1041962 +2796330 +2841231 +92287 +318557 +623760 +1712703 +450292 +1976656 +623753 +92289 +1563133 +318555 +2841212 +2652660 +1563084 +1355325 +468874 +300049 +1029500 +2796333 +2040824 +2841171 +880193 +169117 +1817569 +169153 +2796339 +62290 +169150 +17575 +1329477 +1754897 +880209 +1989571 +2652662 +2040823 +537908 +2841213 +300038 +2652641 +967495 +2841225 +1733381 +1041963 +1873239 +2361268 +2841246 +537977 +318572 +537954 +537871 +1873242 +62287 +2175793 +623742 +652546 +366534 +1654032 +360571 +1220938 +169146 +169145 +760558 +2796336 +537932 +2390811 +1485181 +480218 +1294579 +880164 +1430820 +798684 +2175783 +1989565 +2492123 +623761 +798731 +1029495 +92308 +242376 +2175814 +537917 +2841230 +798709 +1676696 +169135 +1011589 +1011596 +1733350 +355333 +967502 +1873260 +366545 +2841234 +732555 +2175789 +537886 +1029485 +967513 +1113033 +2361262 +1126390 +92337 +2331111 +169101 +468873 +2841233 +1029492 +2841173 +2841170 +1648192 +2266716 +2368869 +944529 +1873249 +391887 +1029509 +880217 +880176 +286064 +242375 +1969312 +537927 +2652659 +2841159 +967491 +1046781 +2652667 +1011597 +798687 +2755730 +623745 +2841252 +169143 +2841189 +1041965 +1011605 +1029501 +493151 +692701 +798691 +1563122 +378723 +2652640 +1220937 +923123 +62337 +1521574 +2175823 +2535590 +1919297 +2353301 +242386 +1521571 +1937521 +437800 +880244 +2492125 +169191 +468923 +1563145 +880235 +468899 +209439 +169175 +242380 +2175854 +1873272 +880226 +1733391 +318584 +537986 +1733397 +1873273 +724026 +1041971 +1937523 +378735 +318586 +407811 +738619 +747129 +538022 +750961 +1105034 +750963 +62309 +1029551 +769959 +2722390 +1654034 +692720 +1720470 +318589 +623832 +169205 +2361278 +92341 +537997 +2088440 +468892 +1203068 +538013 +92346 +169165 +1011633 +1712720 +468886 +537979 +1474838 +623809 +62303 +692719 +1011636 +1113055 +2361294 +2736496 +1733406 +1113046 +692708 +295204 +468875 +880248 +2361307 +404505 +1355334 +1976663 +62328 +2040826 +1172381 +242399 +1733389 +538001 +2266718 +1245307 +92343 +2361286 +1937520 +944551 +468913 +1355337 +880222 +468885 +2266727 +242403 +692710 +1995018 +1754920 +92361 +277615 +1705445 +252600 +623857 +1833170 +62352 +1041995 +1654044 +1733423 +242415 +2266760 +1203087 +1105037 +1011691 +798780 +62384 +715185 +692728 +169274 +1976673 +2591240 +1011690 +2005763 +1113057 +1521579 +295221 +1754922 +400326 +1254463 +670621 +732558 +1937532 +1502003 +623838 +378742 +378752 +2796391 +1203090 +2796429 +62381 +1521593 +2535594 +1634300 +2728267 +242421 +92356 +2796412 +169235 +798781 +2626098 +277616 +1135082 +2796388 +1760803 +2796443 +2796470 +2652698 +2796392 +169293 +2626102 +169246 +1011652 +2796460 +2796427 +2175879 +2796402 +1976671 +169267 +169220 +1105046 +1733416 +1563158 +880310 +1344273 +880311 +1634323 +1113066 +318601 +1263861 +2652693 +2796423 +1011697 +1733453 +1873281 +1803389 +1634321 +1011703 +1245332 +1011701 +880314 +1367124 +1733420 +1355348 +880297 +2796396 +62371 +2175872 +2796438 +2591215 +623847 +2859054 +2023858 +2728269 +1705448 +1694102 +2859055 +169217 +277603 +2390822 +277585 +169291 +1245312 +468931 +1694097 +2549532 +1694101 +2755737 +1976670 +1705446 +538053 +538051 +300065 +2796374 +1203092 +2591239 +1245313 +1733451 +1203082 +2549525 +715178 +1833172 +2266757 +169311 +1169405 +1563152 +1041994 +1049356 +1989579 +1397156 +1694099 +1344271 +318604 +1521588 +2682243 +1169404 +1245309 +62347 +1203106 +2266782 +880360 +2064767 +798787 +1113078 +2796492 +880391 +252604 +798791 +2796562 +1563190 +429742 +2841261 +2796566 +1355355 +944587 +2266775 +880395 +1011721 +1563171 +2796518 +348867 +1245343 +2390836 +2064757 +1919304 +967550 +1011729 +2796497 +1312526 +2023860 +2175943 +2828748 +538091 +318616 +1042011 +538122 +62408 +1367143 +62422 +880356 +692742 +880393 +2796515 +1113075 +1263864 +1634340 +1263865 +1126423 +670641 +92385 +692738 +169391 +1011723 +1563167 +318640 +2828773 +798804 +670642 +1312523 +623957 +2023865 +2828758 +880383 +2796555 +538090 +62416 +538089 +538059 +1113073 +2390837 +1521599 +724033 +538110 +468942 +169380 +1093866 +2040836 +2175925 +724035 +2722405 +1130353 +623951 +2175898 +538108 +197913 +2266762 +1733482 +450329 +1733475 +798809 +1113068 +2796577 +169369 +623936 +2175930 +92370 +2796513 +1245342 +2796568 +2040837 +623902 +1093877 +670639 +450337 +2266808 +967547 +2175889 +1355356 +277640 +1937539 +1474854 +724041 +1976688 +1474849 +92387 +1355362 +1948376 +692751 +318627 +429740 +355354 +1634350 +1502008 +1113079 +1976678 +538085 +1046789 +2390840 +2175910 +923154 +538103 +1733461 +724043 +169373 +742163 +1985570 +1367128 +2390839 +197914 +252607 +2492138 +670638 +2828756 +744879 +391911 +623886 +1011715 +1113080 +880358 +1355366 +798784 +1383177 +1430844 +798786 +169367 +1172384 +623909 +1961732 +904285 +2266802 +2175900 +538094 +880390 +1985565 +1275408 +92378 +1654049 +623979 +880373 +318617 +391909 +2692226 +295238 +623894 +2796534 +2005768 +2175924 +2828804 +1634341 +880341 +692748 +480226 +2175915 +670636 +366557 +538112 +1390553 +1388494 +2064778 +2064772 +2796576 +2591248 +2796494 +2492137 +623884 +670647 +391922 +538134 +1989595 +2088442 +724053 +252609 +2175950 +1367150 +1634385 +624010 +715207 +1245347 +300079 +318653 +92400 +318651 +538129 +1919321 +391917 +62436 +252613 +1011738 +2018275 +692756 +169399 +2278575 +623998 +1093883 +1430849 +1563237 +2591253 +1130358 +2652744 +2440259 +169417 +318648 +277647 +1563222 +2731707 +1634370 +344485 +252612 +2414292 +1187526 +62439 +344487 +169402 +1634377 +277650 +1563226 +880412 +1919320 +2353302 +1126433 +652565 +169418 +366584 +2535608 +2266824 +1634374 +2841265 +1371463 +391924 +62444 +1634487 +1989613 +277698 +538219 +92404 +2652823 +1355395 +624217 +2175964 +169614 +2175983 +652606 +1705474 +1474911 +1634470 +2796615 +880554 +624220 +2535610 +2591287 +1474899 +2175978 +1919352 +502383 +2176053 +2331121 +2591312 +692774 +2652799 +624163 +1303380 +1113086 +169580 +1474908 +538204 +1976692 +62446 +1367155 +2652755 +1563337 +2176109 +1011823 +2796620 +538238 +624104 +1989605 +2652781 +1705458 +1634479 +880480 +277722 +2591333 +2008579 +724057 +967579 +967602 +277666 +2652789 +2414296 +624221 +798859 +624120 +2492164 +169588 +624077 +624215 +169630 +92412 +1329518 +1067917 +1329528 +1634464 +2176072 +2008592 +169523 +2652812 +1694113 +2796618 +2040861 +1803396 +967609 +880525 +1919337 +538174 +1563267 +624119 +1303388 +652592 +169511 +1563340 +2535609 +2591295 +880544 +1634405 +2652816 +624067 +295246 +1705468 +2176126 +1961743 +277690 +652576 +1474896 +624135 +378790 +967615 +624146 +967582 +624110 +1563269 +92425 +1294605 +480232 +169450 +2040864 +318677 +1634448 +1563333 +1705461 +1948378 +1042023 +624151 +1329521 +349950 +740008 +880436 +2023873 +1563301 +1430856 +2591292 +498673 +277725 +652580 +1563356 +1563270 +880541 +880520 +2652782 +1113087 +2591282 +880444 +1989615 +624036 +169503 +1329512 +880478 +2591304 +1303401 +880597 +538171 +1563310 +2390881 +300083 +1275417 +1126443 +724055 +880474 +538227 +17612 +277707 +391930 +1294608 +1430858 +880569 +624165 +1563272 +1563281 +169461 +923164 +1919346 +670662 +277678 +480237 +2266834 +1563284 +2492171 +2175971 +1303390 +252632 +1720472 +1705454 +92426 +2652804 +670688 +1634454 +652595 +169474 +2390910 +1011808 +1275416 +1303385 +1371449 +538187 +1105063 +1011811 +670677 +169478 +624199 +341048 +1733514 +624113 +2008571 +2176086 +277672 +92424 +2652776 +880504 +2331133 +1329525 +2176106 +2008590 +2175993 +880494 +318661 +2390885 +798870 +735816 +692770 +1474866 +1705463 +670670 +493177 +169581 +2331128 +538195 +1941913 +1705457 +252637 +2064795 +222210 +624142 +2266833 +169587 +2176017 +92418 +2390865 +92419 +798834 +880545 +169565 +2390878 +1563334 +1634408 +2176099 +1803400 +169543 +624129 +670672 +624068 +169507 +670685 +2176122 +300084 +2390926 +318670 +670653 +624033 +2266854 +798855 +169628 +1474889 +1371459 +2591270 +1084886 +1705470 +2652751 +1634452 +967571 +880449 +1275446 +2796639 +1873321 +2176146 +1563393 +880612 +1563369 +2652839 +1187533 +169651 +2040867 +1634498 +2652834 +2796627 +2018276 +277738 +2176175 +1113098 +2007880 +2710848 +1941918 +1563397 +2331151 +2176157 +2331155 +2353308 +1754943 +538260 +2492173 +538276 +944608 +169647 +2492189 +1430880 +2331185 +1220983 +169672 +1803404 +17616 +1961748 +2301552 +967629 +1976700 +880608 +1563375 +17619 +1563381 +1563400 +967626 +880626 +92448 +624234 +318679 +1757600 +1780586 +2841268 +2331159 +1961747 +1105071 +1329536 +2700090 +1873326 +1011844 +169658 +1634505 +2417529 +2176174 +169676 +2390946 +2018277 +1294620 +169684 +1485186 +1169411 +624239 +2652832 +2353315 +2331165 +2492172 +2796635 +169663 +880618 +2176178 +2176163 +2828844 +2652837 +2796655 +2266888 +2390945 +1329540 +1275435 +1563413 +2176149 +798899 +1011843 +1275432 +1563378 +1011832 +2828833 +624232 +62472 +2828822 +538303 +2796664 +1011905 +1011870 +62480 +670714 +1634551 +1011933 +92478 +538312 +1733531 +1011862 +1049368 +1113101 +242458 +967693 +1645510 +2591353 +1733541 +880690 +1634554 +2040882 +1919376 +2064829 +1011858 +1474951 +538298 +1355414 +2492215 +1563477 +967687 +880726 +967650 +493189 +2652861 +2796685 +538315 +944611 +624255 +1130362 +798933 +538285 +538321 +2266925 +967637 +2368875 +2796688 +62487 +880661 +2266924 +1303415 +1634558 +880728 +1563422 +2266916 +1941926 +967679 +2331189 +2492207 +1563460 +880664 +715217 +2652854 +538316 +2331200 +1563452 +1399772 +880654 +624325 +624283 +92463 +1355413 +2652878 +1474922 +2266903 +715227 +1634528 +760580 +1563434 +2266921 +2023882 +1694144 +880702 +277750 +624294 +2176209 +277751 +2266955 +1409773 +670715 +798959 +2652851 +1312573 +62484 +538305 +1873328 +1733528 +2266907 +1563450 +1634557 +2176210 +1329542 +880687 +1961751 +944612 +2176249 +169778 +1969317 +1430910 +538278 +1011934 +967691 +252651 +538317 +1011888 +2652849 +967645 +300088 +670706 +2652881 +880685 +880730 +1029595 +538343 +1093888 +624290 +424857 +2266909 +2176224 +2040879 +1126463 +1383189 +252646 +1245359 +715219 +242457 +498678 +1474931 +2088460 +92469 +1409774 +2176241 +1563426 +880701 +944615 +624314 +1873330 +1355411 +692792 +798939 +1430915 +798925 +1873338 +169779 +1694128 +169722 +1329547 +169775 +1733547 +1011857 +1654051 +724060 +1803412 +1563453 +169727 +904286 +880737 +1873332 +2492191 +277746 +1011937 +798958 +1833183 +880734 +480247 +2796684 +1941928 +1126448 +1474955 +2682259 +624265 +1873334 +318682 +1683846 +880739 +1733567 +1312577 +197933 +1873368 +2176274 +724085 +1563491 +1113120 +1474976 +2796707 +1430922 +1904688 +624400 +1126478 +692820 +2749354 +1634601 +1733578 +624396 +1989635 +2652898 +1011953 +169839 +169798 +538379 +300094 +538367 +1733577 +1563529 +277795 +880851 +1254477 +724075 +1563499 +391942 +2755777 +2652918 +1754967 +1079207 +624410 +2652891 +1873352 +2796708 +2796731 +1989644 +1294638 +169846 +1733587 +1563535 +92492 +880774 +318693 +670738 +1873365 +1712735 +62501 +1011974 +2591373 +670734 +1563497 +1989633 +1126490 +92500 +277778 +277780 +1388508 +2796698 +1011957 +1634584 +798971 +2796755 +1733572 +1126487 +169815 +1563547 +624378 +318700 +1754963 +624423 +318706 +1312578 +1344289 +1634581 +2652914 +1203116 +624386 +1563557 +1989632 +624394 +1733581 +1985584 +2796702 +923178 +1904678 +2301563 +2828863 +1873371 +2828893 +538351 +2755769 +670735 +1029598 +2390965 +1989636 +1904690 +2828892 +670720 +944617 +2744152 +880828 +169870 +624330 +2796765 +2828903 +1563553 +2828847 +670729 +624379 +277791 +169812 +1720476 +2796722 +2278580 +2796730 +967725 +1187536 +538372 +1474969 +1355423 +341050 +92495 +1029605 +1989653 +880831 +1634589 +1760812 +2755779 +624336 +2749353 +1563514 +1011950 +92514 +2796758 +1220996 +1029602 +747133 +1011956 +538389 +2828880 +1046804 +1989660 +169817 +2722422 +798979 +538401 +2266965 +1367167 +277765 +2652905 +2796725 +798974 +169885 +538364 +738633 +1113114 +295262 +1733590 +378797 +1904682 +880785 +1976711 +169853 +2440271 +1312580 +724088 +538391 +1245365 +2007884 +2064840 +624411 +624418 +2390970 +2682265 +2747996 +2064842 +1275476 +2652940 +944624 +2695569 +1563567 +169943 +2064843 +2417543 +169903 +769983 +1012027 +1873391 +1937555 +348872 +1733600 +169959 +1733595 +277810 +2740024 +1563569 +169940 +1803416 +1221002 +799005 +1012000 +2841281 +2652934 +880889 +880869 +1937560 +670742 +2796820 +769980 +1187539 +1969318 +2417549 +2176289 +1904697 +1563579 +2390977 +1733604 +1634605 +2728271 +2417539 +169907 +2353327 +670750 +169963 +538415 +967739 +169931 +2796840 +1733594 +2796808 +1012011 +1563581 +2796824 +1521615 +1817589 +1976716 +624441 +2755783 +169935 +169927 +2417541 +2390980 +967740 +169965 +2796805 +2652925 +1961754 +967745 +1995026 +1941933 +1634630 +1634628 +2755785 +880853 +1011999 +493200 +538411 +1648228 +1403462 +1245374 +624442 +1634636 +277807 +1011998 +2796768 +1563571 +169918 +2841282 +1634622 +1989669 +2796853 +1485189 +2796864 +2331206 +2266973 +277799 +624439 +880862 +1919384 +1012026 +2417565 +880933 +170001 +170038 +1388512 +799020 +1012057 +2685073 +624504 +62539 +1430946 +2266991 +62545 +538445 +1937578 +1904703 +624471 +880914 +2591378 +1733608 +1126496 +1126497 +2722437 +1371481 +1563599 +652646 +502408 +2626116 +62555 +880891 +1113130 +252681 +880952 +2591379 +880917 +1371486 +352668 +1937583 +1294650 +1375991 +1263886 +2064851 +670760 +769987 +277826 +2266999 +2740027 +1873394 +692832 +277831 +624515 +624499 +1012084 +170039 +1563606 +348873 +1521620 +745376 +1474995 +880893 +2390985 +1733610 +1012091 +1563595 +624461 +424862 +1976720 +170000 +1757604 +277830 +169980 +2176309 +2176305 +2266988 +1634665 +624511 +1502033 +2417562 +170008 +1563609 +1375994 +424864 +2591381 +624465 +2796902 +1563619 +2652986 +1275518 +2176462 +1563657 +2535622 +2755789 +277849 +2176425 +92542 +1976727 +2176366 +1329571 +538462 +170076 +170060 +881000 +1634668 +2391028 +1563630 +880990 +1961763 +252703 +2492260 +385049 +2692245 +1502036 +1113134 +2176402 +2267003 +2755795 +1733622 +799053 +2736522 +1634669 +252705 +1430963 +1976728 +1329569 +1060334 +170071 +2391001 +692834 +2000976 +1430961 +2176406 +2176407 +1012109 +2653011 +1502039 +1694173 +2652981 +760598 +1563638 +2391006 +799027 +1502037 +2267000 +1187541 +2722445 +1029617 +1873405 +92546 +1275540 +2176423 +2591402 +348877 +1371490 +1275527 +1430953 +2591405 +252686 +2176341 +2176459 +2653025 +92545 +2722450 +2755808 +62579 +2755810 +2088476 +2301569 +799040 +2492272 +1275539 +252699 +670771 +1961760 +2391014 +252698 +286082 +1712738 +1873402 +2653040 +2176348 +2000972 +277859 +1312599 +2722454 +2391016 +1475012 +277863 +1563617 +2736508 +1833192 +2391009 +1275505 +277855 +2176454 +2492251 +2414316 +1961767 +1563632 +2736512 +2176451 +2390998 +2176428 +62575 +880995 +1648239 +760595 +2426509 +2653015 +2176393 +670772 +2743429 +2391008 +2176424 +2722453 +1329564 +2755811 +170061 +1012112 +1644814 +967771 +2492254 +2492239 +92551 +1275535 +880980 +1989678 +880991 +2492240 +277845 +1563646 +2653162 +692840 +1941971 +2176487 +1563673 +2692249 +1303434 +2176603 +881038 +1303471 +2391100 +1634688 +1312612 +2710892 +2591477 +2692248 +2391050 +1430999 +295272 +881012 +2653045 +2700115 +1303469 +1563695 +2417586 +2722496 +2301581 +2591474 +2722467 +1485191 +881011 +1355444 +2391120 +1430986 +62584 +366590 +624537 +881027 +2176531 +2176547 +1355448 +1941950 +799085 +170113 +1951393 +2591469 +2653109 +1312607 +1329576 +1961769 +1329580 +1275567 +1475029 +2731717 +2040908 +2722479 +2176582 +2653104 +1303467 +2391118 +2267039 +2710890 +2176470 +2391094 +2591425 +2176568 +2040913 +1941953 +1475035 +1976732 +277876 +2492283 +2591438 +2391135 +2267045 +2391107 +1989683 +799082 +1303475 +1371498 +1355449 +2591417 +1989685 +2653124 +429754 +1312606 +2391115 +2267009 +2176599 +2417581 +2331251 +2391046 +450361 +2653170 +170110 +2176596 +2710887 +2391105 +62582 +2710869 +2331257 +538502 +2417568 +1275568 +1941968 +624559 +624554 +2176562 +2361337 +2267019 +2710888 +1502042 +799086 +2653088 +881007 +1294681 +2653168 +92564 +2653058 +967780 +2176498 +2700119 +1303465 +1563686 +1275564 +2331246 +2176513 +2391066 +2591471 +62620 +2829148 +2361343 +624631 +2829093 +295289 +2847455 +2847438 +2829010 +1733648 +1712761 +2535634 +2847600 +1475062 +2088498 +1941984 +881086 +2829050 +1833196 +624586 +62640 +1648253 +277896 +2829187 +2361348 +1329588 +277882 +62656 +2069747 +1707861 +2354458 +2847517 +2104761 +2829191 +62710 +2829173 +2535629 +2828932 +624605 +318749 +1941987 +2847520 +2176623 +209518 +2847555 +2829036 +318736 +2847724 +2828917 +62663 +1329585 +2829031 +2829140 +2828953 +1833200 +1833197 +1948393 +2591508 +1203120 +397273 +624580 +770003 +2847759 +2829044 +1024994 +1475066 +62661 +2847430 +908724 +732572 +1024987 +624584 +295292 +2847694 +2847525 +2847449 +944672 +170139 +2847441 +1733645 +17648 +242479 +209500 +2847558 +2847445 +2285821 +1720500 +2847562 +2267051 +242494 +1329582 +2700125 +2515182 +923188 +209507 +170117 +2829107 +2829055 +624602 +624650 +2847666 +2847692 +1431010 +209522 +1948394 +1712763 +2829135 +209519 +2828983 +1275573 +2847512 +2847461 +1355453 +624633 +2535646 +1720487 +170161 +1012133 +2176626 +62606 +2847548 +2354470 +2391150 +170123 +624645 +2653179 +1873422 +1475060 +2847739 +881055 +2847597 +2828935 +881081 +2069744 +62681 +670782 +538551 +62589 +2847611 +62645 +624592 +2847537 +944666 +2829108 +881071 +2361344 +538531 +62665 +1012126 +242498 +2847551 +2847697 +2829080 +2591510 +715258 +624582 +2828993 +1873415 +2361341 +2828957 +1904706 +624640 +318744 +300112 +538524 +2591488 +2829112 +1169419 +2847465 +799097 +2847704 +62652 +468978 +300110 +770007 +2847450 +2829146 +1803419 +692845 +2088491 +2847607 +2828967 +1648250 +2391152 +2847698 +170160 +2847648 +2829066 +2847713 +1405965 +1042053 +1012128 +2829028 +2517538 +1042063 +923198 +341059 +2847544 +252724 +62750 +2797135 +2798235 +2797985 +2798170 +2841322 +2841391 +2796974 +1951407 +2797590 +2798018 +2798079 +1475102 +2798255 +1634736 +1084989 +277976 +2797718 +2798227 +1012167 +624657 +1084985 +2798698 +2797779 +2797110 +2797363 +277941 +2841400 +2796987 +2798197 +2797272 +2798478 +277954 +62749 +1634705 +2798624 +170254 +2841399 +2798084 +2797314 +2797390 +2797786 +2797290 +2798498 +2653234 +1263896 +2797607 +349963 +2829256 +278043 +2841487 +2797343 +2797483 +881125 +2798399 +170185 +170231 +1169432 +2797042 +2797038 +352695 +349962 +2797592 +2798607 +1012145 +352743 +2797547 +1012155 +2797649 +2797338 +277906 +2797287 +2841422 +1084957 +2797790 +2798171 +2841329 +170163 +2841379 +2796957 +2847764 +2797302 +2798388 +318761 +352717 +2797716 +2797606 +2841373 +277984 +2797777 +1012205 +2653211 +1084972 +2798476 +2798117 +170183 +352783 +2798268 +2841356 +352683 +2653183 +2797410 +2653263 +1634728 +252720 +1563701 +2797626 +2798249 +2841445 +2797370 +2798278 +2797251 +2797283 +2797801 +2798598 +2829259 +1084987 +2797536 +624672 +2797002 +2797904 +2798537 +2797654 +2798668 +2797048 +2798671 +1084926 +2797898 +1049405 +62767 +2798377 +1312623 +2829239 +2798447 +2797412 +2797013 +2798685 +2798012 +2841346 +2841320 +2797030 +2798492 +1012183 +2798402 +2797198 +277922 +2797132 +1084947 +2797379 +1254503 +277950 +2797295 +2797877 +2829240 +2797234 +2798081 +2797888 +2798101 +2797538 +2841480 +2796956 +2798031 +2797311 +2797180 +2798022 +2798217 +2797001 +2797925 +2653241 +1995031 +2829264 +2797629 +2797377 +2797150 +2798466 +2797122 +624669 +2798179 +92572 +1084986 +2797367 +2798196 +502419 +2797253 +277900 +2797307 +352740 +2797004 +2798512 +2798534 +352680 +2798580 +2797034 +2797580 +2841369 +2798452 +2797374 +652676 +2710900 +2797407 +277919 +2797261 +2796930 +2841494 +2798266 +2798044 +1084939 +1049392 +1634725 +2797619 +170186 +2841435 +2797674 +278019 +881152 +2797948 +2798026 +2797501 +2841404 +2653237 +2797669 +2798691 +2798156 +2798058 +2798346 +2798684 +1475104 +2797678 +349964 +2797935 +2798509 +1084994 +2841371 +2798240 +2797120 +2798289 +277927 +2797409 +277968 +1012185 +278050 +2798336 +502432 +2797986 +2798574 +2797753 +2797194 +2798554 +2798508 +1084998 +2797984 +2798618 +2797824 +2797210 +2798076 +2797112 +2798443 +2798204 +2797692 +2797471 +2841478 +2841313 +2797318 +2798099 +2797130 +1012173 +2797837 +2841338 +2797905 +62711 +2841348 +624665 +1941991 +1294701 +1263892 +62718 +2796949 +2797647 +2798010 +1169427 +2176641 +2798633 +2682302 +2841434 +2798285 +2797776 +1941992 +2798552 +2841349 +2798672 +2841496 +2797016 +2797727 +2798250 +2797205 +2798424 +1169420 +2653210 +2798050 +2841407 +2797427 +2798367 +1085001 +1475116 +2797140 +2797876 +2798073 +2797312 +2798641 +2176634 +1275583 +1012143 +2798631 +2797260 +2797879 +1049412 +2797817 +2797017 +1656805 +2796953 +2841381 +1012201 +2797358 +2841357 +1169430 +2841459 +318754 +352737 +278056 +2799312 +2801481 +2802285 +2801722 +2801520 +2801474 +2802724 +2829871 +2802648 +2802024 +170454 +278117 +2801352 +2801836 +1634807 +170492 +2801279 +318817 +2829725 +2802279 +2798721 +170415 +2799443 +2802311 +2829849 +2800061 +170326 +2802125 +1042108 +2801224 +2802859 +1049465 +2800782 +170387 +2803036 +2802255 +2800267 +2802196 +2800837 +62937 +2829313 +2802204 +62774 +2801134 +170466 +2802547 +2829498 +2801203 +2830232 +2800503 +2798717 +2801253 +2801066 +2799478 +2802850 +2802703 +2801232 +2799514 +2800817 +2799259 +2801254 +2800308 +2800481 +2841566 +2829428 +2799555 +62780 +2829668 +2799230 +881179 +2801366 +170343 +1634741 +881214 +2802040 +1475123 +881281 +2801090 +2682378 +2800699 +2801886 +2800614 +2800210 +2829733 +2800260 +2803023 +2800478 +2830057 +2802604 +62943 +2841823 +2841720 +2830138 +1042109 +2841713 +2799545 +360594 +2841712 +2829331 +2800140 +295375 +2800730 +2841777 +2800882 +1012255 +2803039 +2799430 +1042117 +2830036 +2798886 +2800973 +2802084 +2801163 +2801122 +2829387 +1475120 +1126518 +2800933 +2802167 +2802996 +2841769 +2829941 +2841785 +2798862 +170292 +2802354 +2798850 +2800252 +2799192 +2829352 +2829393 +2800154 +2802959 +2802847 +2829555 +1475170 +2800208 +2801625 +2802451 +2829670 +2801460 +2802843 +62872 +2841646 +2801589 +2798872 +2830008 +2802060 +2802117 +2801412 +2830029 +2800773 +2800192 +2829900 +2802105 +295321 +2799329 +2800815 +2800924 +1012237 +2829810 +2799960 +2803047 +881251 +295364 +1105087 +2799938 +881188 +2799925 +2830038 +2799941 +2802224 +2799419 +2800173 +318779 +881253 +2801414 +2798844 +2802868 +2799486 +2799703 +2829795 +2802070 +2799177 +1475165 +2801095 +2799770 +2800490 +2802366 +170358 +2829859 +2799761 +2801694 +2800729 +2798727 +2799084 +1049529 +2829983 +2801583 +2802288 +2802077 +2841838 +62964 +2829642 +2802592 +2841666 +2799420 +391980 +2829796 +62916 +2801666 +2801678 +2800002 +1126535 +2801262 +2802505 +2800406 +2802183 +170392 +2802836 +2802186 +2800904 +2803008 +2829702 +2800868 +2802928 +2829965 +2800762 +2829450 +2802003 +2799241 +2798966 +2800060 +62784 +318767 +2799732 +2841661 +2801125 +295318 +2802149 +170351 +881268 +2800709 +2841565 +2841818 +2799768 +2799108 +2799040 +2800049 +1012258 +2803031 +2800410 +62870 +2830234 +2800909 +2802815 +378828 +2800222 +2841759 +2799202 +1049458 +170477 +62971 +2801499 +2798834 +318794 +2798737 +2829364 +2801934 +2802852 +1012251 +2841709 +278089 +2830014 +318778 +2829868 +2801803 +2799833 +2800020 +2798935 +2802520 +170488 +2802247 +2799176 +295358 +2801009 +2801898 +2829332 +170352 +2800112 +318768 +2799172 +2801533 +2801314 +2801362 +170517 +2801500 +2841529 +2800382 +2799346 +278125 +2829536 +392005 +1634791 +2799376 +2829594 +2802061 +1634803 +2829649 +2829781 +2800186 +2802074 +2802601 +881254 +2799157 +2801504 +2802773 +2800214 +2799819 +881239 +2801437 +2802110 +2841816 +2799864 +2801587 +2801715 +2799244 +2841802 +2829282 +2829442 +2800779 +2802962 +2799208 +2802678 +2802102 +2799830 +2799327 +2800860 +2799255 +2829286 +318856 +2802810 +2799799 +2801321 +2801524 +2830118 +2801779 +278075 +2802151 +2800594 +2801182 +2841873 +2799171 +2800724 +2801088 +2801693 +2800063 +2798913 +2801331 +2802756 +2802347 +2829807 +2802828 +2801046 +1042111 +1049443 +2799089 +2800540 +2799418 +2801146 +2798749 +2802203 +2799253 +2801732 +2799688 +2800888 +2802512 +170400 +62796 +2829348 +2799534 +2799144 +2801780 +2800890 +2800092 +2841768 +2801820 +2829675 +2801038 +1042133 +1904722 +2802042 +2829384 +2802217 +2800494 +2829569 +2801407 +2799639 +2801645 +2800328 +2802328 +2801159 +2799397 +2802989 +2802635 +2798762 +278063 +392025 +2799647 +2802510 +2841527 +2801940 +1937599 +62790 +2800639 +62817 +2798881 +1126506 +2829376 +2802558 +2801995 +2801438 +2829590 +2802804 +2799125 +2830199 +2799760 +2801982 +2802731 +2801168 +2802188 +2799233 +2798815 +2800105 +318808 +2801115 +2800960 +2800292 +2799876 +2829757 +1634799 +2841746 +2829343 +2802696 +2800294 +2829559 +2801762 +2829386 +2801330 +2841780 +2841705 +2798853 +2802214 +1634787 +1904736 +1634773 +2801538 +2829841 +2801819 +1873447 +2801455 +2829540 +2799198 +2682337 +2802131 +62866 +2800188 +2802736 +318804 +2802788 +2829729 +2802249 +2800293 +2841787 +1475127 +2801003 +2799185 +2829330 +2801294 +1634811 +170460 +2802833 +2799182 +2830247 +295339 +881168 +2801530 +170469 +2841812 +2802994 +2799584 +2800014 +62823 +2802489 +2798995 +2801117 +2798793 +2800894 +2799620 +170347 +2830213 +2798758 +2798918 +2799575 +2800440 +2801659 +2801549 +2802933 +2798897 +2800119 +2799104 +2802173 +2799164 +2799162 +2798740 +2830167 +2799551 +2802464 +62783 +2799446 +2801792 +2801958 +2799677 +62996 +2802627 +2799957 +2829818 +2801342 +295346 +2799599 +2802949 +2801310 +2802751 +62876 +295372 +2829434 +2798837 +1634782 +2800586 +2798703 +2801687 +2799145 +2800787 +2801465 +2801985 +2800795 +2829521 +1042128 +2802728 +2801649 +1634743 +2799360 +2801074 +2799362 +2841650 +881265 +2799427 +2802026 +2799672 +2802435 +2800435 +2829676 +2801434 +2800908 +2829564 +881190 +2799911 +1042131 +2800163 +2800763 +881191 +2801030 +2801010 +2802111 +1049430 +2800488 +2830242 +2829607 +2799507 +2800706 +2799345 +2799945 +170493 +2801987 +2801595 +2802912 +1475162 +2803004 +2800465 +2799504 +2799454 +2802719 +2847771 +2799092 +2799602 +2830156 +170395 +2800964 +2802524 +2803064 +2800976 +2801364 +2801061 +1049487 +1049461 +2801196 +2830257 +2841791 +2802006 +170516 +2800098 +2801531 +295338 +2829636 +170331 +1904734 +2799090 +2830033 +318792 +881283 +2829405 +2799060 +2800489 +2801132 +2800371 +2800761 +2803077 +2801448 +2800087 +2801640 +2829622 +2361360 +2800931 +2798817 +1012277 +2799355 +2800524 +2800984 +2799825 +2802336 +2829588 +2800437 +2841657 +391968 +2830261 +2799025 +2800043 +1042096 +2847772 +2830163 +2802980 +2829954 +2800256 +391995 +2802747 +2799023 +170374 +2801650 +1126501 +881280 +2799258 +2829522 +881233 +2799117 +391964 +881177 +2799017 +2799391 +2841723 +2801453 +2799928 +2799518 +2799019 +2829754 +2803062 +2801907 +2829762 +1042087 +1012211 +2841856 +170339 +2800698 +2830054 +2829316 +2829318 +2800702 +2799449 +2802820 +318765 +2799600 +392031 +2801476 +2799870 +2799889 +2829370 +2829280 +2800206 +2829545 +2829694 +2799626 +2830212 +2799807 +2800501 +2801483 +2841553 +2830191 +2802892 +318846 +2800504 +2802458 +2829455 +2799652 +2829736 +2830019 +2799473 +2841563 +2802088 +2802822 +2802669 +2841658 +2802089 +1049503 +2801572 +1475168 +2829586 +2799564 +2803080 +2829654 +2802297 +2830254 +2800364 +1475166 +2798883 +1049536 +391989 +2841707 +2802539 +2801271 +2802964 +2799730 +2802984 +2841675 +2799998 +170513 +2799016 +2841610 +2800505 +62899 +2682367 +2801083 +2802845 +2800451 +2829287 +62968 +2801810 +2799977 +2801097 +2799959 +170261 +62832 +2802527 +2799510 +2830233 +2801929 +2800577 +2800929 +2799434 +2800035 +2798709 +2800062 +2801825 +62927 +170264 +2798909 +2802152 +2801720 +2800628 +2800402 +62939 +1634768 +2802687 +170612 +170649 +1683857 +1025012 +740010 +392035 +278221 +63150 +242526 +1683858 +2803089 +1012438 +881475 +493214 +242538 +1846339 +170775 +881328 +437838 +417582 +209570 +770050 +881386 +1846328 +538564 +881288 +242553 +944729 +881442 +63025 +331597 +1012369 +209599 +1012349 +2176656 +881491 +1294730 +348899 +360596 +63112 +1085091 +881348 +1294718 +2176669 +63042 +881470 +278245 +1275588 +170625 +278170 +63022 +881376 +538562 +1634824 +348909 +2535653 +1085045 +1012362 +63033 +944707 +1563718 +881315 +1705510 +624746 +63109 +209588 +331587 +1754983 +170699 +170654 +400333 +417596 +1012306 +63124 +1344312 +692849 +63051 +2653306 +881478 +624719 +1012436 +341088 +348894 +881485 +1012398 +1634874 +170711 +1833212 +2591584 +170708 +1029634 +170728 +2803094 +493207 +732574 +331598 +2591555 +1475218 +881358 +424874 +2803157 +624704 +63115 +1873449 +170647 +1904780 +1563729 +352799 +1475205 +1012382 +352793 +170662 +881526 +2803149 +242579 +318863 +170778 +1012333 +2064866 +2535654 +493220 +278192 +348888 +881368 +170658 +209567 +881498 +341068 +170634 +242621 +450366 +2803114 +881488 +1012340 +242622 +170591 +1294717 +1085085 +1085042 +1846327 +63061 +242616 +170721 +378863 +209541 +881319 +493217 +352809 +1012405 +1012292 +2803108 +242572 +2803147 +2267109 +170725 +2591533 +278167 +378865 +278211 +170576 +944705 +2301590 +2626134 +331588 +1012365 +170751 +209584 +242578 +278236 +209571 +881534 +407818 +1344308 +1563725 +2803084 +278168 +417579 +2267116 +170745 +424887 +63009 +1012446 +63064 +278226 +944736 +2803161 +1312640 +1294740 +437839 +624706 +1105093 +2803129 +1833223 +63006 +63035 +2803091 +378851 +419844 +881418 +242631 +1705517 +209578 +341064 +1634841 +944684 +209594 +881479 +170710 +170685 +624723 +1294720 +881344 +624727 +881501 +242600 +2064865 +170620 +242596 +278205 +881396 +1676728 +242528 +1634828 +209536 +881420 +1126540 +170712 +1012449 +1833217 +1355455 +63026 +63094 +341079 +881454 +63119 +881385 +63011 +209579 +1634898 +170630 +278234 +278290 +278169 +170759 +170661 +2591566 +417605 +1012407 +1085092 +770047 +881390 +881341 +1767292 +881499 +1904781 +881574 +967799 +1042148 +1254522 +624774 +170808 +624764 +1113153 +2591626 +1275589 +1029636 +1634972 +2591645 +170823 +1388516 +1275598 +799139 +2391167 +502459 +1521652 +799121 +1733672 +2104772 +1754991 +881569 +2492315 +1634928 +2869657 +424899 +1079218 +170833 +1042145 +170826 +1694196 +1431047 +1012492 +170839 +1760820 +2301594 +967803 +1254521 +538572 +1085099 +1012481 +799129 +2869658 +881617 +692852 +1431041 +2869675 +252734 +1012495 +2176680 +63179 +1079217 +881603 +92588 +170854 +1126547 +2492310 +2869646 +799136 +1012530 +2176674 +692851 +63154 +1029637 +424903 +1012460 +2869684 +881563 +2005776 +1634938 +881550 +1012498 +1803421 +1012466 +419858 +242653 +341092 +1521649 +1475240 +1431037 +1733673 +419857 +2869666 +2591632 +2591633 +1654069 +2267121 +63180 +2417593 +1634918 +278314 +2391164 +881584 +1254525 +944746 +624777 +2417591 +1312646 +1344313 +1344314 +1431036 +170846 +1012527 +278312 +1634968 +2700146 +278320 +1355457 +967806 +1521653 +2591622 +17656 +881591 +1634950 +1312648 +1951411 +652682 +1012573 +1948401 +1521676 +944772 +209658 +1760821 +1169440 +2414338 +1312657 +944769 +881627 +538607 +2591677 +881640 +1371511 +300127 +170876 +624910 +1648269 +2830422 +2591655 +2830368 +1376018 +170991 +63214 +1563781 +2847823 +63231 +624887 +1012583 +170956 +2803181 +2830402 +1367174 +1976757 +2830381 +2830356 +881657 +2591659 +170884 +1344319 +923214 +2830276 +1355473 +2591681 +2847783 +171022 +170922 +881625 +1995035 +2626142 +2492320 +2088523 +881712 +170981 +1976759 +624795 +170944 +670808 +624900 +624853 +170978 +242681 +624877 +1873497 +2830364 +944763 +2847817 +1475259 +1060347 +1113170 +1012547 +2722514 +881650 +1294768 +1294754 +1648272 +670821 +2830303 +2653334 +2391189 +1275610 +1948403 +1904800 +2391208 +1502058 +624867 +2830318 +1012534 +1733693 +538627 +2069758 +2626141 +318884 +318894 +670827 +2492324 +2088513 +2391194 +2847832 +242685 +1355476 +1042149 +2830418 +2391177 +242683 +538616 +881634 +2736535 +2023891 +944761 +1563785 +2830407 +1648271 +242694 +799165 +1012535 +1329601 +2591671 +171008 +624865 +2830287 +538617 +2626137 +2830388 +2710914 +538626 +881647 +2088511 +2391212 +1367175 +2830378 +1475263 +502473 +2830337 +670831 +1012576 +63245 +63260 +2040922 +2064881 +170937 +1012596 +1294770 +2847811 +360605 +197948 +624803 +624913 +2830423 +624809 +538630 +2700155 +1012549 +209652 +770054 +1113161 +1294765 +1012572 +1502057 +624817 +624882 +538613 +2267138 +170946 +92597 +2700162 +1275605 +2276010 +1634999 +171007 +1245380 +1648273 +624815 +209664 +2301604 +2830304 +63261 +1803422 +881683 +1312673 +670832 +881674 +624888 +1634977 +170980 +1961790 +967845 +63337 +378876 +1329610 +2040929 +2391213 +493229 +2492341 +2841922 +1275617 +1221019 +1060351 +1245406 +881814 +1012631 +881807 +1563814 +1733722 +1126564 +1012632 +944779 +538644 +881735 +278358 +300134 +242723 +1846344 +652701 +1733733 +1012649 +624969 +493236 +624964 +493239 +242759 +2841905 +171090 +1392338 +2653360 +2176783 +1431060 +1563826 +300138 +1563822 +1431062 +2841937 +480261 +1079220 +171089 +63269 +967833 +2685085 +209673 +2841950 +1563817 +1502064 +881742 +1635013 +171149 +2361384 +63333 +2176774 +242758 +624955 +1042167 +242731 +2040941 +1042161 +2176781 +740012 +2736550 +881816 +799198 +745379 +2027074 +2653374 +715274 +1989710 +2176803 +242722 +92603 +538663 +624950 +1012617 +278372 +242739 +2353337 +1563860 +2653378 +171032 +1245395 +171063 +2841953 +417618 +1635014 +318918 +1676736 +2803195 +670842 +692874 +1635019 +2728274 +2803188 +1221035 +2653381 +2391215 +1085121 +1635046 +63273 +881812 +2040940 +2841980 +1049546 +624927 +2492346 +2492327 +760625 +1029665 +63290 +2176773 +493228 +967836 +171156 +171074 +1126585 +1113179 +2040946 +2689540 +1648283 +881792 +538671 +171068 +2755835 +1733702 +171064 +1733717 +1683860 +538639 +692875 +1521678 +2176732 +944784 +2653352 +1475267 +2391229 +2841924 +1563821 +400343 +2515195 +63292 +1221036 +881738 +318921 +171099 +538690 +493226 +1126579 +2682387 +923226 +1833247 +732580 +881751 +1029654 +2841948 +2755839 +624978 +967828 +1312682 +2040936 +799184 +171097 +171034 +881728 +538655 +171142 +1221023 +538692 +1221038 +538648 +1379324 +352830 +2653373 +2176770 +967840 +1431066 +2803189 +1012642 +63312 +242735 +1012644 +378882 +295414 +799191 +1767296 +881737 +1012623 +1275626 +1976767 +92623 +2841899 +2176755 +209667 +881813 +2653348 +538673 +480265 +2841908 +715276 +1475269 +2005779 +1733711 +63300 +1126569 +1388520 +652696 +222236 +944803 +1060348 +1475277 +923233 +63277 +63308 +1344324 +944780 +1833244 +1012646 +1105107 +171130 +1521684 +378898 +1873506 +1355493 +1113190 +378895 +538651 +2841901 +692870 +2841977 +2040943 +1245403 +1126562 +411672 +624932 +1563885 +1029668 +2417600 +1355504 +1563939 +63386 +1502082 +799292 +63393 +1431129 +209683 +400348 +760629 +1012658 +923246 +404510 +1431087 +1431116 +944810 +366605 +2535668 +450377 +2005784 +923255 +2040949 +1431091 +1733744 +2176865 +2176847 +881845 +17687 +538709 +2176830 +2176832 +770064 +1431130 +1329631 +1176205 +1079222 +1431111 +17675 +881840 +1502077 +209684 +881859 +2040961 +967853 +493242 +17673 +1029679 +2591725 +881829 +1705534 +1635059 +2176846 +2301614 +1563896 +1431086 +2535672 +2492352 +1635062 +1733755 +1060354 +63369 +286092 +2535667 +2391233 +1712771 +799267 +2492355 +1221043 +967848 +1169445 +92659 +1989711 +760635 +1329621 +1563922 +923276 +1029675 +715281 +397283 +242772 +1733738 +1694217 +2176815 +2353338 +331607 +1126590 +2653401 +1029689 +1635058 +2391237 +2040958 +923265 +63389 +17689 +624993 +1873566 +904301 +1563891 +1502083 +904299 +1961794 +2176852 +1187551 +748184 +63378 +904302 +92670 +1151236 +538725 +437856 +2331283 +1648287 +799218 +429762 +1431105 +2176886 +799265 +2176821 +1833255 +2653416 +355376 +171223 +1873559 +63385 +624984 +1976772 +2736551 +944818 +1245412 +923281 +881846 +1873558 +171169 +1873563 +2176854 +923263 +1648286 +1029669 +692886 +318931 +1475290 +881857 +1873549 +2535677 +2653419 +197959 +1989712 +2535675 +331606 +1163179 +252750 +1221053 +1221051 +923269 +2492364 +300142 +2515196 +624996 +1676740 +799238 +242762 +171226 +2176875 +1221044 +652710 +360617 +1563901 +652713 +799283 +17702 +1431121 +2535679 +1563889 +1329627 +2064914 +538726 +92627 +63427 +318934 +2803429 +397286 +2803237 +278413 +2803458 +252763 +278390 +923282 +1329638 +967872 +2803496 +715283 +2803454 +278422 +1105121 +625007 +745381 +2391248 +171241 +450380 +92710 +278394 +252766 +278407 +1475298 +2803317 +2803400 +1635072 +2803329 +252764 +2803505 +1355510 +1635078 +209724 +2803477 +171240 +2803415 +2653424 +171293 +197974 +2803223 +171265 +1203134 +171314 +1563978 +2803428 +1012681 +2803486 +1329636 +2391250 +2803296 +2803277 +355383 +2591736 +171320 +2803363 +171244 +652719 +419861 +538743 +2803492 +2748005 +1169447 +750977 +2803443 +92704 +2803295 +171267 +670848 +378922 +92701 +2064918 +2803461 +1873593 +2710922 +2803518 +538749 +2803391 +1329635 +2803239 +1431139 +2803462 +2803473 +286095 +278415 +1873579 +171232 +1563959 +1431136 +799305 +1873575 +2803401 +2803284 +2803372 +209725 +1294780 +278420 +2803493 +2803339 +1012687 +944846 +2803209 +2803514 +1012669 +625008 +171303 +2722532 +2803452 +252761 +1563962 +222253 +2803203 +2803377 +2535684 +63423 +2803397 +2417604 +2803476 +2040966 +392061 +341111 +92703 +171278 +2803301 +1221057 +2803219 +63429 +967866 +2803504 +2803407 +278387 +1187562 +63409 +1635083 +2803416 +2803278 +2803390 +538757 +171317 +625010 +2803432 +2803227 +171273 +171246 +2803369 +2535682 +670847 +318945 +2267193 +967879 +2803532 +1873606 +1329639 +1093919 +2176948 +2492372 +2755850 +2842014 +881923 +625031 +1712781 +715287 +295439 +881906 +1635089 +171334 +881914 +300165 +881918 +1563986 +331616 +538780 +1733788 +881913 +469037 +1635087 +242827 +881910 +1873603 +171370 +1904821 +450382 +331615 +538779 +1521697 +1012694 +2803533 +1733806 +2755853 +967875 +1085130 +670853 +1563989 +881916 +967878 +2803551 +1029706 +2722537 +1151237 +625029 +1712784 +2803602 +1431153 +63459 +1012747 +2176928 +2803590 +2176951 +1873616 +1042193 +799323 +2267186 +944864 +1088091 +1187573 +2176944 +17711 +469028 +1733790 +171410 +2803547 +1694223 +1733811 +171336 +1221073 +171399 +1635100 +1221060 +1012717 +2803565 +1873596 +1648296 +209741 +1873605 +1635096 +378928 +493248 +944868 +1245424 +1113210 +286096 +2391253 +1705535 +1126593 +738644 +1563987 +1012712 +1378425 +1755018 +171355 +2267183 +171352 +1042191 +63437 +1245420 +1012707 +1135088 +242822 +1521698 +799322 +1329643 +625068 +1163185 +1012787 +652739 +2803692 +1502097 +1113217 +2803733 +1371524 +625080 +2361398 +1648300 +1475335 +1029727 +1371522 +881944 +2803624 +967885 +2177005 +625047 +1817606 +2803751 +1733857 +2740033 +1405967 +2803638 +2177053 +63508 +1937618 +923300 +171535 +171440 +538821 +2177047 +392065 +625059 +1817608 +1937629 +63510 +2803661 +1012780 +1755020 +1397164 +2361393 +2653448 +2803665 +1431166 +2591778 +538850 +1563999 +171476 +538862 +538816 +799363 +881996 +881966 +2361391 +652750 +2626145 +1275658 +171455 +1475333 +2803694 +1733830 +692926 +1029725 +1088093 +92726 +2803731 +2177011 +538867 +724112 +1126603 +2177003 +908745 +944875 +923303 +1093923 +881960 +242860 +318964 +1012795 +1635119 +2177036 +799342 +1733833 +1221086 +1648313 +1012763 +1012809 +1733822 +2710926 +1564026 +1388524 +2177025 +2803683 +1388525 +2803735 +538790 +1976781 +2267219 +538832 +538788 +1029723 +2803615 +881976 +1012776 +242849 +171496 +2331308 +2803626 +1873647 +1564006 +1049548 +1294784 +538818 +944891 +2177021 +1245457 +1937630 +2682395 +1817603 +2177058 +2591774 +1303491 +1475323 +2391261 +1029712 +171542 +1635114 +1012767 +171483 +2803676 +469047 +2176982 +2331297 +2276015 +538852 +1049549 +209756 +2710930 +1371525 +1275647 +2700176 +538808 +1431170 +1937611 +799328 +538844 +242854 +1012762 +171507 +197982 +411677 +1817605 +2803782 +882008 +1245455 +625062 +1989714 +881980 +881951 +923297 +1093921 +2331300 +881989 +1502094 +171428 +278467 +2803655 +2653451 +2088537 +1635104 +2803720 +171429 +2710929 +2176976 +967893 +63514 +625142 +2391265 +625056 +882024 +1049554 +1113275 +2005793 +171590 +278534 +967944 +538952 +1833271 +1564034 +1635174 +882026 +2177133 +2023905 +1937635 +882051 +1989734 +882129 +2391305 +1113240 +1989730 +63543 +1564073 +2331317 +1705542 +1564056 +625185 +92772 +2177116 +1169473 +1163187 +1564051 +1012902 +2869734 +63556 +625221 +1564090 +1564058 +1733898 +252810 +1694234 +1012848 +171610 +278557 +1169472 +538980 +1029732 +171591 +1564131 +171673 +252807 +424920 +1694241 +2869707 +2391296 +1012860 +1012845 +1431202 +625217 +625220 +1564105 +2653470 +625235 +1733889 +2653498 +419865 +1163196 +1635171 +967950 +171653 +171654 +278522 +1075231 +2653509 +1012865 +171575 +1012825 +625198 +242869 +882130 +625174 +882075 +1312699 +1012855 +242868 +882036 +2353347 +538939 +799413 +349980 +625169 +2177111 +882092 +625249 +1803459 +2177082 +502489 +2391286 +63561 +1635180 +2869697 +625243 +1029731 +1521711 +1371541 +1564076 +278563 +882115 +1126605 +2653489 +625278 +252799 +2869710 +2653461 +1564050 +2391292 +1803460 +2267240 +1376034 +1163197 +2177110 +1873651 +2591788 +2177126 +1475365 +278489 +1705541 +278519 +1564136 +2653511 +2177129 +2653464 +1694232 +2803834 +252788 +724117 +1294794 +882125 +1705543 +2177099 +625287 +1475357 +882108 +1635138 +1564045 +1294797 +1803454 +1371530 +2653500 +882134 +625248 +171576 +882082 +1105134 +92758 +1564066 +1431191 +2626146 +882145 +1371538 +882140 +625240 +1475352 +882126 +1564063 +882122 +2591787 +278485 +538988 +1012854 +882104 +538976 +171607 +171623 +1329657 +625157 +1564055 +538950 +2267233 +1012932 +348956 +1564138 +670899 +1989732 +2695580 +670919 +2391284 +799382 +538977 +63539 +1635166 +2177118 +1755025 +715297 +1757629 +799401 +1951421 +625192 +2492394 +278553 +1012882 +2869735 +171601 +1733891 +1635186 +1371531 +1254581 +2803827 +1113248 +1371528 +2869743 +625274 +355392 +724118 +1113254 +2869754 +2267237 +278471 +967920 +1431189 +1564060 +2803828 +378975 +278633 +1012936 +63579 +1817631 +882303 +625341 +171715 +1012967 +1635190 +63757 +1169496 +625409 +243070 +1105139 +243066 +171989 +2803898 +2267301 +243116 +2803867 +625513 +625604 +341141 +882346 +379003 +625507 +2515212 +171919 +243023 +2267404 +1156336 +715333 +243032 +625392 +625601 +740017 +171771 +341121 +1635215 +171985 +670961 +172044 +732609 +171855 +715331 +171821 +882355 +2177138 +243041 +171740 +278698 +2267261 +242902 +1245560 +1635194 +171930 +625474 +493255 +209826 +278705 +171796 +209793 +2104829 +243060 +539003 +882320 +63808 +63693 +625386 +348968 +625378 +1659034 +1521716 +1245572 +1156350 +732596 +715313 +469058 +1521733 +1126624 +1013002 +1156354 +625561 +2803874 +1707880 +379042 +2869795 +171972 +2267253 +318988 +243010 +278686 +2177139 +1245552 +1948417 +171997 +1409796 +1817632 +625348 +278655 +740020 +2869815 +1012945 +944904 +172027 +171994 +670940 +2104810 +882203 +1937658 +1707892 +171891 +63698 +2859105 +715328 +715330 +670951 +171769 +1156330 +2803868 +63792 +319011 +172030 +2859187 +625481 +625487 +171881 +1985608 +1012985 +882229 +1488167 +278712 +171835 +2267371 +63816 +1969349 +625559 +1475435 +171808 +2515211 +799416 +379035 +2859100 +625425 +242899 +171935 +242974 +625480 +63803 +1025038 +171848 +2267369 +171888 +1635214 +63773 +242982 +341154 +882283 +171906 +625547 +469056 +1245508 +243064 +172022 +242918 +2353353 +625318 +1488171 +2267379 +2803941 +625530 +1635192 +715305 +63774 +1245527 +715319 +242885 +740014 +171764 +1521714 +2859113 +171936 +2072028 +1245501 +63798 +1635216 +243037 +243033 +2267304 +2803924 +670964 +243133 +2267383 +2267349 +1245496 +944908 +1013007 +1635222 +1521725 +625436 +278644 +209782 +295447 +1203165 +318982 +63632 +1475415 +882190 +171709 +2072022 +625511 +2859123 +770087 +171845 +2869803 +882239 +209769 +243104 +1475403 +171737 +2267348 +469050 +2267262 +1203178 +171834 +625572 +715302 +625476 +625387 +2859175 +625317 +770081 +2859111 +944913 +379036 +1013019 +1985611 +1012962 +1937647 +1203189 +278652 +378944 +2859177 +2104802 +625440 +2267413 +209832 +242951 +171697 +63696 +171976 +243119 +1012960 +243011 +171990 +318990 +2267322 +2267252 +171933 +243088 +1985612 +1475452 +63567 +1948430 +171889 +1475425 +1817629 +2859179 +2869801 +209811 +2859128 +243071 +2859194 +944924 +63640 +1012957 +341174 +2267395 +652804 +63776 +341172 +625644 +348961 +882207 +1012943 +1105141 +2859154 +882301 +2072030 +171907 +171869 +341188 +278663 +1635230 +625332 +242956 +625493 +944923 +171799 +1245549 +242953 +1156348 +670959 +341169 +331623 +1169489 +1012941 +2859161 +1635236 +1169486 +300192 +2859168 +319009 +171768 +692938 +171722 +2803957 +882286 +242938 +1969347 +63670 +171938 +944905 +625458 +243031 +341229 +1817615 +63765 +278612 +1012948 +2803855 +278607 +2869790 +2267333 +63590 +1245534 +209818 +670958 +1409800 +1203180 +63738 +2515214 +2267354 +63659 +1221097 +242985 +670957 +243124 +171773 +2267384 +1245538 +2803890 +331633 +740016 +1521740 +1475432 +63642 +944925 +2267410 +242959 +2804124 +2805169 +2804503 +2804775 +2804580 +2804739 +2805131 +2804175 +2804841 +2804660 +2804857 +2805023 +1254585 +2804008 +2804165 +2804133 +2804089 +2804384 +2805158 +2804296 +2804021 +2804906 +2804515 +2804161 +2804934 +2804947 +2804855 +2804410 +2804152 +2805049 +2805033 +2804644 +2804745 +2804091 +2804799 +2804565 +2805152 +2804506 +2804554 +2804593 +2805020 +2804522 +2804163 +2804938 +2804616 +2804274 +2804295 +2804746 +2804549 +2804178 +2803974 +2804618 +2804836 +2804314 +2804418 +2804646 +2804894 +2804851 +2805051 +2804135 +2804302 +2805110 +2804072 +2804308 +2805170 +2804852 +2805101 +2804104 +2805195 +2804117 +2804440 +2805043 +2804085 +2804026 +2804070 +2804674 +2804157 +2804401 +2804845 +2803991 +2804701 +2804127 +2804218 +2804397 +2804849 +2804313 +2804212 +2804585 +2804199 +2804179 +2804059 +2804666 +2804245 +2804263 +2805037 +2804619 +2804365 +2804818 +2804071 +2804495 +2804381 +2804965 +2804714 +2805006 +2804935 +2804093 +2804465 +2804220 +2804004 +2804834 +2805197 +502492 +2804332 +2804707 +2804510 +2805157 +2805029 +2804223 +2805062 +2804685 +2804278 +2805065 +2804281 +2805188 +2804930 +2804079 +2804244 +2804539 +2804409 +2804208 +2804437 +2806571 +2805679 +2805818 +2806213 +2806228 +392073 +882466 +2805490 +63825 +278795 +278791 +252813 +1919419 +172110 +2806438 +2806561 +1013085 +2805859 +2806493 +2805253 +2805480 +2805451 +172180 +2806424 +2805875 +2805406 +2591810 +2806083 +2805419 +1937677 +882469 +1760850 +1475482 +2806842 +172260 +625691 +348974 +63905 +2806705 +2842120 +2177155 +352850 +2806451 +2806307 +2805704 +63913 +1013086 +882427 +2806234 +2805824 +2806015 +2805684 +2806837 +172187 +2805900 +2805651 +2806660 +2805523 +63919 +2177206 +2806249 +2806259 +2806596 +2806691 +172226 +882520 +2806475 +1126628 +2806572 +2842063 +2806300 +882446 +2806214 +278763 +1475485 +172095 +2805884 +2177183 +2805429 +63847 +2267497 +1475488 +2805233 +2806746 +2417640 +278832 +1245577 +278827 +172166 +172094 +2805290 +2805268 +1312714 +1937708 +2805387 +1635276 +278803 +2806609 +1013036 +2805408 +1312719 +2806508 +63923 +2805471 +2806445 +2806551 +2805944 +2267483 +2806856 +2842054 +2806216 +1564159 +2805853 +1564162 +2414370 +2806676 +882382 +882468 +2805478 +2177200 +882403 +2805438 +1564165 +1013073 +2805980 +2842028 +1705555 +1013058 +2806894 +2805550 +2806369 +799424 +2805778 +278841 +2806027 +2806145 +539012 +2806672 +2806274 +352853 +1564148 +2842060 +172211 +882534 +2653535 +2806459 +63895 +2805422 +252820 +1937711 +278740 +770095 +2805295 +2806433 +2805972 +2805997 +278729 +2805262 +1275692 +882411 +2805828 +882457 +1937693 +2842156 +63835 +625666 +882507 +2805738 +2806338 +2806768 +2806771 +882450 +2805394 +2842107 +2806174 +625689 +2806289 +2842064 +2806184 +2805303 +625659 +2682418 +882475 +1760862 +2806087 +2805239 +2806621 +1937712 +1475484 +1042224 +2806019 +172169 +352854 +2842039 +278808 +2806582 +2806199 +2842093 +1656821 +2806275 +2064934 +17727 +278727 +2805660 +2806639 +2353357 +2805867 +2805852 +2806848 +1635308 +278718 +92779 +2806202 +172222 +2842082 +1733905 +2806631 +2806170 +2267443 +209841 +2806545 +2806422 +172265 +2806395 +2806740 +2267448 +2805601 +2417645 +2806283 +2177164 +172263 +882432 +2805876 +2805497 +278743 +2806121 +1937695 +2653523 +172237 +1294832 +2806402 +670982 +2805297 +2806773 +2806061 +1013056 +2806522 +2806511 +2805677 +2806411 +2805790 +172055 +2805643 +172100 +2806119 +2805224 +2806546 +2805464 +1013032 +2805655 +437864 +2842109 +1937705 +1635257 +2806319 +2806584 +2805835 +2806537 +278778 +2267477 +2806232 +1635290 +2806876 +2805746 +882444 +2653532 +2805922 +882530 +2805230 +2806364 +172064 +2805441 +1049563 +2805257 +1085144 +63876 +2806314 +2842163 +1294826 +2806455 +2806818 +967964 +2805547 +2805938 +1635311 +625673 +2806437 +2805839 +770097 +882486 +882521 +417654 +2267430 +1245576 +2806400 +63866 +625697 +2806627 +2806003 +2805509 +392076 +2806504 +2805396 +1275691 +2806840 +2805648 +2805532 +2805889 +278730 +2805476 +2806123 +2177162 +2805685 +2806495 +2806329 +2267450 +1475478 +2805301 +2806149 +319028 +2806647 +882447 +2805735 +2806225 +882407 +2806099 +2842031 +2806553 +2805633 +2806500 +172054 +2806618 +2806176 +2842051 +172144 +2842144 +172173 +278745 +63829 +1013093 +2805223 +2805638 +1564157 +2805783 +2806632 +2805766 +63821 +2805701 +2805555 +882429 +1635307 +882529 +243169 +172373 +63944 +1521767 +1013158 +882692 +278914 +2682423 +1635396 +2064978 +2267524 +278921 +64055 +172286 +770120 +625818 +1013183 +2368900 +243201 +882557 +1013098 +209858 +882649 +172502 +1294857 +1873681 +2267531 +1937717 +625714 +1169507 +1564174 +2267527 +1873691 +172501 +625824 +172495 +908752 +882681 +2267633 +1013182 +1942031 +625705 +625780 +2414377 +2267558 +1013169 +625701 +882553 +2177225 +64009 +243152 +944973 +1904853 +2722573 +379052 +2755881 +172487 +1169506 +209864 +172321 +2177230 +243208 +1873690 +2267501 +172318 +172337 +172471 +770115 +197986 +1013117 +243204 +64018 +341245 +1013114 +172324 +63998 +172338 +1803472 +882626 +172431 +882600 +2267616 +64059 +882543 +1475579 +882760 +1013198 +770127 +2414389 +1755049 +1904883 +1475564 +243178 +1521756 +64039 +882635 +1475509 +1817643 +172408 +625766 +1042226 +1013232 +1013162 +2177216 +172347 +882737 +1013229 +2064969 +2755880 +1475529 +1013179 +209853 +2267563 +243185 +278876 +882538 +1521770 +2414375 +1755046 +625803 +172479 +243171 +1409811 +2104867 +539022 +882625 +278865 +882708 +882727 +882733 +319050 +2414387 +1013131 +625757 +63940 +64050 +352872 +2414376 +2267561 +2492414 +209852 +1245587 +1013203 +278927 +1475495 +2731731 +172412 +1409813 +172464 +2267609 +1312723 +625710 +1635359 +1873702 +172410 +424927 +882563 +1052009 +1169503 +1013120 +1635389 +1873697 +1720536 +1755036 +172388 +1013204 +1042227 +1013110 +1294851 +2731735 +392079 +625704 +64025 +944975 +882695 +2267587 +1904855 +1755038 +1294856 +1169505 +1013228 +2710934 +63942 +882561 +243155 +1635349 +319038 +944971 +2414379 +2722574 +625810 +799432 +278913 +1635380 +278917 +2755872 +2731729 +278903 +2731727 +1803479 +1985614 +278918 +882609 +1013176 +295464 +172418 +172322 +1521773 +2018295 +278863 +1013226 +625786 +625778 +2492410 +243160 +1937722 +671001 +172426 +882618 +64071 +172363 +172492 +625756 +172348 +278855 +319064 +1475600 +2177259 +1013242 +945003 +967983 +1013253 +1656826 +1969353 +278960 +882821 +799435 +539025 +2653573 +1013243 +172587 +2653592 +625886 +2177254 +1013284 +64144 +1013240 +1013297 +2088561 +319063 +2653623 +172559 +1635406 +539067 +1113286 +1371551 +1475596 +923318 +882764 +319057 +799442 +2267663 +278956 +1013279 +882823 +252826 +715350 +1564181 +64145 +2177271 +172617 +1275718 +1013286 +1013278 +1013270 +1013281 +724125 +1399784 +1405968 +172594 +64131 +2177235 +1635451 +172533 +1635421 +279003 +172611 +882854 +1013275 +278945 +2653574 +1085178 +92796 +625867 +2653581 +1431251 +1275716 +172591 +64116 +2591829 +2492435 +2653566 +172521 +2591826 +2177277 +882772 +2653562 +1085187 +2653605 +2391331 +1085188 +1635413 +1635422 +2736574 +882835 +671013 +278932 +882774 +1275699 +1521780 +770133 +625862 +2301627 +2653579 +64146 +539044 +1042249 +2104877 +1521775 +17731 +2177256 +2391341 +2177285 +923319 +1564205 +1564180 +1431223 +1355567 +1275715 +1029742 +278970 +2417648 +539058 +64158 +493278 +1013246 +1564182 +945001 +1013249 +64111 +1221109 +625895 +2653611 +1042243 +1564225 +692943 +172557 +172604 +1635450 +1126642 +64137 +2391345 +1635409 +1564211 +1976791 +671014 +625853 +2414398 +1564195 +2267672 +882803 +64148 +1312726 +625893 +172548 +64161 +480279 +2391324 +2391327 +2682429 +539053 +2653614 +1013239 +2177294 +539045 +2391325 +1564259 +2177310 +172684 +2040995 +1079242 +1635469 +172644 +2806909 +172755 +1355576 +1013355 +279032 +1294878 +2653638 +799518 +2177324 +2177309 +882895 +625918 +2806960 +1873750 +2391367 +1275728 +2391368 +968002 +411679 +1013332 +172650 +1937747 +279019 +968020 +2722585 +625916 +882917 +1303503 +172737 +1355573 +2177304 +2177355 +172748 +1013360 +480282 +2177362 +1475612 +295474 +652827 +882865 +1275736 +1431273 +692947 +1937740 +172698 +92824 +1564275 +1013361 +968011 +1937745 +882939 +2177364 +882918 +1355578 +319070 +172756 +1564242 +652820 +760670 +2023910 +625912 +1093933 +882940 +1431282 +2177357 +1085198 +799520 +172759 +2040997 +1635455 +2591842 +172632 +625911 +760667 +1013322 +1475625 +172648 +882891 +252849 +1431271 +1937750 +625924 +1013357 +2177363 +2267694 +172743 +64177 +1919427 +172713 +493281 +625899 +799503 +279037 +172659 +1564236 +2806948 +652830 +1085197 +652826 +172652 +1475634 +2177311 +1961808 +625947 +1013351 +2391363 +1937742 +1564255 +1079239 +625935 +799492 +1475617 +172647 +882904 +2806962 +2177361 +279043 +760664 +493280 +1733945 +2806959 +2806963 +882910 +279044 +2806942 +539122 +172626 +882936 +1275734 +2361417 +2682439 +2806932 +1329662 +1733949 +2741640 +1635471 +2065007 +2806955 +799490 +1502104 +2391351 +1937751 +1093934 +1329670 +92821 +625898 +172696 +1029760 +625942 +1085199 +1221114 +279008 +2064999 +172693 +279041 +1013318 +724129 +671025 +2177306 +1919428 +1919432 +1564288 +1013348 +172715 +385081 +1371553 +2806930 +172757 +967994 +1733960 +493287 +2267704 +652843 +243253 +172823 +1113313 +64213 +1187586 +1013407 +1564327 +882960 +1013404 +1803499 +243242 +197994 +770146 +209888 +692962 +1803500 +671039 +243265 +172781 +2041002 +1105157 +2722595 +2007903 +968052 +279058 +1564325 +882982 +1705561 +2177431 +2591872 +2653660 +1564316 +2301631 +92845 +1475641 +2653674 +2267703 +1475643 +2177404 +64231 +539136 +1635477 +625960 +2361425 +243255 +1329680 +2731742 +172817 +2591870 +882953 +539142 +539152 +252857 +437872 +1013414 +1733968 +2177440 +2591854 +2492459 +341253 +1245611 +1733978 +1355585 +17750 +209890 +92855 +2731740 +1760871 +1060382 +2591862 +360663 +64224 +172769 +1169511 +1705564 +279052 +671042 +2177386 +1060381 +625955 +882987 +1013401 +2177410 +625957 +1126661 +1371559 +2653673 +2177390 +968049 +1395708 +1803496 +2591877 +2177426 +2177415 +1245615 +1093940 +2177406 +2177388 +1475645 +738654 +450392 +738653 +1705565 +1564317 +331658 +539150 +1067934 +172767 +2591874 +1942047 +1733984 +222265 +2492464 +882972 +625961 +64239 +1733975 +1303504 +397294 +2492445 +1013377 +17749 +1665564 +1564310 +92837 +1075237 +2267705 +1013381 +883019 +64260 +750998 +760678 +17769 +1942059 +625985 +2088580 +770149 +2177533 +799642 +2177464 +1431358 +1734008 +883006 +2591926 +539204 +799613 +2414402 +1113324 +1013425 +64250 +539222 +1275757 +92864 +1355598 +2417664 +799587 +2177477 +279068 +1694270 +945042 +64261 +279065 +2653685 +652852 +2177482 +243270 +404523 +1431360 +539208 +2177535 +279070 +750997 +749806 +1329700 +799563 +1013428 +883056 +172843 +1079255 +1707896 +692978 +2177511 +945031 +539196 +222270 +2591892 +2177467 +2177546 +883024 +17762 +2591935 +883007 +1564400 +1707123 +799639 +799628 +625997 +2391378 +1961821 +2591944 +539187 +92877 +437874 +2591900 +2177566 +1635501 +480284 +2391375 +799624 +502493 +1431350 +92866 +1733989 +64248 +799614 +1969358 +1029780 +883008 +469077 +883035 +2653686 +1733985 +64251 +2653678 +1694285 +1113331 +652856 +92897 +2177558 +1431332 +799597 +1431329 +1329683 +539167 +2591910 +17756 +1312736 +625989 +652862 +2177463 +1431319 +1502112 +1757640 +2391386 +2041015 +1079256 +64241 +968081 +1564403 +279064 +1521789 +2331370 +172865 +1720543 +799565 +1873780 +172880 +2177575 +172834 +1029781 +64242 +539171 +1203202 +424928 +1705569 +1355603 +2653684 +1734002 +883000 +1635512 +1405973 +2177451 +2177496 +883053 +417667 +1013444 +92878 +1676759 +2591908 +2177576 +799635 +883044 +799615 +1113322 +2069764 +539195 +450405 +2591953 +1475671 +2177600 +92902 +652889 +539270 +1475674 +2653696 +968109 +539251 +1942068 +1937762 +945043 +2177630 +2653717 +1042261 +539230 +172907 +883072 +539266 +2331396 +968121 +2331405 +1564478 +1734031 +300228 +1734010 +1475669 +1312738 +172916 +2177596 +539263 +1275767 +968095 +626015 +1079262 +539234 +1221144 +652886 +1873814 +539273 +2591947 +539257 +968107 +539245 +1989759 +760702 +1221143 +1564457 +1029785 +2177613 +652876 +539265 +1683881 +2722609 +1564480 +1187606 +1371567 +2177632 +1025056 +799679 +539253 +2682443 +64283 +883067 +652882 +1085221 +652888 +883077 +1431368 +2177631 +692981 +1355613 +1371573 +799673 +799658 +539258 +1013450 +1431379 +1013465 +883079 +799671 +652885 +1431386 +1734017 +1355610 +1948460 +1564523 +751001 +1013477 +1734033 +2177695 +652899 +1013504 +1502125 +1376065 +883158 +2177692 +2492503 +883144 +1665566 +2177724 +1475703 +760704 +172944 +799714 +1635529 +1042264 +1013496 +1521808 +883164 +2267745 +172991 +1502123 +64303 +2682447 +2653754 +2700189 +652896 +1833284 +2414404 +2591998 +2591992 +2842173 +724139 +2426523 +883145 +883176 +1475686 +1564522 +2869833 +1312740 +1648346 +2065025 +1564500 +1521799 +1846349 +692991 +2353378 +626028 +1873830 +1355627 +1275786 +1564497 +2591985 +2177669 +1635597 +2440285 +2267723 +1521807 +2653739 +2414403 +1376070 +2806986 +2591994 +2177708 +1013508 +2177676 +2592013 +539282 +2414413 +626077 +1060387 +1475714 +2069766 +1376061 +883168 +883194 +2414416 +1126669 +1275797 +1948459 +2177664 +626054 +1376073 +1985620 +173002 +626031 +626020 +1042263 +172941 +1355622 +1720547 +173008 +173000 +172966 +92916 +2177709 +799701 +1942085 +1312750 +173009 +1294913 +2421882 +279078 +172965 +2755904 +2267726 +2276019 +883181 +1475696 +172923 +945047 +1635592 +945052 +1635573 +1635586 +751002 +1475704 +450408 +352907 +2492512 +945054 +2591982 +352894 +2267762 +626055 +760705 +751000 +1312754 +64289 +2267752 +883112 +883152 +968132 +1635569 +1431399 +1942087 +1013481 +2361450 +1431473 +883238 +2177788 +1126678 +539356 +2722651 +539362 +2722643 +968141 +2177764 +252881 +883227 +286105 +2740050 +539333 +1431432 +1355636 +626102 +2722663 +173058 +1951436 +1942092 +968145 +2722635 +2722626 +1431455 +173034 +1113349 +2592091 +222275 +2736591 +738658 +1817660 +799746 +1275837 +1029796 +1564540 +945058 +1734052 +1355651 +1734055 +2592074 +2391442 +799738 +539310 +1355661 +539313 +2728300 +1355644 +799750 +799727 +173053 +1079266 +2722625 +2005815 +1431412 +1734046 +1694291 +1734056 +968148 +1564545 +1564608 +2177847 +2177781 +1942101 +1067940 +1564562 +1961835 +2722638 +626101 +799721 +2177814 +1388546 +1475737 +1355660 +1564579 +760708 +2088601 +539361 +2736586 +1757647 +1388542 +1275834 +883234 +652931 +1564546 +2710974 +883225 +652938 +173043 +2710980 +1803521 +2592060 +2492518 +1431415 +2731750 +751004 +2177772 +1113347 +2710969 +1187609 +968140 +1942107 +279091 +173038 +1329731 +692994 +2177867 +1564564 +799758 +1113351 +1113359 +883215 +1564542 +1705572 +968139 +2740045 +1635608 +1254596 +2755937 +1431440 +2755919 +2592077 +1079265 +692999 +1113383 +2722629 +652941 +92959 +1254598 +2700195 +2722662 +2177818 +652922 +173035 +2653771 +1942114 +319089 +424932 +1113365 +2592065 +2748020 +539354 +652942 +92937 +92938 +1431435 +1475736 +2710978 +2177835 +1951435 +2736599 +671078 +2177743 +799730 +2722640 +2722617 +1378427 +2653786 +2653776 +335990 +1431477 +742174 +1919455 +799790 +2177923 +2592128 +1873851 +1564623 +2492552 +2592132 +173065 +1976834 +2722683 +355404 +1564661 +1564639 +1961848 +1961847 +652982 +2088611 +799814 +2755952 +173075 +968164 +2088615 +652973 +1275912 +2592106 +2685106 +2177967 +2177915 +1254611 +652979 +1079270 +173068 +2331437 +2178010 +2041045 +92975 +92971 +2592105 +2736614 +2653800 +2807001 +799801 +92974 +2722691 +652966 +1085240 +2685103 +1079279 +1371591 +2685114 +1329753 +2722744 +2755947 +799803 +1833289 +92987 +1648368 +2653857 +2722697 +1564648 +1431488 +1431492 +2492548 +2178003 +2722740 +2685101 +2722712 +1989792 +2755969 +2331430 +173074 +1803529 +652963 +1275884 +2178029 +2592096 +1431489 +2592111 +2088613 +2178045 +2391464 +1502138 +1079280 +2740054 +1405990 +2177944 +2755976 +2711003 +1564671 +2177880 +1734068 +2041048 +1275913 +1079276 +2711002 +2722726 +2736627 +1275907 +2736623 +2722701 +1355680 +173069 +2653823 +539390 +2755961 +1989784 +2178016 +1635609 +1275872 +1113401 +2592112 +92979 +2391444 +2653790 +1564620 +2700207 +1275850 +2177962 +2685102 +1873839 +2653808 +2755963 +2177966 +652990 +2177891 +968162 +93004 +2807011 +1126688 +2005822 +539369 +1431498 +968168 +1648355 +2736612 +2722688 +1564658 +2859203 +1694305 +1564625 +2177937 +1564645 +1942132 +2653855 +2177960 +760716 +2722734 +1942140 +300241 +2177945 +2331446 +1371598 +92960 +2177953 +1648366 +352915 +1275875 +2417723 +1029837 +1656977 +2391527 +1656987 +1656937 +2653924 +2391508 +1657010 +2391535 +2653876 +2653917 +2041066 +2592197 +300256 +2653899 +2653979 +300247 +2592184 +2041054 +2592176 +1029873 +17789 +2417706 +2041052 +300252 +2653908 +2391530 +1648378 +1656943 +1029828 +1656912 +1029865 +2653863 +1254616 +1656975 +17784 +1656989 +1657015 +1029861 +2592212 +1656916 +1029835 +1656872 +1656846 +2417741 +1275930 +2391521 +2417700 +2592168 +2417720 +2653930 +1656847 +2653970 +2417713 +17785 +1657011 +2592194 +2417727 +1029838 +1656957 +799831 +799822 +1656844 +2653982 +1656990 +1656998 +1656986 +2653881 +1029866 +2391559 +1656910 +1023786 +1656842 +2592228 +2653961 +1029851 +2592181 +2276032 +1029829 +1029842 +1656894 +1648374 +1919458 +1029844 +1029879 +1029869 +539429 +2653883 +1656893 +2417734 +2391536 +1656858 +1919463 +2426526 +2592259 +1431546 +1355692 +2417769 +1873874 +799886 +17801 +653008 +2178149 +2041069 +2178053 +2535717 +2361465 +2361464 +2331472 +1873885 +539487 +17813 +2178182 +1976860 +1564724 +2178079 +760729 +2178256 +539456 +2178153 +799834 +539502 +539444 +539489 +2041074 +799924 +2041079 +2301660 +2178299 +539473 +17805 +93046 +2417788 +1919481 +1275966 +2736630 +923393 +2492593 +2492561 +1275968 +2331477 +1388555 +1942160 +252887 +2178146 +799905 +1431549 +2178252 +2178208 +1113436 +1873876 +1873882 +2178117 +1564681 +1564692 +2654038 +1431527 +2654047 +2592265 +1113416 +93049 +2492597 +799880 +2731754 +1303531 +2391632 +1734102 +252896 +2178220 +2654014 +799879 +2740073 +2592263 +300276 +1873865 +2178090 +2535709 +1329766 +2592267 +2654016 +1113441 +1275978 +2178248 +2654062 +2178069 +2178179 +2088637 +2736628 +198006 +799839 +2178207 +385097 +2331469 +2592247 +1648405 +2178189 +1151242 +2654069 +2391588 +2492578 +2592260 +1873868 +2178178 +17790 +2592252 +1431539 +1564725 +385089 +17810 +1113422 +1803548 +539443 +2178125 +2654019 +2301661 +1113425 +1275972 +1564698 +1431521 +1873862 +1564686 +2700217 +1113435 +2592254 +2722759 +2391603 +2178118 +2654035 +1648393 +2178112 +2391621 +2740071 +799882 +1873866 +2592284 +2700228 +2041096 +1961871 +1564754 +1275986 +2267786 +799948 +1329771 +2654092 +2654104 +1803563 +2178311 +2178322 +1564775 +1275980 +2711017 +2331521 +1303546 +1564737 +2654090 +1564757 +2592272 +2391640 +2331516 +2492604 +2592280 +417668 +1873897 +1355700 +1635614 +2592292 +1126689 +1734116 +539533 +2417793 +1564758 +2492609 +2722766 +1712814 +2692274 +626123 +2069774 +1475742 +2267787 +799947 +1564731 +2748026 +1873893 +2361468 +883254 +2654112 +1169521 +2301667 +1873891 +1431607 +1564770 +1329768 +1961873 +1873895 +2492619 +1013543 +799963 +1564741 +2654096 +2736635 +2592288 +1961872 +1399792 +799946 +1275985 +2041095 +2178306 +2736636 +2178304 +1431596 +2391655 +2654113 +64344 +1275994 +2654110 +93066 +539587 +2178415 +173130 +1919487 +968228 +1873908 +1564827 +1303553 +1329786 +1564800 +222281 +1276008 +2391664 +2331566 +1187621 +1564838 +2331538 +1833298 +1355719 +2178456 +1355736 +2736641 +653056 +968224 +1873917 +1951454 +252921 +1803568 +1648415 +252939 +1276016 +539591 +2654161 +2736651 +968210 +539598 +883268 +2331574 +93084 +2178391 +17818 +1564803 +799977 +2018307 +1644839 +2736644 +968251 +2178385 +968241 +653041 +64350 +93083 +2391695 +1989816 +2535721 +2331551 +2178418 +539553 +252914 +2654126 +1803576 +279096 +653036 +2417819 +93114 +693014 +252901 +968239 +173100 +800001 +1371627 +1734130 +2178453 +1564830 +2178354 +2722786 +2740085 +2331546 +800002 +2178444 +2592371 +1942188 +653053 +252918 +1989815 +653028 +1303550 +693019 +2417822 +2041111 +2178436 +653060 +2740088 +300288 +1329776 +1904922 +1564846 +2391697 +2178360 +923404 +2654178 +1961877 +252903 +2654168 +252935 +2654165 +1657030 +1344359 +1803573 +1371615 +2331588 +2592333 +1060389 +2740100 +1431638 +2267789 +93074 +93073 +173117 +1329784 +539572 +2592363 +1873905 +1564837 +2391678 +2756003 +1294929 +2592322 +93076 +1329780 +2626161 +2088664 +173114 +760747 +1564793 +626133 +2592366 +2001019 +1371613 +1564828 +300283 +2700234 +539562 +1712823 +2331584 +1564788 +1276047 +1564822 +2654139 +243303 +300301 +671089 +2736656 +1303560 +1694334 +539667 +2722798 +1355762 +1355766 +2361478 +1221183 +2692279 +1079304 +2592401 +2041120 +539647 +1564922 +1734161 +93144 +2592457 +2331611 +1712826 +1355743 +1873946 +800040 +1694320 +2842187 +1803585 +2736657 +385101 +2088670 +1873974 +2592430 +1221197 +252945 +539697 +2178475 +2331621 +2654208 +1355745 +1734165 +2178492 +1648426 +2391722 +1303562 +2722796 +1564906 +1734147 +2331603 +480293 +2178477 +1757665 +1355756 +2654210 +1029925 +17834 +2178468 +800063 +1564907 +480295 +800080 +1329798 +1079305 +17835 +2178528 +800077 +800090 +1873979 +2592476 +1329801 +968262 +2592405 +800066 +252956 +2391721 +2592380 +2592433 +1564887 +2331617 +1833303 +222283 +2391713 +64358 +1694326 +2426529 +800045 +1694335 +64360 +539640 +539678 +480296 +1221193 +2842193 +1564902 +539683 +2178499 +392094 +693037 +2592412 +2361477 +923409 +1564868 +539684 +1757664 +355406 +2301679 +1502176 +800087 +2736658 +1734157 +539642 +2331595 +17837 +2178526 +222286 +1431661 +904324 +2041121 +2417833 +1564915 +1873982 +2391709 +1976877 +2331605 +923415 +539636 +539670 +2535727 +1371637 +1276075 +2722802 +539712 +1371649 +2267795 +2178542 +173148 +2267793 +1329807 +724156 +2178563 +1126692 +1371642 +1564959 +1919509 +1676773 +1874007 +2417844 +279115 +968308 +1475753 +1371636 +173149 +1803587 +2592479 +968284 +1961893 +1388561 +923432 +1564965 +1355786 +883297 +800099 +883294 +968295 +2654232 +1803602 +1874006 +1355807 +2654231 +2711051 +2417847 +64367 +1013575 +2654223 +539753 +1475752 +749821 +1734188 +1635624 +539761 +1355802 +2722801 +1029930 +1355812 +1371640 +653080 +800110 +93162 +173157 +2178544 +1734177 +404527 +2736660 +2740106 +2592493 +93167 +539763 +2331627 +1564964 +300305 +1919502 +800106 +626146 +1029927 +1734189 +2731761 +450428 +93166 +1564940 +1873999 +2178547 +1355797 +968282 +2331634 +2592512 +173156 +1976886 +883293 +968294 +341266 +450430 +1388564 +1075252 +923440 +653094 +800130 +198024 +1475765 +2654254 +1874023 +539779 +626187 +173184 +1105175 +1203218 +2736665 +173190 +968319 +2309989 +1086548 +173200 +1388565 +1113484 +1502187 +1734198 +539778 +800129 +883346 +1312770 +243318 +1475764 +800122 +1013610 +1874041 +173189 +715368 +279141 +2361487 +1564979 +1694352 +1803609 +279117 +173166 +1093972 +1355824 +2018312 +945077 +2178587 +1355813 +883351 +883360 +1937770 +1954979 +379109 +2414429 +2088682 +539775 +1803611 +693050 +64381 +1075253 +2592535 +1874052 +1475774 +2592556 +1502190 +2391772 +1013592 +2654259 +945084 +1734203 +1303565 +2756030 +800123 +1042269 +93168 +1874035 +1013612 +1303566 +173195 +1961900 +1029939 +1029940 +198021 +1329822 +626158 +2492692 +968330 +1013602 +626165 +539799 +1329825 +715373 +17845 +883333 +1312773 +209932 +243326 +64377 +2736666 +800142 +945083 +2041126 +626180 +349011 +2331642 +2417849 +2178585 +243315 +800126 +252964 +883327 +1521821 +349009 +800124 +671105 +2267801 +1187650 +968345 +419878 +1874071 +279158 +2178629 +93191 +923452 +419887 +2178612 +1565012 +252974 +1276098 +968343 +64389 +502514 +1187649 +1029945 +2417856 +2178592 +2178596 +2178617 +1355830 +2023959 +1126704 +539835 +1276084 +1013651 +1388566 +1755073 +173210 +1355826 +1029954 +295483 +93180 +1989836 +1029951 +419889 +2654276 +800152 +198027 +1635650 +352917 +2391782 +1833329 +800158 +1565011 +2685141 +1833328 +1187648 +1221221 +1294939 +1294938 +883397 +279148 +2178630 +1371657 +1329833 +1712833 +424935 +1694365 +693079 +1013653 +883378 +1203223 +1088101 +1105183 +243331 +1874060 +1344365 +1355833 +209938 +1303569 +800183 +1874070 +2178640 +968347 +2178643 +279152 +693083 +173216 +2178597 +319099 +968355 +424942 +222292 +1126706 +319101 +1023788 +883400 +1760875 +2391784 +379110 +64428 +173317 +1635673 +1126712 +1126717 +469173 +469114 +1143778 +1203226 +2830457 +883438 +923455 +1013709 +1135094 +173254 +1176222 +1203266 +1169528 +1203268 +2807023 +64410 +173283 +1846362 +1105195 +469133 +295508 +295489 +64405 +469166 +1245641 +1169533 +1937779 +2869838 +883440 +1013716 +437884 +379114 +243354 +1135097 +2830451 +437888 +1203265 +173245 +883434 +1169524 +469121 +1635668 +1169538 +2807034 +173282 +469158 +770176 +1126724 +1013692 +2353395 +379145 +64458 +1817670 +1846369 +469144 +360671 +1521829 +209953 +2592604 +1245634 +1263947 +1105193 +1052014 +319128 +1126732 +1088104 +1013719 +1088102 +437886 +2309990 +173268 +417674 +2626172 +1176221 +379129 +883442 +469134 +209975 +209974 +173275 +209980 +1245637 +1635664 +379112 +379124 +469136 +1683890 +1635658 +2065052 +1013722 +469150 +2807019 +173299 +1521833 +64444 +1105191 +1203225 +173289 +1203254 +1203241 +1488180 +1755105 +2592607 +1203243 +883447 +1263951 +2626170 +379144 +883446 +1475785 +319107 +1203272 +319126 +437879 +469147 +2830447 +379151 +469160 +379139 +349018 +1817671 +64457 +407834 +2104891 +279176 +2417864 +1013710 +64439 +379174 +1263945 +469127 +1263950 +1565116 +243419 +341287 +1013773 +2626186 +1405998 +1760882 +1874138 +1635722 +173364 +173333 +243421 +437895 +1475810 +1013741 +908769 +1042287 +626231 +2267844 +1013792 +1085286 +243403 +173337 +1874094 +93206 +2178695 +770185 +539867 +1042285 +1635690 +1013812 +1565117 +760770 +243427 +800233 +883535 +883483 +243398 +2492709 +173421 +1013743 +252981 +1648452 +1085268 +1475793 +1694392 +653125 +1833333 +752992 +1085289 +1013793 +2440291 +360678 +883523 +883481 +2592662 +1085278 +1919521 +417682 +671114 +1734231 +2088686 +450444 +2391795 +671117 +2592667 +883534 +1705598 +173445 +2869860 +93217 +1734248 +1075258 +747152 +1635706 +2654281 +1565078 +64500 +1013813 +2267829 +1029957 +1126748 +2592645 +883450 +883551 +1705605 +2178683 +1475816 +883555 +400369 +1475798 +883557 +1013805 +770180 +1734239 +968382 +1846372 +693093 +1734236 +1785188 +923466 +1904953 +2178723 +243405 +319140 +1431715 +2041134 +210005 +2065060 +945128 +800187 +173368 +173379 +1565123 +469186 +1757675 +1803625 +945105 +2178716 +349023 +968372 +1013779 +1565111 +1707128 +1705608 +1329852 +2065057 +968370 +1485200 +1475819 +319144 +539881 +1755107 +2178731 +1085285 +671119 +1565092 +2267820 +883479 +1874116 +1379328 +222296 +1635715 +1635717 +2178687 +653124 +1113516 +883537 +319130 +1085270 +1431716 +883478 +173396 +800204 +626223 +173328 +1874124 +539853 +1013777 +295518 +539879 +173461 +883515 +883561 +2178672 +1705604 +1431732 +626261 +243433 +360676 +1029958 +945109 +243393 +1694393 +1329844 +243436 +493304 +883506 +883453 +923458 +1833332 +1874111 +173408 +883470 +1635726 +800226 +2331679 +1565089 +945135 +883467 +738668 +2178662 +1475800 +883460 +64493 +2178658 +1803626 +64494 +1029960 +1683899 +1431746 +945139 +1088106 +1013837 +1075265 +883636 +1013838 +626289 +693104 +539889 +1755120 +732644 +770190 +1355853 +1904965 +173472 +1635750 +1475831 +883567 +64527 +1245651 +2869907 +1013833 +883604 +1245657 +883607 +1085301 +2869862 +1156371 +1113524 +173470 +64525 +1475848 +883632 +493314 +2267870 +740024 +1755115 +883625 +732645 +1221240 +1904969 +437899 +2023960 +1475825 +2267887 +883591 +173478 +2738463 +883631 +1502200 +1329860 +1874139 +883577 +2869897 +539886 +2738458 +173484 +754287 +64521 +1126759 +945155 +539894 +1645511 +539892 +770187 +2104896 +173491 +1475823 +1013841 +883614 +1635756 +279248 +671141 +1635773 +2178775 +2756042 +2654302 +319151 +1904974 +173500 +1105209 +626383 +1502202 +325809 +671133 +1734254 +1635798 +411693 +671143 +539922 +1013881 +1874154 +1635790 +64541 +173515 +2654303 +279228 +2654300 +2178788 +1565141 +1635774 +450447 +883644 +1042294 +715395 +1013862 +252988 +1785190 +883661 +1817678 +1976896 +1431749 +1126770 +968399 +923479 +1013863 +1985622 +945160 +2178819 +715406 +626354 +2391811 +2008597 +2492718 +93225 +883656 +2711060 +173519 +923481 +724174 +469199 +1029965 +883683 +539904 +2592672 +693113 +173502 +173554 +693116 +64545 +539908 +800256 +1694406 +800254 +2178779 +1919530 +1113528 +1502206 +883674 +1013885 +539918 +173558 +286122 +1833355 +732647 +469197 +397306 +279238 +539942 +883658 +800275 +93231 +1565161 +1803645 +300330 +800252 +1502205 +1904973 +671135 +1079326 +2041139 +1502217 +198040 +2178863 +800328 +17878 +1976904 +252998 +2178848 +1565172 +1803652 +1942212 +1989843 +2592683 +2301720 +1399802 +1388575 +429779 +1355878 +693120 +2178841 +1079328 +1951464 +968411 +539958 +1221255 +1431776 +1565195 +222300 +1276139 +800324 +1919540 +2178832 +1565218 +2178835 +1565194 +2178823 +800296 +539949 +1565165 +968403 +1431779 +539954 +366643 +2391818 +2041144 +653148 +2178827 +1565193 +923488 +800321 +397307 +539975 +1276141 +1431791 +800312 +2535734 +1976902 +1276127 +1833364 +355417 +252995 +1565168 +93264 +1431781 +2756044 +2178855 +800319 +626388 +2592736 +2722853 +2492732 +1276152 +1976933 +626391 +540027 +2700257 +800345 +1951477 +1502233 +2008598 +1565240 +1355897 +17885 +1951472 +1402430 +653166 +2731768 +300333 +2736675 +1431801 +2711086 +883685 +1942220 +800332 +1874185 +1989849 +1874186 +1648457 +1303587 +2492730 +1757687 +540014 +1329882 +2391857 +1431800 +2711082 +2711096 +1734275 +2756051 +2178937 +1431817 +1431804 +800333 +2722843 +1502231 +2722848 +2654315 +540066 +1734279 +2178929 +325813 +1976923 +540084 +1431805 +1976928 +540055 +1874193 +540059 +2178890 +1303583 +800353 +732654 +1989865 +2756050 +693140 +1355884 +324105 +1276156 +540025 +2178930 +540048 +1303589 +693145 +2391862 +1565241 +1874181 +540063 +1942217 +2331709 +2736680 +1355893 +1276151 +2711079 +1303609 +2005847 +800340 +2391842 +540033 +2178870 +1694415 +253010 +1371667 +2018321 +1431802 +2178904 +671146 +1734270 +653171 +2391844 +1961927 +93317 +653186 +17890 +1976996 +1874197 +2722878 +1276198 +2711120 +1565287 +1013890 +800406 +1989887 +2654330 +2391891 +2692289 +17887 +1976992 +653183 +2178997 +1276181 +2722868 +1431826 +2178990 +2685150 +2005858 +2179023 +1989896 +1344381 +2711127 +1976979 +800370 +2736696 +968424 +93312 +653174 +2178949 +2178951 +1648458 +1565297 +2711114 +1029974 +540171 +540119 +2492736 +2391874 +1565277 +2041159 +1431839 +2654334 +2391885 +93303 +1951494 +800403 +760786 +2331736 +1329885 +1163224 +2178966 +1989884 +2711126 +2391870 +1113539 +2731775 +540123 +1502247 +1276175 +1276186 +800401 +540139 +93330 +2654331 +2178975 +2041171 +2592761 +2041165 +800407 +1402439 +2492737 +800395 +1276178 +17889 +968421 +653175 +17888 +2301744 +1254666 +2391868 +2391913 +2592782 +2417881 +2018333 +1303639 +2685155 +1355941 +693160 +1276237 +2592802 +2391900 +2592826 +800414 +1355972 +540216 +2179033 +1303633 +540269 +1355948 +738674 +1502248 +1276225 +800415 +2088721 +2722904 +2711196 +1013891 +2756085 +540246 +1276232 +1303652 +1355994 +2722907 +2711159 +1276211 +2722902 +1355942 +1942240 +1395726 +2179048 +800442 +2736701 +2331747 +1977017 +2179070 +1431844 +349037 +2740145 +1942241 +1303646 +2760220 +1355940 +2736700 +2592812 +2711150 +1276233 +1977013 +1355993 +1276255 +2331756 +2592799 +2023970 +2740142 +2041174 +2391922 +2179043 +2391908 +1989934 +1067980 +1355952 +2700272 +2756080 +1383219 +1565320 +2756084 +800430 +1951508 +1276251 +2331744 +2391914 +1383234 +540199 +2005870 +2391911 +742202 +2654353 +1919560 +2711156 +2592823 +2592783 +1303631 +17899 +1276221 +1977003 +540264 +2711193 +2711143 +1029979 +2722912 +2592780 +2179040 +1431854 +1989898 +2179061 +800449 +540257 +1565321 +693153 +2041185 +2711167 +2331741 +1989914 +1874212 +1565325 +540197 +1431851 +2492743 +1303641 +1565323 +1276210 +1565315 +1734292 +1371673 +1303637 +2018335 +2711173 +2179076 +968445 +1013892 +1391227 +724220 +2018351 +1221280 +1989943 +1977019 +1734314 +2592833 +540326 +1734310 +1371677 +17905 +2692301 +1694421 +2654369 +2722938 +1989965 +1874231 +2018354 +1303668 +2005888 +1356021 +2711211 +2041188 +300337 +800485 +1734307 +1989962 +1221269 +2179117 +800461 +2179110 +419898 +653224 +540328 +2088724 +800458 +540314 +419907 +2001033 +2179084 +2179081 +2736716 +540301 +1874219 +1303664 +1399805 +173567 +1391215 +2592843 +653221 +968436 +1391213 +2008606 +693165 +1029985 +1989971 +1221284 +540330 +2592851 +1303666 +1565347 +2179102 +93345 +800456 +1734308 +1874234 +2722923 +1075279 +1276275 +411707 +1734311 +1676789 +2711214 +2041186 +2654367 +2179140 +93352 +1565368 +2654375 +2592855 +800474 +1919578 +1734300 +1312789 +1356004 +653206 +671178 +1079348 +653249 +173575 +653234 +336013 +540398 +2807047 +243463 +1919587 +2592860 +540413 +198051 +173578 +2743444 +2654381 +243464 +2088728 +1303701 +2711218 +800495 +279260 +671162 +653240 +1919593 +1833382 +540376 +2807050 +2179150 +173625 +1635814 +1329912 +2722951 +1113565 +1172411 +540394 +1113575 +883711 +1874249 +540417 +1635811 +173572 +1734316 +742217 +540409 +1874258 +2756100 +253030 +1391243 +671157 +968450 +1803689 +173570 +2179189 +1344383 +1874239 +1356024 +1919592 +2722955 +1502250 +2012652 +1329914 +1013929 +968476 +2361502 +210023 +1013896 +397308 +800491 +1013935 +1874248 +1067996 +379191 +653232 +1565378 +800511 +210026 +540371 +1676791 +1874247 +366655 +1635813 +1734322 +2711219 +693182 +693184 +883738 +173581 +1431882 +923522 +540404 +1067986 +1803669 +2179200 +173596 +64559 +732657 +800513 +1919608 +173598 +173590 +173629 +1388593 +1067987 +93363 +1094010 +800523 +800489 +540391 +540389 +1105212 +2756099 +2267910 +653256 +883732 +366657 +1803673 +653254 +540415 +1029987 +800510 +2592867 +1961943 +1013952 +1874241 +1665572 +2179180 +1874250 +1013894 +173627 +1391245 +1635816 +1068000 +279264 +2018362 +540418 +1734317 +1502259 +1431869 +883761 +1635841 +968494 +437902 +64569 +1565428 +1635849 +93397 +968492 +243470 +1391255 +540428 +693198 +923537 +800525 +749846 +1163226 +493337 +93402 +1013996 +671184 +2179215 +923538 +173693 +732666 +540459 +1094013 +2285832 +1431891 +1151261 +64575 +1356041 +450461 +1635845 +1431897 +1079360 +173665 +64577 +2492761 +800544 +469210 +540465 +1344384 +968491 +1431904 +800531 +93404 +1502263 +1187687 +1391252 +2301768 +173687 +1386083 +1635825 +626450 +693200 +450458 +243469 +2179237 +279280 +1694425 +1079365 +1187690 +1079362 +1276289 +1221306 +1276283 +1356028 +671189 +1068005 +883746 +1874276 +1565400 +800542 +173699 +1276291 +968499 +2179255 +1475880 +671182 +1676797 +173679 +1013968 +1013961 +1676796 +1356032 +173663 +173641 +2722967 +2008608 +64568 +2005898 +1329917 +800532 +173688 +1635830 +2179233 +760796 +1431892 +1079361 +671190 +1221309 +968505 +540466 +1303705 +945181 +540443 +1565524 +1312795 +1042303 +968529 +253044 +1068016 +1755131 +800652 +469221 +344502 +968619 +93425 +671200 +904339 +1029999 +2179336 +411712 +2756116 +1780602 +1356050 +968587 +17930 +1565487 +2391961 +17942 +1937799 +1937798 +93528 +540585 +1329934 +540510 +2592890 +1475887 +2592895 +1803712 +1565450 +2492772 +800569 +450462 +540586 +253041 +1075295 +968546 +93423 +1635871 +626496 +1874293 +93546 +968596 +173707 +93448 +754290 +1344388 +2391965 +968563 +800623 +883784 +2654417 +1068014 +1356062 +1431915 +968594 +352930 +671197 +800675 +2391957 +1502274 +64587 +1079373 +1780600 +1014029 +93474 +800607 +279303 +93515 +1014031 +1874284 +2748063 +883806 +968579 +93498 +1113594 +2654420 +1635879 +760801 +2018369 +93433 +1431919 +1502273 +1767319 +968542 +2592900 +923580 +93540 +1378438 +1874300 +1079374 +1276301 +279294 +653282 +1676800 +968543 +437903 +1565495 +1904988 +2179298 +2179315 +540537 +279293 +336020 +1079388 +64581 +493346 +2331790 +1635869 +540576 +1817700 +1874304 +173766 +1565479 +173746 +253043 +2331807 +760809 +904335 +1565529 +923561 +1705637 +732669 +1371688 +1014038 +754293 +800624 +93470 +1014008 +1780601 +480347 +1029992 +540498 +1014025 +626493 +1635876 +760808 +2807052 +1919627 +1042302 +1371692 +540535 +800642 +493347 +1694436 +540578 +540602 +480356 +1502272 +17951 +392117 +1113595 +968602 +2492784 +2592887 +968578 +760811 +626506 +2267932 +1803701 +540554 +923577 +968592 +800559 +295527 +1431912 +173755 +392119 +800615 +626501 +2179342 +2654403 +800677 +2088733 +770193 +540518 +800568 +385120 +540533 +1565507 +1356063 +738677 +93456 +653275 +540516 +1874296 +1803699 +1565459 +1803720 +2592889 +2592893 +540575 +1874313 +1086554 +968518 +1113587 +749855 +760812 +693208 +540573 +540511 +437931 +1042306 +626558 +1042305 +407841 +480381 +480370 +64643 +1803738 +2654427 +724292 +469225 +493365 +1431944 +437942 +1905010 +1431949 +64593 +1694470 +1820326 +1821838 +64599 +2007914 +1635905 +198068 +93583 +1475913 +1817706 +379211 +738683 +1734354 +2005913 +64623 +64608 +450492 +1169564 +173804 +2088772 +173877 +480378 +1874369 +1803728 +379224 +1431936 +1094045 +1874330 +1245681 +732670 +1874335 +2267949 +1068027 +2179390 +1014062 +1905003 +1565567 +2331828 +883845 +968649 +469266 +2331825 +243478 +64612 +968665 +800700 +1356087 +64614 +693241 +748203 +17985 +469284 +64607 +411715 +1780630 +400383 +493369 +407842 +64640 +1874317 +1565574 +2756119 +1565587 +1937806 +64656 +64619 +968659 +480369 +1263967 +1079410 +279346 +1094040 +1565568 +1874382 +173824 +2267970 +1767323 +64596 +1648467 +540648 +800680 +1263966 +540662 +2104907 +93574 +243482 +1014052 +344513 +626517 +626526 +222346 +2700282 +724274 +1874339 +222329 +222335 +2700283 +366666 +64613 +1187701 +883825 +1139528 +198066 +2414443 +279327 +2267965 +2179422 +1905005 +450493 +1030004 +344516 +2179411 +1720569 +738687 +1475909 +286131 +253055 +1977055 +2267961 +379201 +1156382 +173767 +1094024 +1905026 +2179395 +2700285 +1172417 +1014084 +945200 +379230 +173826 +2179388 +1431935 +173883 +279338 +17952 +2267966 +1254687 +2088738 +437929 +400378 +429795 +1085310 +1780618 +1565578 +968671 +1068028 +493373 +2179377 +2179375 +2088773 +279382 +173807 +626554 +1356088 +1502289 +693237 +1221340 +883826 +2331817 +319200 +1874372 +2001040 +64598 +738682 +2626189 +480371 +1169559 +1163234 +1014087 +173816 +724283 +64592 +1874388 +1245680 +493374 +469243 +1245684 +1874344 +222343 +17969 +2492791 +1712843 +693247 +626556 +17959 +1390571 +2807058 +1014082 +626532 +2267934 +1378439 +243503 +1156384 +1780615 +93581 +1995066 +1371701 +243483 +1105221 +800682 +1977059 +1221335 +1042310 +93576 +279317 +379229 +1176234 +2711231 +1705647 +2711236 +1221331 +173876 +540618 +968655 +1565579 +724279 +1874341 +1874386 +450494 +407855 +2179376 +1203310 +1874376 +1780621 +279377 +366678 +2267953 +754301 +800693 +626528 +243528 +968673 +1056299 +429797 +450497 +93562 +450477 +540656 +1113614 +336025 +1401533 +1263960 +469227 +243519 +540658 +1344399 +1367210 +1635929 +93614 +1951531 +653303 +626618 +1367243 +1948488 +1312807 +1401537 +1388614 +671239 +945240 +1635953 +2723002 +349058 +2760225 +2760243 +1475927 +671273 +2179440 +1720574 +540686 +437946 +64673 +1475933 +671293 +279396 +671262 +1356124 +626652 +1948471 +64674 +2353411 +1683921 +626632 +1367254 +626638 +173888 +1344397 +2005922 +1126837 +2760244 +1014120 +2005919 +883880 +2740165 +173912 +325822 +2392001 +626699 +2005915 +1942252 +1919650 +671277 +1367253 +2685167 +1014131 +2736736 +732681 +243551 +1635926 +1565595 +1367224 +2682476 +469297 +1401541 +173903 +1329968 +2179433 +1431953 +715448 +945241 +626629 +1042329 +626706 +1755164 +1475940 +1126831 +732688 +626698 +2689548 +626702 +732680 +2179439 +1755157 +715453 +671223 +1386085 +1386087 +540688 +945244 +279407 +1720576 +626630 +671219 +2005920 +1803745 +1395746 +626619 +671256 +1635986 +671226 +1919638 +1985629 +2736726 +1755161 +1371707 +2179435 +1919653 +1635927 +1113621 +1401535 +325827 +1221342 +366684 +1635946 +653296 +1303716 +724304 +2267976 +1276320 +1042330 +671235 +1431952 +1367213 +626674 +800706 +626689 +2008611 +2760237 +540668 +1817721 +540671 +2736729 +1635961 +671255 +2756122 +626599 +540682 +626676 +968675 +626691 +1367233 +883888 +1635938 +1989998 +1383270 +2592924 +2842218 +1948470 +1399816 +671234 +1755168 +1126827 +1755146 +1187711 +1014156 +1367212 +1431957 +2005925 +540734 +724307 +1734369 +2018389 +1402449 +653324 +1431969 +1734372 +2179446 +540715 +540735 +1392351 +2179453 +2654437 +1977073 +1303728 +653313 +2740166 +2331837 +2392014 +1221351 +93623 +1395753 +540716 +2723028 +2392012 +653311 +724305 +2736741 +1942260 +2654443 +1874404 +968692 +1187717 +2711247 +411717 +2700287 +1383272 +286133 +2018388 +2179449 +1276327 +1874403 +2654435 +800718 +1734374 +2392013 +693263 +429801 +540726 +1030016 +749872 +1329990 +1431979 +1068031 +626715 +2179567 +336039 +1565654 +693294 +1565649 +2748085 +1734394 +540877 +2012668 +2440328 +540788 +1399820 +724344 +2179512 +883892 +1030017 +1663152 +968778 +2301791 +2654458 +693274 +1977089 +2711276 +2654448 +2179480 +1432016 +1356179 +1734404 +626721 +1356193 +2179533 +1329988 +724338 +173929 +2179471 +2392029 +1094072 +1356167 +540839 +2740169 +366687 +1303748 +540759 +2179501 +1276350 +693268 +724317 +1676825 +653338 +2723036 +540818 +1432023 +968718 +671296 +93638 +1383278 +540836 +2756160 +2723053 +1329980 +2711289 +968777 +883894 +1356151 +1399819 +1221370 +1395758 +2592972 +1303740 +653350 +1977093 +968726 +2179523 +1356174 +2682479 +2592961 +1712850 +923644 +2723038 +2593000 +2592987 +1874419 +724357 +923631 +2301797 +2711264 +2301795 +1431990 +1391266 +1432002 +2179484 +1303755 +923629 +2593027 +2440325 +286134 +923633 +2179477 +1951547 +1276358 +2331849 +800776 +540888 +540825 +1294969 +93630 +1951555 +540864 +1303742 +1565679 +1254716 +2592990 +1565668 +800779 +1977085 +2001053 +653346 +540746 +1329987 +2001051 +738691 +2001062 +2592985 +2748088 +1094074 +1068033 +724340 +2331848 +1502300 +1565657 +2492809 +968737 +2088787 +2711284 +1676819 +300353 +2267983 +1977074 +1734387 +2179535 +93636 +540867 +540813 +1356149 +2179546 +800734 +968705 +2723054 +693277 +653339 +2179551 +724322 +1383282 +2179508 +2001069 +253068 +540918 +1565731 +1565711 +1030029 +2179608 +1990026 +493400 +93644 +1905041 +1475950 +1329999 +540895 +1276382 +1356209 +2179607 +1402457 +2005958 +173947 +904343 +450521 +1079446 +1356203 +1156385 +1094090 +1094086 +64679 +1565700 +1565725 +480420 +540948 +2001068 +18012 +2593037 +883910 +417713 +1399823 +2361508 +671299 +1734432 +2392068 +2654470 +253071 +2711294 +968813 +2179634 +800804 +968811 +1977119 +2179610 +1874432 +336040 +1221385 +173934 +1990030 +1502314 +1371735 +2392063 +1990027 +1409844 +1565728 +2654495 +653358 +198077 +1780637 +2392065 +1371734 +1502315 +1874431 +800809 +1803753 +1079440 +1401549 +1303763 +2283736 +1383294 +1803757 +2005946 +2723067 +2392081 +2869919 +800806 +968808 +2392084 +760823 +800790 +540965 +1395759 +2041203 +1648474 +1734430 +968810 +693309 +1803756 +1221388 +800807 +540947 +93654 +2179622 +93659 +1485202 +800793 +540941 +1312812 +1030035 +2392072 +923657 +693370 +541048 +1937824 +1245699 +1203342 +1187764 +1203334 +1203338 +1245700 +300358 +1187748 +1254771 +279447 +1113648 +693350 +2179656 +1874498 +1803772 +1094106 +93727 +1817730 +2756176 +800817 +1330020 +1383302 +1330012 +1502340 +883912 +1014188 +1094120 +1919687 +2331857 +1399824 +693368 +1330015 +279430 +2001073 +968862 +1187769 +693325 +1874496 +945258 +1263981 +222375 +1254780 +693373 +366709 +366708 +1942278 +93710 +2593069 +1502344 +968848 +2179640 +222379 +279456 +341312 +498684 +1139531 +724376 +2024011 +1780647 +1276385 +1245703 +2267988 +1635996 +1139532 +1056320 +1734447 +541012 +541003 +1254765 +968843 +1221407 +450529 +1303768 +279434 +1565770 +1303764 +336045 +2748103 +1502331 +923681 +1068041 +419915 +2654511 +923679 +1042339 +724413 +93711 +800859 +2748095 +173963 +541052 +740031 +2301811 +173980 +93694 +2392097 +344531 +1919692 +1383304 +2392121 +93740 +968876 +1432052 +1874502 +724405 +1356239 +243555 +1079454 +279444 +295544 +1203336 +1502333 +1254758 +1156388 +1817734 +1803777 +1014190 +693364 +1388629 +1475954 +968890 +1030042 +800862 +671309 +1712864 +945252 +1060441 +1294971 +173968 +480436 +392152 +1919688 +1014189 +626761 +1565750 +1221449 +923680 +279433 +493405 +93741 +2723075 +1330011 +1221411 +1635991 +1720579 +93742 +693323 +469304 +945250 +923702 +1187770 +1780649 +1833431 +1565752 +1356248 +1187750 +1874503 +2492829 +2748102 +279457 +724409 +379248 +1803780 +724410 +1221455 +2007917 +693322 +1221456 +419917 +1942279 +1874488 +366704 +800842 +173971 +1635993 +1654117 +923694 +1050984 +1014180 +1502336 +738704 +724386 +1203330 +1187749 +2700297 +493421 +1126859 +1203346 +1705661 +450556 +407869 +397319 +945278 +1276392 +800880 +469310 +1475963 +1113670 +331677 +1221486 +1565827 +93761 +923729 +1113675 +923763 +626809 +968922 +173985 +2020152 +1221491 +174041 +800879 +923766 +2283762 +429809 +400391 +429805 +1303774 +1734464 +883939 +1648479 +1502352 +1565832 +469329 +626791 +923753 +945266 +760830 +397321 +450573 +2593084 +2748120 +2593078 +2492849 +923745 +2859205 +222387 +1030057 +2756187 +626778 +480460 +1565822 +1803805 +2756188 +1303773 +2593087 +344540 +493415 +1330031 +2361522 +1905054 +1079458 +770201 +1502355 +1068062 +2361521 +366719 +541091 +1502357 +2267995 +341318 +2331877 +923722 +2492853 +693399 +64710 +1990032 +174014 +1767332 +945293 +336067 +341323 +2440340 +1919712 +2492841 +1356256 +968902 +2748111 +93772 +379281 +1014207 +1060443 +222390 +2361524 +1502354 +174006 +2088800 +1636013 +800871 +1221470 +64726 +469334 +626772 +336066 +2179690 +366725 +541083 +331678 +1565853 +671311 +2743459 +480445 +1151283 +626775 +64708 +198092 +671310 +480454 +1432067 +286142 +1356263 +1874517 +2711295 +1276395 +1356254 +1874513 +173999 +18034 +883971 +1094129 +1565784 +1014212 +174027 +2807080 +923776 +1636001 +1156412 +469376 +1113686 +93784 +379293 +1937835 +1780663 +2012673 +469390 +469400 +1014227 +1079462 +480493 +400397 +1356268 +1803828 +1221504 +450620 +1821840 +1156407 +419922 +1874527 +800918 +366754 +968939 +93794 +1014247 +493429 +1203348 +1203360 +437983 +331681 +2440347 +1221531 +360711 +800920 +174074 +1156405 +336076 +1221543 +1254786 +1068066 +1803823 +2421886 +1245750 +480487 +1169582 +1126867 +1817740 +450593 +417722 +1014220 +1221533 +493453 +469404 +355447 +1060447 +1820333 +480467 +295560 +344548 +1401553 +2268004 +1263988 +437988 +1817743 +1163265 +450618 +450612 +319256 +923786 +349072 +1156401 +1803829 +174060 +319258 +2179713 +450587 +1263993 +2593104 +469381 +174064 +407882 +469394 +328179 +319254 +2593098 +429819 +222398 +923789 +968932 +493440 +1254798 +366740 +693411 +945313 +222399 +437977 +1172428 +336077 +437971 +2179712 +1079467 +198113 +469378 +1803824 +64735 +198112 +493447 +1833458 +1942283 +392163 +469391 +437999 +1254788 +1172431 +2421889 +1874538 +1245721 +493442 +366742 +198105 +480500 +2807103 +2179722 +1502370 +1094168 +760848 +469432 +1094149 +379312 +693417 +1221602 +379332 +1094162 +1126876 +379338 +1833483 +243611 +1221592 +1720584 +18061 +1151306 +279490 +2842236 +2842239 +379307 +344557 +2807083 +1817751 +1755191 +1383311 +1712868 +429843 +923815 +1720583 +2179746 +174091 +1409857 +1203391 +2711311 +2700317 +1143788 +1846388 +1330044 +1712869 +945331 +626829 +2842264 +1263996 +243623 +2807116 +1734477 +1905071 +1820335 +2492869 +243640 +541113 +1833467 +279500 +1221617 +945323 +2535793 +1356276 +1485207 +450651 +2535796 +1905075 +2088812 +2088823 +923801 +469417 +2268026 +64747 +1905081 +1203385 +724437 +469443 +1399836 +379321 +1203411 +379327 +908786 +2842220 +1094164 +1105273 +2807086 +469448 +392173 +1648482 +1767354 +2711317 +2842320 +18096 +2007921 +18094 +319260 +1245755 +2842293 +1734478 +1780675 +2842339 +243642 +923806 +884004 +1187834 +1502365 +1014254 +1694496 +740036 +800949 +379322 +1203414 +1846392 +1030067 +1221572 +2179751 +1388634 +1221571 +883991 +18082 +336092 +336097 +2842302 +1169586 +64764 +1817754 +2807120 +243635 +300367 +1485208 +243641 +18085 +450644 +1919730 +541120 +1712870 +751024 +438016 +1402462 +626825 +1874566 +2012679 +1203401 +1030068 +2842352 +1502359 +1683941 +1263997 +1187818 +93821 +2682483 +1734486 +1874561 +1143789 +1712879 +429844 +1565904 +1139542 +2549573 +2104913 +1977131 +328184 +1942289 +2711306 +1203392 +493462 +319274 +243614 +1030065 +279492 +1937841 +480511 +2842327 +2179774 +1874545 +693432 +379315 +2027086 +2842268 +319269 +693430 +404543 +480506 +1817755 +1094158 +1221562 +1312823 +2807106 +2842237 +883997 +210087 +1769223 +2654540 +760846 +1905079 +1330055 +2807126 +1874567 +198138 +366774 +800925 +1905068 +1156430 +2012677 +2179732 +2842316 +1221568 +1221605 +243608 +2179780 +800941 +1221618 +2179766 +945326 +1139545 +366758 +1126889 +1245771 +541124 +450636 +295582 +2392158 +2654577 +2685199 +64783 +279507 +2065086 +1475980 +1694502 +1905085 +2692324 +1042366 +64773 +64776 +1636067 +2654575 +1476054 +2028880 +1905096 +715481 +2179842 +1476046 +1094178 +884090 +884169 +379366 +693447 +884021 +392188 +64775 +366779 +2268049 +2268121 +1636099 +2268130 +379357 +884098 +2392146 +379380 +884118 +2392159 +1221637 +801020 +1126917 +429849 +884112 +295594 +760864 +1565913 +1094174 +1476033 +626898 +801009 +2268152 +945343 +1565944 +626836 +1432107 +884028 +884076 +884157 +2654619 +1694510 +1014286 +2041211 +1203416 +923825 +884063 +379344 +1014275 +1476051 +2392192 +541179 +1705673 +279509 +1636146 +693441 +2268054 +392187 +1636121 +1126916 +174123 +1720601 +1475984 +2392179 +693451 +2041220 +884145 +1014266 +1187848 +884149 +174119 +2088829 +1565922 +1995072 +541169 +2331891 +884122 +379353 +379373 +1014311 +1565942 +626839 +2414459 +438036 +1388636 +626933 +1014322 +2179866 +1937854 +2692323 +1995074 +760862 +2654598 +2179787 +174129 +2028881 +1937857 +2179801 +295613 +438040 +498709 +2268044 +2685189 +1312836 +884065 +2065102 +1565947 +884057 +1151312 +498711 +379354 +2065091 +1565939 +2414454 +64782 +671317 +626902 +469456 +2268071 +1475981 +945346 +2179785 +493478 +295584 +801001 +968975 +1755226 +2654626 +2065137 +626837 +1720603 +1303783 +2018407 +2738486 +174103 +1432088 +800978 +884139 +502526 +1476048 +379374 +1636105 +1636063 +1636127 +286158 +2692329 +2392142 +1014348 +1042382 +2179867 +2065130 +1565940 +392186 +1371756 +1636106 +2711327 +770219 +295589 +884083 +174130 +392190 +1014279 +1476087 +174115 +2593117 +2179850 +884121 +1126911 +2065114 +1014272 +2268094 +295633 +1126912 +541178 +210107 +2682487 +2692315 +1402463 +671323 +355463 +2268118 +1042395 +2654605 +295604 +1476045 +626921 +392199 +626850 +174105 +1565969 +2414446 +1221650 +541177 +1705665 +626928 +1203421 +279512 +884078 +1636169 +1755207 +1203423 +1755208 +1476026 +2654635 +1636155 +801012 +1874622 +174114 +174110 +1113705 +1502376 +2268080 +541139 +469457 +968977 +438028 +1937850 +626912 +1014321 +2654585 +295627 +884043 +541164 +1475990 +1432097 +1476063 +801005 +2723107 +2440351 +1187851 +18121 +1187885 +450688 +1221670 +969017 +1203429 +1221688 +2392215 +64799 +1245806 +429865 +1221655 +693454 +1221705 +2018408 +1432113 +480544 +1143797 +1821845 +1874647 +366818 +2593140 +1833519 +770226 +480545 +397334 +2654636 +1156435 +450732 +1566015 +1833533 +1156431 +2743477 +2593159 +450704 +2869935 +1254837 +1221676 +366801 +429861 +1566052 +2593162 +1833528 +2593128 +724444 +438059 +1094185 +541190 +2549575 +749894 +1163275 +300377 +801025 +923829 +174149 +2440356 +469491 +1821844 +2700326 +1820348 +2179897 +2807158 +319345 +2748145 +429879 +2748146 +1705685 +1762703 +1094197 +2654638 +945354 +1221700 +2842370 +2869972 +438068 +969001 +2748144 +93870 +336125 +923847 +366783 +2869991 +1658390 +1636191 +923861 +2869941 +738731 +1767364 +1734514 +1566042 +2859218 +2593168 +1221709 +2392203 +450696 +1245803 +1163274 +450695 +379401 +480546 +1014354 +438071 +450721 +18115 +1245814 +1432114 +1874656 +222432 +1030092 +2392205 +450706 +2738501 +1636199 +2869951 +366796 +2593147 +355477 +2301824 +174164 +738736 +1874631 +222420 +379423 +336105 +2593171 +366821 +450726 +1060459 +319342 +945353 +1172450 +2869929 +424960 +1105287 +2593152 +1203456 +969003 +2738498 +286164 +1105288 +884200 +1379338 +1874637 +541203 +366799 +1172463 +336126 +1803858 +738734 +626957 +469499 +2301819 +1565979 +366819 +969006 +923828 +379413 +2748141 +724456 +2869925 +724454 +450674 +2842372 +1476112 +450717 +693479 +2654648 +1905109 +1803853 +1833508 +18117 +801029 +469478 +397331 +93849 +1565981 +450677 +801037 +969010 +1151313 +222441 +2869974 +336124 +801049 +1676876 +366807 +1187854 +2738500 +450687 +438056 +969016 +1203440 +2869930 +1874640 +1221716 +724458 +1820342 +2301823 +2301821 +2700323 +1566033 +1113718 +2626203 +450681 +198158 +1565982 +1356297 +541207 +355466 +2414461 +336114 +366812 +2869947 +1276429 +2593175 +1874634 +2020156 +1683944 +379418 +2723118 +438047 +1694519 +222429 +1172456 +1221701 +366824 +2869936 +1566025 +2807156 +1203434 +2012686 +366808 +18126 +279533 +1780689 +319367 +801085 +450747 +319376 +945378 +2421893 +450756 +945384 +407917 +469561 +2593267 +344565 +2842399 +174233 +64808 +2626211 +1874668 +174265 +1156445 +174180 +1409865 +801076 +1254847 +64816 +1139561 +493519 +174194 +1905118 +222451 +1143798 +748216 +1977136 +884239 +2842513 +2842431 +2842487 +174243 +1169601 +1014402 +2842536 +1636207 +1014392 +1203483 +2842475 +2593224 +1172477 +279558 +174246 +174199 +1094202 +1566075 +469554 +222455 +1203459 +1803883 +174213 +1636202 +407909 +480569 +319383 +969033 +1874663 +541217 +1502387 +2007927 +2593258 +2842451 +243687 +450759 +493520 +1086568 +450740 +397337 +2593260 +1521870 +480578 +1780690 +1676900 +626975 +174189 +1734521 +174301 +1151331 +1833543 +2593222 +1060462 +18134 +1388639 +2549577 +2440384 +341355 +1683950 +469568 +1769231 +1803876 +1683962 +438113 +360774 +1817769 +93897 +295665 +198172 +379434 +1156441 +1821849 +969042 +1079481 +379435 +1156444 +969050 +1937868 +174239 +331693 +1817770 +295648 +751028 +243679 +1172474 +2593263 +336128 +1905117 +2593225 +469553 +740043 +2626213 +751029 +2492913 +724462 +1803884 +279552 +2593211 +693483 +969038 +64803 +2421892 +1060463 +1755238 +2842528 +493511 +1356301 +438105 +1030097 +1014404 +2842398 +884215 +2842459 +64820 +1014424 +1079483 +1734526 +1905122 +1683964 +438109 +884230 +174251 +1068079 +469543 +279531 +671335 +1636201 +93899 +1705690 +1502384 +923885 +450765 +253103 +222446 +1734527 +222448 +1566069 +1919762 +801077 +319379 +2492918 +2842497 +493524 +2842499 +969034 +493514 +2654655 +2842498 +480563 +693492 +2593253 +360776 +2842548 +174252 +438103 +2842531 +2593188 +2842377 +1042416 +884228 +417731 +1203473 +923878 +469520 +884244 +969053 +450744 +279547 +969049 +1820351 +480570 +1126956 +1755237 +1221758 +344561 +450752 +319388 +2013532 +2654658 +1126952 +1874670 +198170 +450745 +2842491 +1113734 +1075338 +738738 +243676 +2654651 +945393 +2593192 +1014398 +1521875 +352939 +400420 +1014407 +198167 +2593255 +93889 +1203466 +93900 +319361 +1820349 +450763 +1014415 +1905113 +2517559 +1654138 +1566082 +2007930 +945414 +627030 +64866 +1962009 +1476132 +2180014 +1312860 +2018413 +541251 +1356322 +2179987 +379449 +1014446 +1014454 +1312853 +1371769 +174386 +1276449 +2268195 +64857 +2268173 +2179960 +2180022 +1312894 +93943 +1276453 +1977152 +801117 +627043 +1163285 +2738521 +2654704 +210148 +2065151 +2392253 +93926 +541258 +1312864 +174320 +1476206 +2007936 +1636228 +1476173 +1636222 +627001 +627036 +174331 +1977143 +93921 +2179955 +884296 +1962001 +2268226 +2268242 +2179958 +2268190 +1169606 +2179929 +801120 +1383318 +1566142 +1942301 +1985633 +801088 +1312869 +627035 +1755272 +174415 +1954999 +1294982 +2179985 +2179931 +2492927 +1105304 +1014436 +2654722 +627042 +1566113 +2180016 +2738509 +1683966 +2654698 +1995110 +2756204 +1476141 +1566119 +174347 +243720 +2179954 +1485210 +2005987 +908799 +884321 +1312877 +2179952 +2414462 +1476192 +18151 +1566135 +174341 +1383317 +1755263 +174392 +1476187 +1990039 +1379342 +379458 +801124 +2738529 +1502404 +1566089 +1961998 +174413 +174344 +1276463 +1636266 +627013 +884273 +355492 +2179983 +1942294 +2515264 +93923 +1874682 +2654690 +2654681 +1276444 +1566145 +1356328 +884314 +2492943 +18147 +801123 +969088 +1636269 +884330 +2738508 +2492941 +627057 +1566084 +1432149 +174354 +1476151 +1014444 +1954992 +1566090 +1476209 +1476156 +93935 +627054 +2723125 +1276434 +1990043 +627058 +969084 +541230 +1432146 +2414464 +1276432 +1330085 +627048 +1276435 +174393 +1476164 +1476180 +1203497 +480587 +1187937 +222477 +1636287 +469630 +1874686 +319426 +1874696 +1187949 +1151333 +1221821 +945426 +64921 +450805 +2593316 +884359 +1075350 +341361 +2392293 +64899 +360792 +693528 +1663167 +64885 +243755 +801131 +174429 +1833550 +174454 +1874706 +429922 +1874690 +1042436 +336143 +210167 +1203515 +1803908 +210163 +923924 +541288 +243733 +1720614 +627094 +2682508 +64896 +295669 +1094214 +2361540 +1402472 +2440393 +945422 +243740 +2748161 +344571 +1780696 +64894 +379464 +407937 +341363 +243724 +1390581 +1401560 +392231 +210165 +2012695 +319421 +450809 +366839 +724468 +319410 +349113 +908800 +1075345 +1636294 +1636281 +693510 +1820368 +1874698 +210158 +1169612 +429920 +2654743 +198203 +243757 +1245859 +379466 +1977162 +243773 +279579 +1566175 +469597 +450810 +1636279 +64917 +355493 +1187926 +64920 +1566222 +174428 +93949 +243753 +2748168 +400423 +222459 +450828 +1187932 +1502418 +469642 +450799 +732712 +2012696 +1977163 +1187925 +469599 +366838 +450846 +748219 +1172480 +392232 +174442 +1245865 +341364 +407929 +2301838 +1203498 +724482 +1521885 +243735 +438132 +1203516 +1566206 +450835 +724479 +360787 +1203518 +286177 +198198 +336133 +1187923 +1767384 +243756 +1221818 +1566150 +1056340 +2654742 +1221865 +469616 +243774 +1221843 +331697 +379486 +355495 +884355 +222474 +18156 +1030111 +1143806 +1126961 +1113744 +1502432 +243742 +1151342 +627134 +429909 +2756211 +738750 +1187960 +2593286 +429908 +1221797 +2283782 +174467 +352948 +2593280 +469639 +541280 +1803891 +1502415 +174460 +1521884 +1221850 +715504 +1221825 +1254882 +2440391 +627084 +379487 +198205 +336136 +1874714 +1068091 +1636275 +469633 +450853 +1566191 +1995121 +1817776 +2065160 +1113739 +450834 +64905 +801136 +1126967 +366852 +627104 +174443 +1245867 +2012697 +945428 +1050995 +693533 +379491 +469669 +400435 +1187984 +2180044 +1846408 +2180055 +397347 +2593361 +627135 +1113769 +1245885 +1163293 +429933 +438145 +379492 +1874730 +1221869 +1636312 +1356336 +469693 +1874725 +438157 +2593360 +404555 +945444 +210172 +1905140 +355507 +469667 +2180070 +407944 +2593350 +1221879 +2440407 +2626216 +1476219 +1780713 +1636307 +450875 +1151350 +328215 +1187968 +450889 +1187974 +1094224 +2593353 +1874732 +469681 +1566233 +2492973 +1113763 +243780 +349115 +1094225 +404557 +469685 +1221898 +2180066 +328211 +2654752 +1755276 +469660 +2593335 +355505 +2593346 +2180059 +450865 +1780709 +469649 +469655 +438158 +366858 +749910 +2870002 +749912 +2654746 +1203527 +2012699 +749913 +1060473 +1683972 +2088834 +908802 +1221899 +1203535 +1755275 +1014486 +1962013 +2492961 +480603 +2018418 +1187965 +1566232 +1780704 +286183 +1734576 +1163303 +1254894 +1079507 +198225 +1663175 +1803936 +2180083 +884381 +336157 +2492998 +969165 +480612 +1156484 +2842583 +2654785 +2654781 +493561 +1874814 +923952 +1068137 +1079505 +1356357 +18207 +969118 +1163301 +2700339 +1874812 +2593370 +198217 +498747 +1094244 +693544 +1874806 +1264048 +1767399 +94017 +2493016 +1094245 +1221945 +1113794 +2842578 +1399859 +198211 +1221990 +541370 +1133630 +1187995 +1566329 +1648500 +480636 +2392314 +2682511 +1079502 +749926 +355514 +801169 +355516 +1163296 +1163305 +469728 +738764 +2180100 +1330103 +1139583 +450966 +1163312 +1694549 +1221978 +2593374 +18183 +1156482 +253108 +222488 +2535823 +1383326 +2180103 +923962 +2593379 +749925 +18187 +801178 +417741 +1566310 +407962 +1094248 +1060478 +336161 +1780747 +1566259 +93971 +344598 +493562 +174481 +1139587 +1780743 +94002 +1068145 +1566253 +1221957 +93977 +2654782 +693563 +693572 +2593395 +450962 +1221915 +1820377 +969136 +1030121 +1172489 +1330104 +2180108 +480654 +385141 +2842580 +2593387 +400437 +1874760 +411739 +94020 +336166 +1566300 +1833579 +2654772 +749917 +1874755 +336163 +1203553 +2180088 +1780754 +1056350 +411745 +1079510 +923993 +1485212 +480622 +2088844 +1221930 +541328 +419942 +1188018 +2549585 +1113795 +1874800 +749922 +1075360 +360800 +2870024 +1388651 +400436 +379498 +1432178 +429947 +2654776 +341371 +198235 +923976 +1566324 +2088846 +319431 +2018423 +93973 +480652 +1658392 +1566299 +469720 +438168 +18208 +749928 +1734572 +1203556 +469724 +222506 +1874765 +1502458 +198227 +341373 +480664 +1874771 +923991 +1874808 +1566312 +693552 +1502440 +2535821 +1388647 +801199 +1371786 +469711 +1566327 +738763 +1056347 +738759 +1356351 +210176 +1371785 +502541 +923979 +1254912 +450956 +923981 +1203560 +1221969 +93992 +801145 +1905144 +1356341 +286179 +424970 +198229 +2492996 +1163307 +1767397 +450960 +469700 +1683974 +1056348 +1874794 +419943 +279591 +541340 +969109 +715507 +1254899 +749929 +1803956 +1079494 +1303811 +1221991 +1762713 +1803948 +1330109 +1676933 +1094243 +493549 +627292 +1755287 +222520 +2807178 +417745 +243832 +1014517 +1094257 +1521889 +1636325 +2013555 +94048 +2807182 +174558 +1245908 +411747 +1817793 +2859240 +360809 +1734584 +2700348 +2268300 +397355 +627323 +1222008 +2104919 +64980 +243859 +2807175 +627211 +627337 +1203570 +1264050 +2104949 +1075366 +884430 +295693 +1222014 +1127006 +627312 +2870038 +243798 +2013568 +1383333 +2807198 +451004 +64960 +908804 +1276477 +2268265 +2268267 +1156489 +1996644 +2028890 +1060504 +174530 +2870132 +724517 +2870084 +2104935 +884444 +2807200 +754316 +2859263 +2013566 +2006002 +1344448 +2180123 +379507 +1060497 +2549607 +2654803 +2013550 +1683983 +2700349 +2268268 +1502484 +2870050 +2807179 +174485 +1905166 +366878 +2807225 +1151381 +1188030 +2870041 +715518 +2870180 +1014508 +1245922 +1088122 +2440431 +469768 +2859321 +627343 +715526 +64981 +627360 +64952 +1156497 +243794 +1203604 +469744 +2028888 +2807246 +2807276 +1817800 +174513 +174541 +438182 +2807212 +2013548 +1985658 +2807208 +2549590 +451001 +1409883 +627208 +627316 +1636326 +1985654 +715510 +352955 +2859279 +1755294 +541376 +945474 +400440 +1245918 +1014525 +1222017 +1094263 +2807289 +627154 +1042456 +2859306 +945503 +2515268 +295700 +1245906 +2807249 +295690 +1488201 +2807201 +2268312 +1502477 +2180126 +1042443 +198240 +945456 +1127009 +469771 +379532 +2870173 +884439 +2807213 +1203575 +770239 +1521911 +1176290 +2807262 +1476232 +2859264 +1245916 +174510 +1254918 +2859350 +2088852 +627238 +1143823 +627367 +1755302 +210196 +627210 +2859238 +1390586 +2859228 +1955006 +627147 +1833583 +2028889 +1962019 +627146 +1105346 +2807235 +2013560 +1344444 +2807229 +2593409 +2654794 +469733 +1969386 +1636358 +1636331 +341376 +1755312 +319454 +2268306 +469742 +2859255 +1676936 +1188026 +732725 +2807273 +884402 +2065171 +2870164 +2870151 +379517 +1962018 +2870113 +2859241 +2859262 +1156495 +1395773 +2007943 +1502485 +770237 +1874828 +2870055 +2807194 +2807267 +1905155 +1312927 +1636323 +627277 +671352 +295691 +671349 +64950 +1203589 +174498 +243837 +627310 +2700345 +1985645 +1636354 +627359 +2807187 +1203602 +715521 +627342 +627212 +2007948 +379546 +1502483 +2859247 +2088865 +1127031 +2859295 +627252 +2104924 +671359 +1075371 +2088853 +1648503 +1502476 +1042441 +1521904 +1476227 +1222015 +1188027 +1371791 +2654810 +1409887 +1188081 +1222110 +328232 +1378454 +210208 +1068154 +1769246 +1833621 +1356378 +336176 +1014562 +2493035 +1566377 +2001098 +469778 +2283814 +451011 +1767429 +1176292 +2422236 +1156521 +279619 +2493064 +1056360 +400450 +2180158 +94067 +480705 +480704 +451032 +1566360 +1833620 +469824 +1176291 +2493038 +1222083 +94070 +2007954 +2421902 +1846425 +438187 +1566358 +2493055 +1803972 +411750 +1203641 +1113803 +1094273 +469801 +243868 +64992 +2493034 +404568 +1254921 +64996 +2392323 +1803966 +349127 +392246 +2807329 +94089 +1151392 +2180147 +1014560 +1767421 +2361556 +2807297 +1874862 +366884 +2493063 +2283822 +279653 +279620 +94094 +1222132 +451020 +469822 +429976 +480694 +451057 +243869 +243884 +355528 +286186 +1222111 +2807302 +407992 +2392316 +748227 +1769247 +279658 +1172504 +1156517 +1846429 +469845 +2517562 +480680 +1188041 +2268332 +1203646 +1222093 +2180192 +1105373 +1905176 +1169634 +1014582 +1874846 +1846432 +469775 +451010 +279663 +1075384 +18251 +1502493 +2018428 +1169640 +2807323 +1222044 +1874889 +1803982 +2180179 +1378453 +2654804 +1804016 +1780780 +2361554 +438197 +1014564 +1094265 +2392326 +2593459 +2440445 +451046 +2283807 +469823 +379551 +1203644 +1105378 +469834 +1188044 +469794 +1086577 +541400 +429969 +1636388 +1874878 +1014572 +1804018 +400445 +2807335 +1804024 +2421900 +2361553 +469821 +174594 +2301845 +1942314 +1163319 +480706 +438208 +1254937 +801224 +1075380 +1392368 +693601 +1817806 +469792 +1762717 +469817 +451100 +2654824 +1143831 +1566369 +1803964 +1222105 +1874844 +469797 +1068150 +2593431 +1636374 +1804004 +341388 +2593419 +2807318 +1254934 +1113813 +1803998 +1163315 +2807312 +451018 +64994 +1502487 +1176302 +2807311 +1068155 +279628 +1151408 +1014567 +360822 +1833604 +429989 +1172513 +749934 +1188071 +2180190 +1780778 +2807317 +174603 +2593450 +469790 +480676 +2549609 +397356 +1833613 +1188039 +1163324 +451029 +1919816 +1188054 +1874873 +451043 +1804027 +2180183 +174613 +1245944 +451079 +1151397 +2593458 +693598 +1803968 +2180160 +2440442 +749938 +349135 +1222146 +924072 +451139 +18278 +469851 +319515 +349136 +438228 +438238 +1874902 +2493097 +2807368 +1143836 +724525 +469856 +469870 +1996652 +1030132 +2018433 +1014594 +1942317 +1188083 +2283835 +469882 +2842662 +336179 +451144 +541419 +222533 +945518 +1905219 +924073 +1188085 +1780790 +2654835 +1203672 +1780807 +2807344 +541426 +65033 +243897 +1014603 +2807346 +2283852 +2842624 +2682519 +480750 +1203678 +1875005 +2283829 +451138 +1094280 +1874906 +360832 +2361576 +480717 +2807354 +438230 +480715 +1371794 +541421 +469893 +2842646 +1356382 +18289 +1222151 +1068165 +2842666 +2361560 +2842595 +2654838 +945509 +319495 +1874946 +18265 +724526 +1222154 +198274 +469857 +65031 +480718 +1188092 +336184 +493596 +1874927 +1874964 +924051 +1919824 +18261 +493618 +1874932 +1817821 +2493095 +1780800 +1780789 +451112 +469898 +2018435 +1874892 +1188084 +2493081 +1222174 +1874994 +210229 +1105385 +2020172 +295718 +924028 +1905185 +1780791 +924046 +417756 +2807377 +2807349 +480756 +1151414 +94107 +2654848 +480755 +969226 +1203673 +2842635 +541411 +336182 +65030 +924040 +94114 +2842623 +1276482 +2654864 +1143835 +1105382 +498752 +493637 +392259 +1658396 +1156530 +319498 +541413 +319505 +349139 +2361561 +1874940 +1014600 +2283850 +1874979 +924043 +2842615 +1409915 +2440477 +480780 +2440482 +884645 +1636456 +2088876 +884528 +1720636 +1705712 +2028896 +1172549 +1014625 +627415 +1312935 +2440457 +469922 +1356409 +438261 +352973 +1476356 +366904 +884671 +2180203 +715549 +2180227 +749963 +2331915 +884492 +174681 +344618 +1676953 +2593528 +392270 +2088911 +693628 +1476330 +2268379 +1188114 +243942 +969241 +1139631 +2593531 +627449 +94132 +1390596 +2440472 +1804079 +1254946 +1105401 +1188138 +2268396 +1188158 +397369 +1780831 +770250 +924100 +1705710 +770262 +884594 +1014624 +2268428 +627433 +1014691 +801285 +969252 +2331966 +1780847 +1636511 +1566407 +1330140 +749971 +1755339 +319526 +1014662 +1694553 +2331923 +379610 +94140 +2268455 +243926 +451195 +1820388 +1222195 +2331939 +1476315 +352967 +801273 +1820384 +693644 +174728 +627409 +1105391 +279695 +1139624 +2392353 +1172532 +627450 +2088935 +1188116 +2593468 +801312 +2414490 +1694561 +1105404 +2180260 +1222207 +884533 +18302 +2104993 +379636 +1636478 +1135132 +174711 +480781 +392266 +419947 +349148 +1094295 +1371797 +541438 +945540 +1636525 +2041231 +469926 +1566425 +945590 +1720642 +1476292 +2392330 +801310 +1502503 +627399 +2268495 +2088888 +243928 +541440 +1476285 +1684007 +1804073 +1014607 +924081 +65079 +174659 +1276489 +1156538 +174682 +379646 +392277 +438269 +1222216 +174695 +352983 +2705527 +1665584 +1014657 +1476306 +1720653 +2268407 +884476 +715538 +1476264 +174664 +174658 +1476328 +243952 +2331946 +884478 +884503 +1356405 +2180229 +2414487 +884664 +392273 +732741 +884657 +945580 +884569 +1172548 +2593535 +884479 +1264065 +430023 +1636521 +1636415 +1330152 +1060531 +2268365 +174737 +1060532 +1014666 +2626225 +2268478 +945601 +627441 +945545 +884629 +65078 +2331948 +1734605 +379638 +2024033 +1566406 +352968 +908829 +1694551 +884652 +693652 +2268492 +1330145 +2414483 +174721 +693629 +2180285 +2180216 +2593487 +2041233 +884690 +480775 +319530 +1636416 +1476272 +884568 +1502509 +430025 +1203681 +2268511 +94129 +884474 +1636397 +1566399 +1636472 +1222198 +2593490 +1409898 +1817825 +2593511 +2088891 +740070 +884686 +1042478 +748234 +2104986 +2593543 +366905 +1188111 +1222214 +2331954 +715548 +336188 +969245 +1488213 +1392374 +1330154 +451150 +715566 +392272 +884619 +2088922 +1875059 +1636422 +884603 +1203683 +1476325 +1875068 +760907 +749944 +724542 +1820385 +1014618 +1712906 +945560 +1905234 +1014699 +408013 +341402 +1105393 +174647 +1762722 +1875033 +2180204 +801314 +715567 +2593512 +1014646 +760901 +1432223 +884505 +1330136 +2331947 +1344452 +1094291 +2088917 +671376 +2268406 +749970 +174703 +715550 +1502513 +1755346 +2331926 +1014627 +174723 +1636467 +174663 +174653 +884558 +747170 +2268472 +2268405 +1014679 +2268381 +1694560 +884635 +2331958 +243954 +2268467 +1222224 +1720647 +1905230 +1875022 +884696 +65060 +749968 +2104961 +1139625 +1476280 +1379363 +1135127 +1079533 +1188148 +1636396 +1014636 +884596 +693639 +2180222 +1820389 +174644 +1188169 +174732 +1075408 +1875030 +1875032 +2268404 +541454 +1762720 +715564 +1176318 +2180252 +243946 +1056364 +1502504 +1665582 +1755338 +2180288 +353000 +1636414 +2593473 +2268465 +1676957 +1734598 +2331936 +2105001 +2088883 +1172554 +2088916 +2104994 +210254 +724532 +451151 +1014635 +438276 +2705537 +2088894 +243939 +243964 +671372 +1804091 +1875016 +2180225 +1734601 +2268370 +319522 +1636508 +480779 +2700371 +94137 +884699 +94124 +349163 +1344460 +1088126 +1432200 +945589 +1042479 +469905 +2268440 +1276485 +884491 +2593539 +352972 +884606 +1014659 +801253 +1665588 +2331937 +2268351 +1379362 +279693 +2065180 +751041 +945569 +341407 +2180297 +1488207 +1476288 +94147 +366925 +770275 +1151437 +1222294 +2493123 +480816 +1151435 +18322 +2493108 +2654895 +480789 +724544 +94152 +801334 +336192 +1163339 +738800 +1833635 +627470 +2493122 +1399882 +480794 +480801 +480792 +1804127 +1068172 +349164 +1254968 +2493106 +969273 +749981 +627469 +253134 +969259 +1163333 +174753 +18313 +279715 +430035 +2493121 +430032 +2493128 +451246 +1566464 +65093 +1833638 +493643 +1388663 +2756241 +2493130 +1172572 +65089 +2392363 +1254972 +65086 +1203729 +1163330 +480793 +469950 +1395788 +1139644 +1684032 +2654898 +693664 +1356415 +65085 +480826 +366933 +379662 +1720663 +1222242 +924104 +1172577 +1094298 +749978 +1222250 +1566511 +627467 +1804118 +1485219 +397377 +336198 +18323 +319542 +1694575 +1222274 +1156548 +451245 +1014706 +2493101 +279723 +493647 +1566517 +2654873 +1919864 +1399887 +627468 +2654906 +2756243 +222557 +884718 +451230 +174759 +408024 +1254959 +1172579 +2493114 +760918 +1151436 +1390599 +1014717 +1222257 +627473 +1014716 +724553 +480805 +366918 +724550 +2331987 +2440484 +94141 +1817839 +754327 +2180306 +1804105 +451221 +1056382 +2065234 +1254988 +1188229 +1056371 +693681 +1919890 +693675 +627485 +1222338 +1222348 +1817840 +2180329 +1566579 +1246023 +65108 +2493138 +1014733 +1875098 +2180337 +770278 +1734621 +1075414 +94160 +693680 +1254976 +198288 +2268528 +2593576 +1919895 +360868 +243979 +300411 +2065238 +541475 +1804164 +969297 +1222357 +2180351 +366938 +1203744 +1502519 +392285 +1222358 +1222380 +969318 +2065233 +2748200 +1804156 +2593629 +1356423 +94157 +1156549 +65123 +1804146 +1676970 +1817843 +1105423 +1566569 +1203738 +2041247 +738806 +469953 +18340 +1636548 +1432232 +174773 +1014721 +2626229 +2593557 +1833649 +493659 +924139 +336209 +469952 +1817850 +541486 +945646 +924115 +1804145 +1014723 +1919893 +2440495 +2593620 +2593636 +1684033 +498772 +1804203 +2593593 +349168 +1222345 +2593648 +2593574 +2593612 +1222330 +498758 +424977 +1636559 +2493142 +1254978 +1399890 +469960 +1566532 +1875111 +430063 +336214 +969325 +627489 +1875112 +2180347 +1188223 +2065237 +2180356 +1056370 +1919877 +749983 +198293 +1390600 +493663 +1030154 +430056 +1094323 +1769250 +627475 +1222347 +65109 +438294 +1203742 +1833641 +451293 +1636546 +541488 +1151453 +904380 +1156556 +740083 +210262 +541479 +65113 +1014735 +1254985 +1105422 +18338 +430048 +65106 +1804205 +2593584 +480862 +174779 +419951 +344630 +2593571 +1105415 +1817851 +2440502 +541485 +1222375 +210260 +884727 +1780859 +1566566 +18333 +1169653 +319544 +65121 +1937913 +924124 +738807 +1875116 +451284 +1817854 +2041239 +408031 +801337 +2593652 +1875119 +1875117 +1356426 +1566555 +480848 +18337 +2440488 +1676973 +174787 +1399895 +1127117 +884737 +1401577 +1720666 +1222392 +2301866 +2654928 +1780877 +480876 +451339 +1014750 +438311 +174816 +480896 +1804218 +1817858 +1222446 +1804228 +2013576 +1222430 +480873 +1833663 +1804244 +1846435 +969355 +1014752 +1222394 +1030160 +430092 +969367 +451301 +2593661 +1767471 +801366 +945648 +1014776 +740085 +1767458 +884756 +480901 +1014760 +969351 +279755 +945650 +2493153 +1875135 +1356435 +1875129 +1875146 +541503 +279758 +451306 +1060561 +295750 +360871 +210277 +1833667 +1780869 +341433 +1521936 +1875142 +945656 +379702 +493675 +1734623 +1804238 +480877 +469983 +969363 +1875130 +1734627 +693686 +924150 +2301864 +924146 +1694581 +884732 +493674 +210275 +1014759 +1392389 +1203757 +738810 +493678 +1694586 +1222434 +1875163 +1705729 +336226 +2593660 +969372 +1804231 +174825 +1919898 +1151461 +392288 +480885 +174784 +1817860 +1356432 +1143854 +1734626 +1905252 +1780882 +360885 +884735 +1163357 +1222432 +1875150 +65128 +1804246 +1734624 +430070 +2301867 +2361579 +198299 +94179 +438318 +1203758 +1014768 +493671 +253143 +1875152 +1521938 +2593668 +969341 +319556 +451308 +174808 +1255008 +1395791 +1172602 +1246042 +2392383 +1676972 +2283861 +1014771 +2593683 +2493156 +693692 +2440525 +1188241 +480868 +884754 +2593682 +1817856 +801355 +174800 +253145 +1767455 +2392382 +627497 +1312941 +174805 +1875127 +693682 +801354 +2283862 +748242 +2807397 +724592 +65170 +1676980 +2807393 +2493172 +724602 +174909 +174878 +2738545 +884803 +969381 +279787 +945672 +732752 +801375 +969405 +470001 +1344490 +1566637 +2654947 +884779 +2748221 +738820 +1905261 +1079548 +740090 +18350 +1014796 +174833 +2654941 +1566597 +2654949 +1833684 +244034 +2807403 +1734632 +724607 +1937922 +2006020 +1905256 +945681 +801387 +671384 +541533 +749990 +541519 +1188279 +693714 +2268538 +210284 +1566634 +1521944 +2018449 +65159 +1188267 +801374 +286206 +969386 +1113867 +451348 +1820406 +1085323 +2493176 +884783 +244052 +969407 +1079536 +65137 +1127130 +732751 +715584 +724594 +904386 +627535 +1488217 +1566607 +1330217 +2593710 +1875176 +1636580 +1113863 +715581 +319582 +1127123 +366969 +222590 +2180383 +451360 +1222487 +884780 +760930 +969392 +1875182 +18358 +1875192 +2700379 +2593719 +1648513 +1388668 +1804266 +2748207 +1820410 +174857 +279785 +969403 +2738546 +319589 +1734631 +2807405 +627526 +724593 +2593708 +174900 +732747 +2065244 +1502547 +1330211 +174901 +94204 +174876 +1712915 +210280 +1485220 +300415 +724608 +1734648 +1079538 +174834 +541530 +969382 +94209 +627545 +174827 +1734638 +1502553 +1969388 +1636591 +541525 +2361589 +732746 +1734650 +1502558 +174840 +244022 +1371812 +2283872 +1817862 +174881 +174894 +1502551 +1371813 +244030 +174913 +1172612 +1388670 +1014810 +366975 +94215 +760928 +2493167 +451361 +1734633 +279778 +2711359 +1734637 +1014804 +1188287 +908840 +1780885 +1684048 +451364 +1875200 +2711364 +908839 +2024044 +945667 +715585 +430100 +1127143 +1432269 +65186 +1676996 +325838 +969418 +2024048 +1636609 +1734668 +2723147 +1566683 +2711409 +724641 +884809 +1295004 +2807432 +1785198 +1919938 +2593759 +2180404 +2180428 +671391 +908843 +1246064 +2001124 +2685227 +2018459 +653424 +65183 +924208 +1276534 +319608 +174966 +724630 +732774 +2180403 +2760262 +1276546 +1734701 +1014836 +801404 +884850 +1990049 +1255017 +2392448 +2008616 +541611 +2655014 +2018460 +2756254 +1566679 +1780903 +1222514 +1383374 +2723151 +324118 +969421 +693737 +1014832 +1875232 +2711403 +1875271 +541624 +541630 +1948492 +1712925 +627574 +627602 +2001105 +884847 +253156 +1919943 +2440544 +1222545 +2593804 +1222539 +1222552 +541627 +1222515 +2593787 +1432267 +969449 +1276551 +366979 +627600 +671399 +671402 +279817 +1203779 +2711370 +1094377 +2515281 +2711384 +1086588 +1875269 +349186 +1042506 +1222537 +1203773 +279811 +379744 +2593757 +1919935 +2392468 +884846 +671394 +360891 +1356474 +724645 +693765 +1905269 +174969 +1356499 +1677001 +2756265 +1014822 +653410 +2731797 +1833711 +2756259 +2180423 +2180446 +1312949 +18366 +541596 +2276048 +969433 +2711381 +279800 +1919919 +1502567 +1734703 +430099 +1977201 +319603 +1222555 +627584 +1276521 +279810 +1330251 +801423 +2180465 +1734656 +18365 +1919958 +2655013 +1712920 +470014 +222611 +1030179 +1188303 +2807419 +760943 +2088982 +801442 +541665 +2180470 +1222500 +801400 +1295010 +1432253 +2180451 +1875233 +244060 +541553 +1804285 +541663 +1566655 +2180447 +1833695 +2807414 +541607 +2593785 +1566658 +750003 +1755376 +2756256 +1246069 +94234 +1636611 +1188305 +1276513 +2515282 +724627 +2655018 +1502563 +541576 +2756255 +1255014 +801421 +1734652 +1276529 +2711382 +2332006 +2006046 +1014828 +1676993 +2593813 +627569 +1734713 +1222548 +2012736 +2731798 +1276556 +2711417 +2711390 +2711411 +2756270 +541547 +924192 +1734660 +300422 +1663197 +1172620 +541551 +2654980 +884820 +1330253 +1977195 +1113887 +541605 +1712929 +2756266 +693746 +1222529 +2593774 +2626233 +969425 +1977221 +1139672 +1356461 +2180395 +2593810 +1356491 +801468 +1755380 +493686 +1566665 +2654998 +541620 +2392457 +653413 +627593 +1276559 +801447 +1188313 +1276553 +1566670 +1276554 +1566704 +1068203 +541579 +1712919 +2180448 +1255028 +1276524 +1636604 +2654977 +2180405 +2740175 +2593796 +801455 +2180492 +969469 +2024054 +2268558 +451383 +1222581 +2392471 +541695 +210293 +693791 +884866 +1014875 +1222591 +1188321 +801486 +1094383 +1767479 +1014866 +801474 +1014869 +94268 +541673 +1246079 +1937935 +884876 +480932 +1094392 +493697 +1276577 +1780907 +1833724 +1060573 +724671 +541676 +1755391 +94270 +244071 +1246076 +2088988 +945696 +1060569 +1113893 +884863 +253173 +1127150 +1566731 +1094405 +174985 +279826 +1169661 +1804289 +1105451 +392307 +174983 +94275 +244064 +1330261 +2180482 +1105450 +279845 +1919986 +1014861 +470025 +801480 +541691 +969485 +1127160 +1139674 +627612 +2332035 +1276575 +1014872 +1222580 +1566723 +1113894 +174982 +1566729 +1804304 +924212 +2180495 +1127155 +2593828 +1379376 +493698 +884868 +627605 +244066 +1105459 +1222588 +1105458 +1566718 +253168 +65196 +1222585 +2268555 +1875315 +2593822 +1804297 +1905275 +1222592 +541738 +1222617 +1677008 +1276584 +924224 +222626 +1566805 +1255079 +693801 +2723163 +2593843 +541781 +2417895 +969512 +1188332 +969503 +2723166 +1255076 +18398 +1014878 +1734757 +541754 +1566816 +1276602 +1566766 +1833732 +724682 +94320 +2180549 +2392484 +1875330 +801539 +1113905 +541720 +1222603 +1566774 +419963 +1255083 +1113914 +1432300 +1432289 +884885 +2392488 +1990075 +1566799 +1962039 +653429 +2493211 +801527 +1919988 +1734737 +2180572 +1276604 +419962 +541728 +1094412 +2180590 +1068212 +2417896 +1566806 +2361598 +693795 +2180538 +2723161 +1875323 +884887 +801541 +801559 +969495 +801515 +1222604 +1566802 +2332072 +94310 +2180535 +801512 +541749 +1276603 +1636634 +724694 +1712941 +1276605 +1677014 +801563 +693808 +1401587 +724697 +1406011 +1432301 +2006052 +1276585 +541761 +801545 +801533 +451389 +2180545 +2180511 +801513 +1113904 +2731802 +1905279 +1030192 +724690 +419971 +541707 +1566814 +1432274 +366985 +1636661 +2655064 +1919999 +1804328 +1432314 +1566904 +2392507 +328258 +2515296 +2859384 +715615 +1990078 +419996 +2593870 +175069 +1075438 +2392552 +969534 +366991 +627639 +884905 +2392502 +1566847 +1222658 +222641 +1188339 +715616 +175029 +1694612 +1401590 +1356530 +1875353 +1330312 +884911 +2756280 +1276626 +884948 +693831 +1734761 +1246085 +1330301 +2392511 +300436 +2180660 +2655067 +222642 +1734773 +379747 +1276614 +884933 +175055 +693841 +2088999 +18406 +1875336 +2392515 +2655077 +2180603 +1276613 +420003 +2655069 +253203 +1222641 +438330 +627648 +2089001 +2268561 +1875345 +801580 +724718 +1566836 +2301913 +653477 +175072 +2593897 +2180630 +1566896 +419986 +2392532 +2180663 +671409 +2593852 +724723 +884908 +2870185 +750011 +1188337 +1521947 +1875347 +470030 +2180633 +1636639 +693832 +969536 +2392496 +222644 +1566857 +1502600 +1694644 +969540 +1030197 +1977252 +724719 +2301925 +419980 +1905281 +2301906 +2392527 +2700392 +1303854 +541803 +1636657 +627642 +904394 +1276611 +319633 +420017 +1942336 +2731806 +1222649 +1401588 +2180675 +1833740 +1833739 +2301940 +325851 +1734768 +1684057 +1677016 +1222622 +2392545 +1049609 +2493245 +1222639 +1502628 +94332 +884931 +1648521 +1705740 +2180616 +884921 +1694607 +653468 +2180620 +355573 +1330295 +1246099 +94347 +2392516 +1014888 +904398 +1785201 +379749 +1014895 +175038 +969533 +924242 +419990 +1804324 +480941 +1246092 +1113929 +18405 +198332 +2515295 +653471 +2493221 +653472 +94324 +653461 +1378469 +2180666 +1780908 +1636645 +1276638 +884973 +392312 +420028 +2731809 +1566984 +1295023 +1734777 +1905294 +1566923 +885012 +2535845 +470046 +2180739 +1820414 +2180747 +1566950 +1962067 +2301950 +884957 +627704 +328259 +2392567 +1203803 +470048 +945711 +885009 +1785209 +2089005 +1075441 +1395811 +1476417 +1246124 +693853 +2731814 +360895 +1566921 +198344 +924270 +1734792 +1684064 +493725 +1566944 +2180722 +1356551 +2593922 +738839 +969557 +1356535 +1677027 +541850 +884981 +1755398 +1905296 +2593902 +1367274 +801642 +1356552 +1255098 +1875376 +2535851 +1127173 +693870 +2353426 +1684061 +627696 +2180711 +2723175 +349193 +724735 +693862 +884966 +2593937 +1356558 +1113932 +2711438 +541833 +541836 +1330320 +175098 +2493258 +65228 +279894 +2392570 +2655089 +693866 +2301946 +1734798 +360899 +738843 +1276637 +671433 +924284 +319640 +470068 +1127172 +1636671 +627686 +379752 +1127171 +2180740 +2332094 +1962050 +493722 +366996 +1163379 +693867 +2655099 +1276635 +2515307 +945715 +760965 +1255094 +541852 +541860 +493724 +2301947 +1401601 +222653 +1833755 +2332102 +1030202 +2392569 +884984 +627658 +1356545 +1255097 +1566968 +969584 +175121 +420027 +1151490 +1432331 +1042520 +2842687 +1677021 +884976 +2332099 +1246119 +392315 +1502644 +1977263 +1990081 +1566981 +801654 +969564 +2689551 +1139680 +2593941 +2180719 +1485226 +2493255 +724733 +222652 +1977267 +18411 +1356549 +244084 +627687 +1755397 +924267 +470069 +493728 +1566951 +1875370 +2740179 +1734776 +1804329 +969559 +175104 +253204 +2392635 +1094463 +1734811 +1395815 +1962072 +541924 +2655128 +2700401 +2283882 +693884 +175149 +1875457 +1875514 +1383406 +2807441 +2180917 +1804372 +653503 +493736 +742250 +2593952 +2842712 +2493302 +2700405 +1276671 +94390 +1875495 +2535859 +1942346 +2493346 +1432336 +2180767 +1255118 +1222703 +2180938 +1502679 +1356589 +1567157 +18420 +2180792 +541905 +1804384 +2180933 +175162 +1920019 +451409 +2180923 +1875443 +451402 +1875402 +94405 +1399920 +1875493 +1567043 +1567122 +2535863 +541916 +1636688 +693879 +2655146 +885023 +924312 +801665 +1356586 +1694679 +924315 +2593976 +2593989 +1502651 +1255122 +2180785 +801732 +693873 +801672 +2756305 +2180784 +801747 +1804352 +969602 +2392627 +904405 +969616 +1567092 +541933 +1356581 +760969 +1068250 +627726 +18426 +1068255 +541872 +2392628 +2180823 +2332154 +1094456 +2723182 +1255120 +541868 +1636693 +1567069 +2655107 +175156 +2493277 +1875509 +541992 +253221 +1567062 +1188379 +18425 +1567024 +1833758 +1567148 +1694656 +1030216 +2180788 +1567057 +2535869 +2301970 +1567181 +222661 +1113943 +2332150 +2332117 +2493271 +1677033 +801713 +2700406 +1188373 +1920029 +2440570 +2392609 +2332119 +653502 +1694699 +1356600 +94451 +924357 +1694697 +2756293 +1276678 +801724 +2535860 +1188359 +2655180 +2180826 +2180796 +1990089 +1567174 +1875439 +1567127 +1875461 +1694708 +653495 +1383412 +1875486 +1804351 +1330344 +198356 +2180780 +924313 +1875421 +1222709 +2392592 +1406030 +1567097 +1567035 +969640 +2655208 +1502684 +1567050 +801689 +1567187 +2180790 +2842711 +1875395 +1566999 +411807 +2301969 +2493289 +693915 +2301980 +94448 +2180879 +2493366 +2493321 +1734829 +385175 +2332112 +1163394 +1502672 +2302000 +2655185 +2332145 +2493367 +1567077 +541908 +969601 +2731818 +222681 +1432339 +18430 +1694693 +1677044 +1094444 +2302006 +2593974 +541886 +1188380 +2593999 +1502692 +801745 +2301960 +541876 +2655160 +2493317 +1163395 +1203804 +541865 +541885 +1276662 +1567134 +1303880 +2535854 +94388 +2655117 +1962079 +1068264 +1804375 +801692 +1712959 +2593948 +1804340 +1303877 +1734824 +2655155 +2332174 +2417903 +1875416 +1222707 +222675 +1567169 +1068269 +2180856 +1875398 +1094443 +2006061 +1694671 +1222700 +693896 +1094465 +94396 +2807446 +2301996 +1567153 +94414 +1567007 +94432 +2593988 +1502693 +542001 +1920032 +2842704 +2731820 +2493363 +1567109 +1567068 +1094436 +1734828 +1875404 +2332125 +2089028 +2180849 +1068256 +1694684 +1295024 +1163383 +2180753 +1875442 +885025 +2493272 +2392621 +2301998 +542005 +222700 +300445 +1056407 +1395814 +2332171 +969597 +1567088 +1113945 +2517564 +2655211 +1780912 +2417901 +1276656 +1566998 +1295025 +2332164 +18432 +2361621 +1432374 +1920044 +94431 +1056409 +94436 +411815 +385180 +1330348 +2493318 +1875463 +222684 +2593964 +94411 +2089034 +541934 +693874 +1567052 +2493262 +1255121 +336262 +541881 +2748233 +1276642 +2593984 +1188367 +411809 +2493319 +18475 +1780937 +1920095 +2748238 +94470 +1875564 +2012747 +1567236 +1113979 +924368 +760975 +969670 +175188 +2594053 +1804417 +1920086 +2493371 +924386 +65248 +1222784 +2594020 +1757732 +2426547 +1567209 +1875642 +336272 +542013 +1780936 +1014971 +653509 +2594059 +175175 +693936 +1567243 +969657 +1113972 +885047 +2748237 +2392645 +924363 +1094493 +542064 +1875562 +1330373 +724770 +2535901 +2493399 +750021 +2018485 +627741 +2440585 +1875616 +94495 +253258 +1383424 +1734856 +1042524 +724786 +1833804 +801783 +2594041 +1567221 +1356612 +1875526 +969656 +1677064 +1203805 +18459 +18471 +451424 +175211 +1014941 +2332188 +885050 +724780 +2731824 +2535892 +1222779 +693943 +732789 +175187 +2493394 +1875602 +367009 +2493388 +1833798 +2535878 +319647 +2493403 +1127188 +1222799 +1014947 +2493384 +1151508 +1246128 +1395823 +1068274 +1388701 +1068278 +1378476 +1875550 +1875553 +1068276 +94486 +732788 +969681 +2655256 +2594039 +2807451 +1188398 +542014 +175202 +2655242 +2493379 +1920090 +1188392 +65252 +1094482 +1030229 +801781 +627745 +1188386 +397404 +742256 +924374 +1113962 +542047 +1875537 +2392649 +2008623 +18461 +336278 +279906 +2302015 +1014968 +1502704 +411824 +222712 +969692 +801784 +2535884 +2493382 +1367276 +2756311 +1113981 +1804434 +198398 +969679 +542035 +627737 +2655223 +1920097 +175178 +1875629 +1094476 +1105474 +1567211 +222722 +1399922 +1014973 +1804430 +1567242 +969658 +300457 +724774 +969663 +451455 +1330407 +1875673 +1068317 +1079558 +1677072 +1222896 +1875692 +1222898 +724790 +1636709 +1151520 +1222853 +542078 +1094501 +2493436 +1056424 +1833832 +2392653 +2723187 +1356619 +2302027 +175250 +279923 +724793 +411834 +904418 +1920130 +1875699 +319663 +742275 +1694749 +1188456 +1875706 +411853 +400491 +175246 +175227 +2180976 +1222897 +2302026 +1920129 +627747 +336288 +344664 +760982 +2392677 +1875658 +1222882 +627768 +1780944 +653516 +1188420 +319658 +222736 +742272 +2302020 +2493435 +1188407 +2655278 +392319 +1875690 +1875656 +1068308 +1188447 +1875651 +885059 +1502722 +627763 +1188428 +904431 +1222873 +18499 +724792 +244104 +1780940 +2302024 +1875676 +1677067 +385199 +1636710 +1151518 +1694755 +1139719 +1133644 +2493410 +1920133 +742271 +1014980 +924401 +2392659 +1068304 +945735 +1222883 +175224 +1068320 +470080 +627770 +1151521 +885061 +1014974 +904423 +1942351 +1094505 +1875695 +367023 +2594094 +1222877 +244113 +420034 +1127191 +94524 +480971 +2440596 +385196 +397407 +397411 +328266 +969721 +1188429 +1188445 +1139709 +451433 +222742 +1222890 +542095 +1135142 +451453 +904426 +2392668 +1188455 +1105478 +1068307 +451442 +451457 +2594119 +451436 +1962101 +1804478 +924456 +2302059 +2594132 +1567315 +2493454 +1255162 +367029 +1015010 +1401607 +451470 +801826 +1222912 +18512 +653521 +1042537 +1875717 +2594179 +1402505 +1780948 +1378491 +2392691 +1056426 +1502744 +1276711 +244130 +1015013 +470094 +1222935 +1163403 +2392698 +542121 +1014987 +801811 +1432405 +2493462 +801825 +1188480 +924427 +1875775 +1222940 +2440611 +1075469 +1833842 +1875715 +411862 +175307 +969727 +1255163 +1015014 +969740 +1133646 +470091 +1388705 +1330442 +1188475 +94547 +2594177 +1977292 +653522 +1395833 +1114004 +2332208 +801801 +1330419 +1567332 +1188470 +2353432 +885102 +1636740 +2089062 +1567346 +94541 +1163410 +1804475 +2181026 +2181025 +1392395 +1330427 +1330411 +253266 +750050 +1875769 +279932 +1804481 +470086 +1875749 +2008625 +1395836 +430123 +2594153 +1356640 +175254 +2181050 +1163406 +2594140 +2302060 +2440606 +1502750 +1056427 +1079567 +1712967 +1330436 +2626256 +1636735 +451481 +175301 +1246135 +801809 +1875750 +175286 +1222947 +693994 +175291 +924426 +885067 +1875790 +1356625 +924459 +319668 +742278 +2594148 +1567328 +1015007 +945750 +2655322 +1665600 +1734910 +732800 +2089052 +1875802 +430126 +175277 +1780952 +969764 +1734908 +750051 +924439 +2302045 +724806 +2655301 +244129 +279934 +715655 +2440613 +1636738 +1014985 +2018497 +1432391 +2001140 +1295033 +438340 +1255167 +1833849 +2594156 +2392689 +2302061 +1875763 +1330426 +738859 +18511 +1712972 +885070 +969742 +969765 +1636745 +801803 +750054 +671453 +222753 +1567341 +175287 +732803 +2515322 +451472 +1875759 +1684068 +1139731 +945748 +724805 +1068322 +1432398 +1567326 +1276703 +653519 +279937 +2089067 +1276706 +1068331 +885088 +1042532 +1833845 +1734894 +2012752 +430122 +279928 +2001138 +379770 +969746 +1060592 +1636752 +1476439 +360902 +1962128 +451511 +2756346 +2181129 +1127217 +1875907 +1094541 +94583 +1567512 +2302081 +1705769 +1203820 +1276725 +1567419 +2493517 +801852 +1636760 +470166 +1875938 +1151543 +969794 +2181136 +1567416 +542265 +2655369 +2594329 +1567380 +1344519 +801914 +94613 +742291 +2181099 +2655377 +1330457 +2392781 +1188488 +627810 +1378496 +2594331 +175346 +2268588 +1356675 +319680 +1330493 +2089127 +1432463 +2181139 +627824 +2268578 +724832 +1567466 +1694790 +2535948 +18559 +969782 +1432450 +1567358 +2181098 +1684085 +1060632 +1222948 +2392731 +750065 +2655364 +2594218 +724836 +1395845 +1378498 +1060620 +694026 +18540 +1356679 +2181293 +1068369 +1068343 +1330488 +2181385 +1015094 +969790 +1875969 +1163430 +1977305 +732819 +627903 +1785240 +175329 +945761 +1105506 +18541 +1502809 +1188540 +2181284 +1188545 +1567372 +1875882 +2594266 +1567364 +2594263 +470102 +1476482 +542218 +945764 +2181212 +924480 +222766 +1378499 +738867 +2181171 +1432426 +627844 +1330487 +694066 +2392707 +1075478 +2302107 +1875874 +2181339 +2181144 +1068367 +1567469 +1755422 +2493525 +1833901 +742292 +1276757 +542256 +671471 +2302076 +924504 +2181334 +1817904 +2594251 +924506 +1875965 +627879 +2655380 +1833884 +2711491 +1432434 +94598 +924494 +1920174 +2392747 +94601 +1785222 +2711461 +1330456 +1330466 +542159 +2181361 +627878 +430129 +1015086 +1785221 +1875946 +244157 +885181 +1817910 +2181268 +1502795 +1833914 +198428 +470183 +885144 +1920161 +1920182 +2700427 +904448 +1712992 +885129 +1401611 +1502812 +2268573 +18538 +694037 +2440643 +1476448 +2440615 +2181376 +2515336 +411866 +2594237 +1383451 +493749 +175392 +1432483 +2089106 +1767496 +2594199 +1833897 +1905313 +222795 +175398 +1833873 +2626270 +2493526 +1502792 +1665607 +2493491 +94590 +694076 +1030254 +1694780 +2493496 +1135152 +2711502 +2181352 +1015035 +542241 +2655349 +1276731 +279953 +2392720 +1962113 +2711480 +1905332 +969830 +1636784 +2181128 +2181244 +2181113 +2006078 +1755427 +2515345 +1502777 +1804529 +1734925 +2181394 +2760283 +627802 +2535919 +1875836 +744911 +1151533 +1223014 +1188520 +175386 +732811 +1502755 +1694796 +1060610 +1785249 +175347 +2594313 +627836 +1833874 +1962119 +2181250 +451497 +1905319 +2089107 +1636799 +1780973 +198434 +2181189 +1567362 +969809 +715683 +65322 +2181221 +2012758 +2302137 +1094520 +1684079 +1105503 +627832 +724847 +336311 +2594202 +1875845 +1905337 +470143 +1567461 +627805 +1223016 +1833881 +1127209 +2181272 +2069799 +2685240 +1105514 +1636792 +1176339 +542292 +627811 +1330445 +744906 +724855 +2440630 +969824 +1356657 +1567464 +1942354 +210345 +1804532 +2626272 +1079588 +542192 +1663239 +1820429 +470134 +1694777 +1694783 +1804498 +1833886 +175339 +2181392 +969841 +2594213 +1502807 +1567431 +279948 +2181406 +2655375 +1432496 +744909 +1114024 +1395848 +1636788 +2594250 +1432446 +1734938 +1188548 +2302147 +1476452 +244131 +801861 +945760 +801875 +1392396 +1222977 +2594357 +94593 +1344518 +1705754 +885127 +1223018 +1694788 +1094519 +2181190 +2392763 +1068370 +1567370 +175361 +2181322 +542320 +1502780 +1188564 +2736784 +175309 +1188493 +400495 +2001143 +742295 +2302119 +198437 +2594194 +2440658 +2655385 +2711481 +1075475 +2711466 +2493485 +1476458 +760993 +94586 +1395844 +397420 +319675 +2748247 +1356653 +945763 +2493519 +1432425 +2181247 +210336 +1395843 +1056442 +1694787 +1330505 +2283885 +1567404 +1567413 +1502802 +1391276 +2392742 +470114 +627815 +1356669 +627848 +1694762 +175405 +542243 +1015036 +2723193 +2181387 +1276749 +924524 +1977302 +801883 +175375 +1139764 +2493469 +1663233 +1203818 +1720697 +2655333 +1962126 +1056443 +1049616 +542175 +2181124 +2302096 +175432 +2594274 +244133 +2655361 +94604 +1246160 +1139742 +1636804 +1068362 +2181090 +1139753 +732816 +1920165 +1255180 +2392746 +1276721 +904463 +1833899 +1875905 +760997 +1188503 +1962123 +2594265 +969792 +1015089 +1502786 +1068355 +175424 +2332215 +1905317 +2181358 +945772 +627855 +175334 +2594257 +627888 +969843 +1276742 +1476453 +1163432 +210332 +2089109 +1875847 +1255182 +1395839 +175401 +341468 +1567396 +924533 +470150 +279959 +1114023 +2594188 +65351 +2181335 +2655372 +411865 +542238 +2736786 +542216 +671480 +1694770 +885149 +2181237 +801867 +175382 +2181299 +222764 +1060606 +2535925 +2181230 +1015048 +2594342 +2594277 +1937949 +801841 +279951 +2018506 +1476473 +904454 +653544 +969786 +175359 +2594195 +1330502 +1920176 +724838 +801906 +694055 +2332245 +924468 +1905314 +1694800 +1330459 +65313 +1139747 +1677086 +451509 +244138 +627817 +2181194 +924530 +2392769 +94595 +1222956 +175410 +2493474 +1734958 +924511 +1295046 +1567367 +18561 +2655371 +2594246 +198419 +2283883 +1094528 +1694773 +2626263 +470101 +1432495 +2756332 +341469 +1094539 +2594338 +1139766 +1344517 +65349 +2594332 +1567467 +1875916 +1905339 +1875903 +175413 +1139751 +2736782 +2440648 +2515343 +2041286 +2105015 +2392718 +1567418 +1905338 +885164 +1068359 +1712984 +694065 +2332233 +1920156 +1246156 +1833867 +770301 +2181164 +1246157 +1105491 +1401614 +18562 +2685237 +2181114 +945773 +694074 +542316 +2332280 +1875842 +1060599 +1734939 +1203849 +411872 +1876033 +1223025 +969869 +1876010 +924557 +2842789 +969884 +801953 +2493543 +94685 +1255193 +801992 +2332345 +1567604 +1276818 +1636822 +1567650 +1567574 +694088 +1567579 +1255240 +1677130 +1223036 +2181589 +1567623 +542395 +222832 +1356700 +2181577 +2181509 +801916 +2756361 +1276802 +2181443 +2392786 +1875979 +1276819 +94683 +1502824 +300489 +802011 +1188579 +1255196 +2731843 +210347 +2842784 +1188580 +2655456 +2493533 +542339 +2655434 +801986 +18591 +1303903 +1876044 +1406044 +2392823 +2302160 +1276767 +1567531 +2594388 +1432505 +2332310 +2181527 +2756358 +2302170 +2181574 +1694804 +542374 +542376 +1735027 +2655393 +724874 +2655455 +1735032 +2181548 +1735015 +2392808 +653552 +2842779 +2655499 +924544 +175474 +1962131 +1920192 +1713013 +1276816 +65355 +1223038 +1875993 +2711506 +1734970 +367053 +542326 +1432504 +1223040 +542330 +1303899 +2181480 +2181505 +1876006 +2181512 +2089136 +1330553 +2181572 +198455 +2655466 +1734988 +1567629 +1383461 +2181576 +1023797 +1735055 +1223041 +2417913 +1833921 +1977313 +1567540 +94653 +1276775 +1356685 +2842771 +2181534 +924545 +385205 +1804538 +1876051 +18577 +1734976 +1735036 +2723219 +94634 +420043 +1276780 +2181428 +2740191 +2181477 +1734984 +802016 +1356701 +1677124 +1303901 +1223030 +2181581 +2361639 +801989 +2392804 +542334 +924549 +94632 +2302164 +1135153 +1734973 +724876 +18588 +801950 +1139772 +420054 +2655408 +1734979 +2655471 +253285 +2181438 +2332329 +1567544 +1876000 +1875997 +542389 +1875987 +2181575 +1734983 +367054 +1030274 +969899 +1720700 +1330530 +2417921 +1567565 +542347 +2756362 +94663 +300485 +2655436 +18603 +1567550 +1713007 +1276768 +1567581 +2655495 +969902 +2711518 +2332342 +2181565 +2181471 +627912 +1567562 +1295047 +724877 +336322 +1663244 +885216 +1255227 +1876019 +694093 +1920196 +801955 +2181421 +2181413 +1188578 +1876032 +1255233 +1677145 +2181673 +2594432 +1330577 +2493580 +1920250 +2392856 +1735088 +542406 +2594439 +802031 +969909 +1920230 +2006087 +300501 +1920280 +1713021 +2181700 +2181681 +2723226 +2655666 +1735090 +2493589 +1223074 +2655597 +761049 +1920299 +2655544 +2493614 +542421 +2181698 +2655571 +2655668 +694099 +2655653 +1735062 +1920303 +1920238 +2181669 +2655566 +2655537 +2181667 +1920309 +694102 +2655585 +761038 +1694810 +1735075 +724885 +2392847 +1920229 +2493642 +1432534 +1735074 +2493643 +2332363 +924614 +222844 +904476 +542416 +2181683 +1735086 +1920314 +2041318 +2655591 +924613 +2655579 +2181685 +2493627 +924583 +2655627 +1920252 +2392842 +1114054 +969920 +2041320 +198464 +1068379 +1356716 +2655600 +2594434 +924610 +802040 +2736799 +802033 +2089147 +1567684 +1151549 +1567680 +1735085 +2655656 +2594435 +1713017 +2493592 +2024063 +2655525 +2655589 +1114053 +802023 +1876106 +2089148 +2655574 +2655569 +924589 +1432528 +1757761 +1502861 +542405 +1920233 +1068381 +18624 +924601 +2302178 +2181705 +1876104 +802028 +1663251 +1920278 +2594431 +2655539 +1356707 +1432532 +2493644 +2181628 +2417923 +2655533 +1833949 +1735082 +2594427 +1567664 +969910 +2594443 +222862 +1114057 +18619 +1804551 +379812 +2594530 +1735165 +542481 +2594545 +1804645 +2655732 +2089188 +761063 +1023800 +2655780 +2440673 +1567708 +1876169 +802047 +1876159 +2493656 +1567776 +1735131 +2302195 +2807512 +2594546 +1114063 +1876120 +2276063 +924645 +1735157 +344677 +2041328 +1707138 +18631 +2332381 +2041331 +1086614 +175496 +1567701 +2392890 +2655693 +1804636 +1735175 +2655725 +1833955 +2332393 +2655765 +324154 +2018520 +694119 +1876122 +2594525 +969947 +1485237 +2655695 +969937 +1990109 +1223102 +2711523 +1735128 +94725 +94737 +1820432 +1432545 +2493688 +724897 +742308 +2655739 +65373 +1833958 +802071 +1876164 +2181740 +1567752 +2594502 +1015103 +1330585 +1735150 +542437 +1920387 +802084 +2493659 +542427 +2069808 +18632 +1804616 +451518 +2655745 +2535964 +2069802 +2440678 +1051042 +1330584 +904484 +1876189 +1694844 +367077 +1876210 +2655713 +969980 +2392888 +904479 +1735130 +1060635 +742307 +924625 +1502904 +2181798 +2711526 +2181711 +1920325 +653563 +1402515 +2594550 +2089208 +367071 +2006088 +1735169 +222878 +627931 +2008630 +2361656 +279975 +885233 +2181747 +2655752 +385226 +18653 +1876157 +324157 +969995 +761071 +1644860 +2089162 +2392866 +2089154 +1068390 +802073 +542449 +1876174 +2493667 +2807527 +2655712 +2069810 +969971 +2181732 +2417929 +1735126 +2181794 +1114061 +1977328 +2807530 +1757775 +1804632 +65377 +2655688 +1735120 +2517589 +411876 +1735161 +1476494 +1920363 +750079 +738878 +1330591 +1567732 +1636828 +1567791 +1920356 +1188587 +1876127 +1735143 +542495 +1820436 +542451 +969999 +542429 +2089196 +2332394 +885219 +2655763 +1502878 +1876200 +1567724 +2807519 +627934 +2041330 +451521 +2089218 +1223090 +94720 +969997 +2493673 +1432558 +175486 +94703 +885238 +627935 +1876203 +1735192 +1804680 +1636836 +1996676 +65387 +1567894 +970056 +2181915 +2302208 +2392929 +1312965 +2594579 +1567892 +1567804 +2332411 +2392903 +2302222 +1948512 +2181962 +2723228 +2392933 +1015128 +2493779 +2332404 +802163 +2392941 +2655919 +1432572 +724938 +2392895 +1804656 +2332436 +1276886 +2594572 +970088 +627956 +2655940 +2181866 +802147 +970087 +802155 +542517 +542563 +1694895 +1432569 +1942364 +1920462 +970086 +2072049 +885290 +279980 +1713045 +802138 +1094591 +885300 +2181959 +627955 +438349 +885278 +1567813 +653567 +1920397 +2594609 +885273 +2756388 +970089 +2181964 +2302218 +802117 +2655909 +1432567 +2181815 +2594630 +2302221 +1432586 +802092 +1567851 +1694921 +2001155 +1030314 +2594560 +1567829 +2392932 +2655904 +2392926 +1990120 +2655800 +2181855 +2493726 +1977332 +885282 +1079640 +1876236 +2756395 +2493723 +1383465 +2535973 +802177 +2181884 +802132 +2655900 +802097 +2181966 +1804681 +2655888 +1735209 +2493733 +2181844 +2655902 +2392899 +627953 +724942 +1079635 +2392953 +924657 +1330596 +2181823 +2041338 +2594574 +1432564 +2655943 +198471 +1567866 +2655924 +970055 +1223125 +1223118 +885255 +2655858 +1223137 +2756387 +885261 +1694883 +750086 +2332407 +1962150 +1079628 +802145 +802123 +2332408 +1567823 +2008635 +924661 +1694881 +2682558 +2181973 +1432560 +2302204 +2655901 +2392917 +1567867 +2515365 +1356732 +1432561 +2700447 +2655923 +1567842 +1567902 +2493736 +1804661 +1636841 +1476498 +2493747 +1833982 +885279 +2655917 +1694894 +2594635 +627963 +2594623 +2302213 +2517592 +802125 +2655912 +694150 +1476505 +480986 +1330599 +2736800 +542503 +2041334 +1804654 +2181917 +761088 +2655939 +2655844 +2594603 +1735186 +1876224 +2493754 +1636835 +2332444 +2302205 +694129 +2181883 +2594592 +724935 +2024065 +885296 +1502940 +2181978 +802122 +2392947 +2756407 +627960 +2181834 +1223134 +2594613 +802151 +802118 +2655817 +802174 +2655833 +761081 +1735207 +2041337 +2655849 +2756408 +1977350 +1079612 +2181851 +2181903 +542510 +2181937 +627965 +1757810 +1163459 +175545 +2655974 +542578 +2392963 +1804729 +2302225 +222909 +2024075 +1402516 +2859418 +542594 +802194 +1804691 +1735217 +2656023 +1330615 +286229 +542582 +1804687 +94770 +1330616 +1255317 +970104 +18675 +1694953 +1303913 +653575 +65389 +94764 +1684095 +1920500 +1920467 +2656037 +1735215 +1757812 +2594660 +2181984 +1648551 +2332482 +1636847 +1356762 +2332514 +1977351 +2859409 +970102 +1876259 +1694946 +1920501 +2332496 +2594650 +2723241 +2182030 +1876272 +1920482 +724954 +2493791 +1356759 +885309 +1876256 +2655991 +1920475 +2302231 +2182033 +1804704 +1330619 +2041352 +2656020 +2332519 +1068407 +1567936 +1114085 +1255320 +2332493 +1567954 +244173 +222905 +1876263 +2493811 +1920543 +1876288 +1223146 +1223157 +222902 +1567920 +1188611 +542580 +2493782 +1356761 +2493813 +1876268 +2656034 +253333 +802191 +2181989 +2493795 +1276917 +2748254 +1094592 +1876271 +1920480 +2182003 +2332481 +1255319 +2182026 +324162 +198474 +94754 +94765 +1223145 +1567958 +1255277 +175560 +1920568 +2182138 +324166 +1833998 +732825 +1833995 +379825 +175573 +493763 +420074 +379838 +1876317 +319728 +2393006 +1876330 +1432611 +2535982 +198495 +2731862 +1432596 +2535983 +724962 +2006100 +1735226 +1636864 +253342 +1246183 +724960 +295798 +1713048 +175572 +671502 +1476510 +1094598 +1735219 +1276928 +970124 +94816 +724972 +671499 +1223174 +2182073 +694176 +715706 +1094601 +1876377 +355594 +1223169 +2656051 +2440692 +542602 +300520 +18682 +1056456 +1015160 +1920585 +2656089 +175561 +367102 +1330649 +1567968 +2656090 +2302242 +1330646 +2353458 +319707 +1378506 +1876328 +1876343 +175583 +2302244 +379826 +1567979 +1876297 +94781 +2756430 +2731855 +2302246 +542613 +970125 +1223207 +379816 +367089 +94789 +1804742 +222927 +279999 +542662 +392328 +1568015 +2656056 +653581 +1388725 +742318 +1295064 +2182121 +280001 +2656078 +738883 +367104 +694177 +2656060 +2493824 +1432608 +542605 +542646 +1188619 +1223188 +451538 +65398 +627998 +694182 +1817941 +2417946 +2393003 +744919 +1977356 +2182115 +1833997 +1255327 +2182127 +1330626 +1015155 +904496 +1094604 +1567989 +2361684 +1962170 +715709 +210356 +319727 +279992 +744916 +1015151 +970139 +1567990 +367096 +367088 +1223176 +1735225 +1876335 +1636869 +1246191 +367087 +1990128 +1068414 +724973 +1977363 +2656067 +2332530 +286231 +1356769 +392329 +244175 +1356770 +1977360 +2392985 +627980 +1876342 +324164 +1636873 +724961 +1223166 +280002 +1990127 +2302236 +1371850 +1042552 +470203 +2535981 +1568008 +244178 +411883 +2535984 +94787 +1223201 +1804748 +1977362 +802214 +1246182 +742324 +2182069 +198491 +1255328 +1402523 +1223186 +1094613 +885318 +1330628 +2656065 +244186 +2392971 +1977355 +198497 +802227 +2493834 +18688 +742319 +2182092 +1502953 +2182130 +1876358 +627992 +1876341 +970116 +175600 +2392992 +2182076 +628046 +885353 +1042554 +2182261 +1962176 +671505 +1356782 +94821 +1920603 +628026 +1905366 +542687 +2041379 +2182238 +802268 +885371 +1276971 +1330653 +1476524 +1383483 +2041359 +1977369 +1015196 +628060 +885361 +1042557 +480994 +802251 +885369 +1568034 +1876413 +94819 +1276956 +1568058 +1735274 +175647 +2332541 +1977381 +2182159 +2493847 +2711558 +2393021 +325882 +2182198 +802275 +65411 +1330668 +2711561 +1951585 +2182235 +1068419 +1990155 +2041371 +802280 +2024081 +1920593 +2656099 +542694 +2268602 +628059 +1713052 +2182245 +628023 +175606 +2089243 +1905368 +2656149 +2182160 +253356 +1068422 +1990151 +2041375 +280012 +542738 +1114117 +2069817 +671517 +802243 +2006111 +1735262 +1977372 +671523 +2656109 +2182257 +885366 +802284 +1568060 +480995 +1356790 +1636902 +2041387 +653607 +253355 +885359 +2182154 +94822 +1223240 +1276966 +2182183 +175650 +542733 +945788 +2268603 +802244 +1990143 +2182207 +2006101 +385240 +653612 +1356789 +542714 +1432636 +628029 +175613 +1330665 +175652 +671511 +885367 +325884 +1330661 +2493849 +1030331 +1694965 +18696 +18698 +392332 +542681 +694203 +2001160 +175645 +628019 +1356786 +1636893 +970153 +671522 +2493839 +1990149 +2302248 +1735242 +1388730 +802259 +1114111 +1476523 +1399941 +1476525 +1636896 +2182185 +885347 +628038 +1834007 +761104 +1920605 +1677183 +542695 +1295074 +1276962 +1295075 +280015 +628036 +970185 +1367303 +2182277 +715726 +653636 +671554 +970192 +542762 +885424 +802337 +94852 +802326 +2393049 +222936 +175672 +1502980 +2041401 +1977390 +1713055 +1735309 +2493861 +732861 +694228 +1636911 +802359 +2656172 +1521956 +628142 +1276983 +715731 +802299 +325886 +2089258 +1995144 +1977386 +65420 +1735310 +885453 +470214 +1223270 +1223265 +175665 +628114 +745400 +1568109 +2182308 +724990 +671540 +1920622 +970194 +1920625 +300535 +2493859 +1367301 +1735294 +1876422 +802344 +2719487 +653632 +732847 +628115 +2182297 +885404 +2493864 +885419 +924717 +1920633 +2041402 +694210 +1977392 +885418 +542831 +2859429 +1130379 +802370 +802322 +694225 +885449 +1942374 +2182304 +319739 +2594690 +924712 +2182300 +1720708 +1330677 +2656177 +745399 +1203861 +628071 +628069 +1804762 +2182279 +2736811 +542819 +802286 +1295078 +885413 +2393057 +1344536 +1114122 +1920615 +1432669 +1114127 +802295 +94862 +1151565 +885452 +2393071 +628111 +2001162 +1356810 +1568107 +628094 +628133 +1502979 +628088 +1568136 +885441 +1276988 +671555 +1568129 +1568115 +1371858 +732866 +1105537 +1568166 +885442 +694224 +1367299 +1105536 +2756442 +802343 +1188648 +1030347 +1015205 +1568128 +671547 +94856 +1735286 +802314 +2393066 +653625 +671553 +2682568 +628082 +542804 +2182263 +802296 +945796 +1432657 +885432 +1105538 +1568132 +885472 +2041423 +360919 +65442 +244205 +542839 +65438 +628156 +770313 +885457 +2065266 +1052016 +770318 +1502988 +1568174 +392337 +770322 +761110 +210368 +1502992 +1636936 +1502990 +628160 +175702 +1502994 +65424 +65426 +175708 +732876 +2041406 +222937 +198503 +715738 +18713 +295806 +198502 +1636946 +1636941 +2065263 +65449 +2065275 +1130380 +1085331 +1295089 +2493868 +2842910 +2594742 +1030360 +732879 +319755 +1015237 +885475 +1648564 +1657045 +1568184 +1255349 +244214 +2018542 +885482 +1030356 +653640 +1568225 +2692365 +628175 +1476543 +885505 +286243 +2332560 +2842823 +1876460 +210392 +2748261 +295821 +885496 +885497 +1030365 +175759 +1694971 +628206 +286236 +885506 +885525 +1203870 +1255350 +2656190 +1015234 +2842834 +2842815 +2656188 +1568235 +2594737 +802419 +970221 +175716 +2493873 +1568208 +18721 +694234 +671557 +802390 +2731875 +2594719 +2393087 +65516 +2182312 +2361693 +1977394 +1094636 +802387 +628227 +628217 +2842922 +1990167 +1344544 +1657050 +2692373 +628223 +2842879 +1114136 +2332559 +94883 +1030364 +2594715 +1636964 +2656192 +2807550 +2756459 +2594712 +2842840 +885511 +295814 +65521 +945809 +1636959 +2692360 +1735330 +175753 +2692362 +1042573 +1568234 +2842850 +2182325 +802408 +2842888 +1223285 +802418 +175751 +628177 +65518 +2842855 +885490 +1432676 +1735344 +1568214 +2594739 +1648562 +1990165 +286241 +1713059 +2065279 +802383 +1735321 +2842891 +175737 +1264081 +1295099 +280032 +2842892 +970228 +1030385 +2656244 +1476554 +970286 +2493881 +1503027 +1568257 +1568279 +175814 +1735399 +924758 +2807579 +210401 +94943 +1735387 +1637006 +175791 +628241 +65552 +1203875 +1735432 +175809 +1114176 +1920719 +1920637 +628250 +1432755 +2182417 +2870215 +2748262 +1042581 +1114152 +1735397 +628281 +802579 +2870228 +2182439 +1920712 +542963 +1735413 +1568281 +2493877 +1503014 +1330717 +1568357 +349215 +2332570 +1694992 +94909 +1568284 +1169663 +1920700 +175799 +2006117 +2594815 +2493914 +1127270 +295829 +1663269 +1127280 +2417977 +1432693 +1030377 +2870211 +885541 +2711569 +802575 +2182421 +885546 +2182533 +1406057 +1996678 +1876468 +2594766 +2332565 +542902 +2711571 +1068442 +2656263 +745403 +1127279 +2182539 +1568361 +1568348 +2276088 +2041447 +1568336 +493785 +2276081 +1713071 +1432728 +1521974 +2182422 +1735361 +2182532 +802435 +2756476 +2393102 +1876486 +1920711 +1920684 +1432769 +1303953 +1432749 +1657053 +2332572 +2685249 +94948 +1485243 +2656215 +1330697 +1834044 +1735411 +198513 +1755454 +451555 +1127269 +1568294 +970234 +1694983 +2656262 +94897 +2332602 +1568388 +1568332 +295827 +1042584 +1876462 +2182376 +2182402 +2182453 +1876496 +1755449 +175826 +802465 +94926 +2711570 +885566 +253367 +175794 +885538 +2182397 +198522 +924750 +1720714 +1568309 +1735416 +1657056 +1503041 +2182504 +770330 +1127283 +1568368 +1330739 +175793 +802534 +2870224 +2182491 +802492 +1684102 +1707144 +802538 +2656240 +1330714 +355618 +1476558 +341487 +2182434 +2089267 +1937965 +222951 +970254 +2740208 +1094654 +2182372 +1330704 +1735381 +802531 +1312984 +300557 +2089307 +2182427 +945818 +198510 +1127281 +1695005 +802497 +175783 +1223314 +2859432 +2594823 +1568308 +1127268 +1817949 +2182456 +1330731 +1876518 +1503026 +1277020 +2182389 +1876509 +2089282 +1330745 +1127273 +319770 +286250 +970250 +1356827 +732883 +244222 +2417969 +2682570 +1568310 +1568323 +2756471 +2182344 +2182493 +628269 +2393113 +2182496 +1657058 +2089265 +2182474 +542929 +2656231 +1255355 +1030379 +344695 +198511 +392339 +1330732 +1255354 +1695024 +325890 +2182381 +1735357 +542964 +1705778 +2278589 +1937971 +945820 +802524 +94942 +1127282 +2594758 +175829 +2493907 +1277009 +2182465 +1720715 +1568352 +1568303 +2807583 +2332576 +970274 +924757 +2493887 +2417979 +2748263 +1568307 +628277 +2594805 +94906 +2493898 +1834042 +2182501 +1114151 +344687 +1920672 +1503036 +1295111 +1677190 +1432730 +1876517 +2656210 +2493932 +2870220 +253375 +2493890 +2361698 +970292 +1804766 +1432717 +1223327 +542884 +2041445 +2089268 +945821 +542971 +493793 +1834065 +1767505 +1223373 +1637019 +95007 +470226 +1735454 +1330771 +542984 +1637013 +1255361 +1114200 +924783 +94991 +336363 +2493946 +802603 +1223401 +1735470 +1735451 +94998 +1920730 +2182591 +367133 +970313 +1876554 +286255 +1151570 +1223357 +1663276 +2332613 +1876589 +244224 +1188684 +1223407 +1735481 +1223402 +1330765 +802599 +1042585 +1713075 +1804787 +1568418 +2756480 +542986 +628290 +1937973 +802583 +1735468 +94995 +1330769 +2700478 +742341 +2493935 +1356840 +1094678 +451563 +653656 +2493970 +1568440 +175860 +1051048 +2182578 +2440704 +1876591 +18754 +1068456 +2756489 +2182588 +1068446 +1223371 +1094667 +1223390 +1735462 +2493941 +1094666 +1295115 +1568421 +300564 +1094658 +1876576 +1568444 +1735465 +924784 +1330758 +2089309 +970335 +18757 +2182575 +2756481 +1568405 +1223340 +1060649 +1223351 +1735467 +1876597 +2594829 +2069826 +1568442 +542972 +1876581 +1834057 +1677201 +286256 +694262 +1151571 +1151587 +2018545 +2700474 +1223367 +1876611 +1188676 +1068444 +1962208 +2493949 +1568432 +2332611 +244235 +94971 +2493980 +367129 +367135 +1735450 +2493973 +1663275 +751052 +1223342 +1920729 +1876556 +367140 +1677197 +924786 +367141 +2069828 +2024091 +1094675 +18779 +1485249 +1568471 +1920787 +295834 +2494037 +2494042 +1127291 +1568525 +18806 +802674 +1432824 +175960 +2494059 +802760 +970386 +344704 +2494060 +628314 +924817 +2656308 +1695107 +244257 +802678 +2332618 +2440708 +761141 +802671 +222989 +694283 +1030416 +970392 +1804804 +1695087 +945841 +175928 +1568455 +1695090 +300567 +715750 +1876616 +1920766 +1432813 +908872 +694284 +253408 +802659 +2182724 +1834078 +802641 +280082 +2302273 +885642 +244251 +175892 +2594873 +379857 +1804816 +2182608 +65596 +1920763 +253405 +1203887 +2393143 +2393131 +2393191 +1015318 +2656324 +2859437 +2332657 +18788 +2182875 +2494033 +2182751 +543021 +1376103 +1920796 +770331 +280071 +1876632 +2332666 +543061 +1127293 +2393132 +2494046 +2182732 +2182864 +1657073 +628295 +2182635 +2656314 +1735518 +175890 +694289 +1937996 +1876682 +1015289 +210419 +2393212 +175894 +1876619 +286257 +802715 +2494043 +1920747 +210420 +1085336 +1568535 +1695100 +1637052 +2594910 +1920790 +300576 +2393206 +1330810 +761145 +2182728 +222992 +1330800 +1695096 +2494056 +1705780 +2182749 +1246220 +2182721 +18780 +2859483 +1920754 +970447 +1695116 +1015331 +885619 +280090 +543069 +2182804 +543047 +802670 +2302270 +1015290 +2182730 +802761 +2182600 +1223424 +802698 +1409940 +2302269 +1114209 +1015301 +1637033 +2361710 +95018 +319779 +1015330 +2656370 +2182781 +1568451 +1920758 +2859439 +1042588 +1094691 +1990175 +2494080 +1684106 +2182744 +1203882 +1568588 +1637025 +2859487 +2182788 +1876648 +904507 +1015286 +2182863 +18822 +2594847 +885626 +210411 +2182663 +2594836 +2069832 +1920799 +1030408 +2182643 +2536015 +1277055 +1876639 +65591 +802782 +2393133 +2859492 +367148 +2182671 +543012 +2182819 +1203881 +1330783 +715753 +2393176 +802707 +1876691 +1735524 +2494044 +2393153 +2332641 +1876702 +280076 +1114212 +628309 +244249 +2494021 +885612 +493795 +2418004 +885608 +175944 +1937988 +1015306 +2656293 +1356850 +1876617 +1695072 +1707146 +1568603 +2494074 +2859488 +1079668 +2182828 +2859456 +1568454 +2656330 +18776 +95044 +761135 +18795 +65658 +295836 +1568513 +1130396 +1695054 +970372 +924816 +802697 +1834087 +1223411 +2182636 +802645 +1042586 +1962215 +885581 +1344568 +1962224 +417775 +95072 +1568520 +210409 +1015305 +65588 +1277062 +1876631 +885648 +2393168 +2393183 +2332665 +970453 +1695109 +2705547 +481019 +95019 +1056466 +802764 +1920757 +802720 +1695121 +2182734 +1409939 +2393203 +1568564 +924822 +1735554 +1876692 +1030409 +65620 +1637062 +1030410 +885632 +2656385 +2393175 +1356860 +1188688 +802780 +1637050 +1735491 +802748 +802744 +2302263 +1942383 +2682580 +2332631 +1637022 +2418003 +1695057 +1876686 +1920783 +970382 +1521976 +198535 +885604 +1695055 +2494085 +2536022 +2594931 +1015307 +543046 +280057 +1568581 +1568607 +1094696 +694281 +2182795 +2182859 +1876703 +385254 +1938008 +2182814 +210413 +1876708 +2182681 +1695056 +1695049 +1015292 +2494047 +1015300 +1876626 +175961 +319784 +732896 +628336 +1367319 +2024093 +1330803 +1695112 +1130387 +2332645 +2656307 +2626284 +1637027 +95020 +543060 +2182638 +1330784 +1068462 +244253 +924804 +970403 +1937981 +2182678 +543023 +2182793 +1735503 +1094689 +1735484 +1015321 +2493983 +481017 +253389 +1015294 +1568492 +2182868 +1568596 +65594 +945831 +2182917 +355638 +1735562 +2393236 +1713081 +95091 +2494111 +1920887 +198543 +802820 +2182915 +2807629 +2182879 +1695132 +970491 +451586 +1114231 +18836 +2807613 +1094702 +2182942 +2594953 +2756501 +1876750 +2182939 +2594956 +1920868 +1876729 +1834113 +2594950 +2393234 +95088 +1568622 +1568645 +1568681 +2807611 +1094705 +1977423 +430163 +385257 +1188702 +95115 +1432844 +1920872 +2182891 +1172688 +198544 +1735560 +95084 +1568628 +367157 +2536028 +738891 +286267 +1172692 +2182927 +2069839 +945844 +2807605 +2656392 +1735567 +924850 +694293 +451583 +344709 +2656406 +1876764 +2807632 +802822 +543081 +1834109 +2418008 +95080 +1568655 +2494128 +2807661 +300583 +1804826 +1432842 +1568676 +802798 +2494113 +1920864 +2807600 +430159 +198546 +2594948 +2182897 +1172679 +451585 +2332708 +970483 +1094709 +2807593 +2807614 +1568627 +1834127 +924854 +2332715 +2656398 +95106 +1568669 +924837 +2182893 +1094715 +970456 +2656412 +2723284 +761150 +1920848 +2182933 +1503071 +924848 +1568636 +95107 +1677210 +543074 +1920854 +2332705 +175966 +18835 +1834111 +2182955 +1962228 +502869 +18853 +1127354 +425099 +280275 +502803 +361004 +438444 +2494137 +176135 +1568731 +970499 +253420 +295859 +1378514 +65677 +65822 +424987 +2393293 +2656483 +1637128 +2656471 +1962232 +319957 +502742 +502846 +425011 +425311 +1735655 +470318 +223042 +408056 +319885 +470421 +1637138 +176184 +438409 +300598 +1735587 +1677248 +295843 +425253 +355669 +319827 +253495 +1735644 +379863 +494008 +176160 +2756526 +1568697 +1990177 +425196 +1402546 +18857 +176096 +425329 +1388746 +451643 +2756542 +470312 +319854 +2656504 +280478 +176172 +1735667 +493809 +176089 +1127307 +280424 +493812 +176026 +502670 +319991 +176350 +319940 +379876 +2756555 +502743 +420203 +502637 +280260 +1938009 +1388769 +319859 +1568711 +502626 +1677237 +400517 +493981 +2756585 +502700 +2748276 +470301 +2656425 +502797 +176243 +2393257 +65730 +176314 +502603 +425003 +1015350 +493827 +425309 +2689556 +1075550 +360923 +280470 +2183020 +481078 +502571 +65796 +176309 +2393289 +176207 +438431 +2494223 +2756539 +493953 +425132 +420144 +244281 +319817 +481067 +2656527 +420105 +280178 +280226 +2656436 +502802 +223026 +1637099 +223023 +385259 +361036 +280231 +425172 +360952 +253488 +470393 +481036 +425145 +420107 +1637093 +1476583 +2494150 +493870 +470350 +420308 +2656514 +176122 +253460 +502772 +1246226 +1938024 +2494151 +493801 +280302 +2756506 +438390 +502696 +280162 +1637110 +2309995 +425063 +470383 +1876796 +1068480 +481081 +1663288 +253413 +420164 +425328 +2494143 +280096 +244282 +1755503 +2494180 +481091 +502799 +502889 +65682 +65666 +2515400 +360936 +425152 +1637123 +425289 +481082 +438405 +1920914 +280232 +2494135 +425255 +319871 +1920903 +65774 +223052 +280311 +176051 +425349 +360954 +319933 +253500 +1163480 +451638 +425023 +425085 +493822 +425019 +1755516 +502821 +320022 +425377 +502879 +502756 +360934 +2594992 +885681 +2494177 +2065290 +1378517 +502778 +2656475 +417786 +420278 +176132 +493876 +420296 +1637127 +1735647 +319910 +319883 +438419 +253498 +2494176 +1390635 +2182994 +420249 +176126 +176212 +280278 +223038 +95153 +1432848 +2494217 +2682593 +1388737 +502753 +2006132 +470440 +502677 +470338 +1876795 +493856 +2440722 +493879 +1052023 +425333 +425286 +420093 +2723291 +470298 +425327 +2656468 +502788 +175973 +502904 +280386 +176216 +2656534 +924863 +451608 +493975 +420092 +295890 +1088144 +2656515 +1068487 +2393303 +2656519 +2594993 +1735616 +1735645 +451683 +280319 +502741 +1637088 +360993 +176034 +1677218 +2183017 +223062 +253483 +470410 +1713093 +425225 +1920921 +2494221 +420201 +1060655 +392354 +253451 +360955 +328284 +210455 +280387 +2756608 +176230 +1677217 +425162 +2494207 +1637144 +451639 +1637131 +470268 +502842 +420273 +280335 +493921 +451701 +1735585 +425040 +361013 +2656441 +425064 +420157 +481056 +470390 +1388736 +451661 +280207 +2756594 +493970 +2595005 +502838 +280495 +65817 +885686 +2182974 +280330 +470304 +424999 +2494208 +295865 +1663287 +295844 +320012 +2594977 +176297 +2182992 +176035 +176209 +502691 +1637166 +2685261 +2182995 +2656446 +425224 +2006136 +502608 +2302290 +2182986 +1920928 +2182982 +2006134 +2268657 +417788 +65831 +65793 +1060657 +420246 +502862 +417801 +223025 +1942386 +2065289 +502911 +295908 +2595010 +2183007 +1568726 +176117 +1264091 +502701 +244349 +1390611 +502746 +65851 +1163484 +425272 +417799 +210441 +425024 +1390640 +253471 +176346 +176258 +470360 +2494232 +502819 +295903 +361002 +885669 +425231 +176180 +2183024 +176328 +175998 +425088 +2494131 +1735646 +392375 +420261 +2656440 +438399 +253490 +425078 +280345 +223054 +1388750 +425389 +65669 +502690 +502832 +1127369 +420128 +425378 +295904 +176125 +176337 +425044 +494025 +2682599 +280427 +176280 +420149 +493881 +502728 +470337 +451674 +65731 +1755508 +280135 +1804853 +295863 +1371879 +2494156 +425087 +493802 +1735651 +493887 +1637106 +502774 +420179 +65756 +244351 +420216 +280493 +1568701 +295856 +65687 +2756611 +451632 +253486 +1378522 +379869 +420173 +2594989 +493813 +2515404 +493899 +502565 +1051051 +1804850 +493826 +280160 +65837 +1127350 +244284 +417805 +2302305 +176003 +360974 +2656453 +420228 +425326 +355659 +2393259 +1720720 +320009 +244269 +502725 +280465 +280190 +425304 +425170 +425341 +360948 +198569 +470381 +420208 +244276 +280476 +280354 +2700492 +1330819 +300595 +425155 +1637089 +198560 +1876811 +502893 +361042 +1938023 +2393250 +493943 +176275 +425115 +425365 +280220 +1876786 +2656488 +425402 +1568712 +1920922 +1876782 +360996 +176183 +2723287 +198571 +2711572 +1637140 +176190 +502606 +361018 +176105 +2689560 +502653 +1804849 +360995 +1075546 +451685 +493940 +2494204 +2494226 +425371 +2656536 +425022 +1075533 +1876804 +1876802 +493815 +280421 +2494227 +493945 +397455 +280472 +176313 +1654171 +502767 +502885 +438391 +65836 +319832 +1295136 +1637165 +320023 +2756520 +420304 +198578 +2393263 +1876781 +2302291 +425345 +280279 +319941 +438376 +502663 +425184 +2656646 +2536057 +1695157 +176449 +1356898 +2183071 +2494294 +802898 +1105573 +802881 +802853 +2393319 +1406070 +1767514 +1203901 +1637186 +210508 +802875 +628347 +2393317 +1432867 +2595139 +1356873 +2302319 +1163489 +2393377 +1568826 +2183085 +1648582 +1677290 +2682620 +945855 +1920943 +802872 +1388785 +1030450 +2494268 +2024100 +65863 +176461 +2183086 +1079697 +1015395 +628356 +1395873 +2332749 +653677 +1114278 +2682614 +2494307 +2418027 +2332769 +2723298 +2494263 +2302316 +1695158 +1503107 +1735741 +95175 +1695159 +2656648 +1834178 +2332760 +1015399 +1876885 +1015388 +2595082 +1637172 +1503086 +2418014 +970506 +1834180 +2656683 +1223462 +1568777 +320040 +1330854 +1476596 +694314 +2332742 +1876888 +628397 +2595080 +2183056 +885713 +2748277 +2069843 +970558 +320033 +653670 +2595138 +176471 +1834186 +1637175 +2656669 +1356884 +802873 +802890 +1637192 +1330826 +2595145 +2656583 +2656580 +1094731 +2393371 +628398 +176452 +2393363 +1568759 +1905392 +2418023 +95198 +95191 +2001173 +543137 +543141 +1568805 +1568852 +885727 +2656665 +1695172 +1785267 +2183137 +1105569 +2361730 +2517596 +2041495 +2595060 +1735743 +628406 +2006139 +628365 +694299 +924873 +1568849 +176433 +1130417 +2756625 +176443 +1663293 +1735738 +1735692 +1962247 +1223463 +176395 +1755521 +2595072 +1568753 +1942389 +970523 +653671 +2183141 +1277105 +1735750 +1330881 +2183054 +176391 +1503109 +1330863 +1130413 +1834152 +2183032 +1371886 +653668 +2183057 +1015389 +1330850 +2595124 +1330829 +1705792 +65875 +885699 +1876818 +1303984 +1015363 +2595105 +1568810 +628353 +924874 +1015396 +885714 +1330840 +802866 +2183118 +1330858 +1277100 +1295149 +2515405 +176430 +1105574 +176460 +1223449 +1920945 +2595133 +1735701 +1568847 +176434 +2183124 +1568797 +1127380 +1114287 +1834166 +2332731 +2656575 +1637195 +945852 +2183101 +1330836 +2393366 +320032 +253531 +694324 +1356899 +694309 +1757835 +1735739 +885703 +802903 +2656673 +1876895 +1876887 +1406071 +2089359 +1330894 +543129 +694310 +543142 +2656572 +2656609 +2494273 +970512 +802841 +1303969 +223070 +2682617 +1677284 +280517 +2393314 +1330900 +1568785 +2332733 +1735708 +2656595 +2332738 +2393318 +1330897 +2656671 +1781021 +1046806 +1246231 +2393380 +924865 +1114296 +2183126 +2332756 +1356887 +1735700 +1503090 +1015411 +1568782 +802878 +1568756 +2183035 +1942392 +2595071 +1705788 +1135156 +2656678 +280525 +2494278 +1834161 +885723 +65879 +1834154 +1568811 +1223452 +1277083 +1977426 +694358 +2595155 +2041499 +2418084 +2595246 +2332957 +2494353 +2089409 +2656779 +1476608 +802990 +2183445 +761159 +885770 +1568930 +1330953 +1163521 +2332845 +1432957 +1277110 +18881 +2183405 +2041512 +885765 +1876984 +1015438 +379885 +176504 +1569048 +2656800 +2595223 +2656810 +2756649 +694345 +2595237 +2089412 +628428 +2332849 +65911 +1657082 +1015441 +2069853 +970691 +2656789 +1569040 +2332875 +2183342 +970697 +2656790 +2748283 +2332936 +176507 +2183376 +2656813 +543169 +1163502 +223072 +2332922 +2418047 +2656819 +2089393 +1015446 +1046823 +2393411 +2332893 +2183451 +543186 +1432901 +451719 +694367 +1876925 +2536073 +1503127 +2595209 +1015437 +2183420 +1277112 +1330947 +725014 +1105576 +1432974 +1568933 +1046821 +2756645 +2183258 +2332937 +95228 +336376 +1568962 +95246 +2183199 +2332963 +1876954 +95208 +2183166 +802965 +1921014 +2332876 +2393461 +1277106 +1356901 +970652 +1304005 +543182 +1568949 +1568941 +95237 +1046822 +2494318 +18893 +653695 +2183198 +1568885 +904530 +336375 +2656839 +1920985 +543197 +970604 +1094743 +2332862 +1569029 +2183375 +2656820 +1432910 +1569000 +1568940 +2332794 +2494378 +1568901 +2393438 +2536077 +2332929 +176488 +2595226 +18891 +2332871 +2393420 +1695203 +1568887 +2756655 +451735 +1876966 +1432938 +1163528 +2723303 +1330932 +1568864 +1432955 +802922 +802933 +885773 +694342 +176525 +1876982 +2283902 +543231 +802991 +802909 +802912 +2183178 +18920 +1637217 +1569032 +2183230 +2183204 +1804887 +320044 +2183186 +2656825 +1735765 +2332887 +2393439 +1304002 +2332935 +628408 +885771 +1876964 +176483 +1921019 +176526 +2393421 +1094738 +1568981 +2183238 +2183406 +1695198 +543191 +1568892 +2089384 +628439 +2332827 +1695186 +543225 +1920984 +802938 +1568944 +2183343 +1046829 +543192 +18908 +1114308 +2656753 +1921006 +2183219 +1015421 +1485282 +95230 +2332918 +1432887 +18901 +761156 +970613 +970698 +1432889 +95267 +2183291 +2656756 +1277113 +2656714 +2332964 +2183266 +2332912 +2393408 +2069846 +2183280 +1521984 +1188743 +1114306 +176495 +2041502 +2656697 +1015440 +1804892 +1255375 +2656776 +1188738 +2595190 +970693 +1163496 +802924 +970694 +1920983 +1568884 +2595185 +802921 +2656768 +1432954 +2656774 +1735780 +1432915 +945870 +2656841 +1163524 +1432979 +1255370 +2536089 +2183241 +2536067 +543221 +2268684 +2656698 +176510 +543166 +1834209 +95207 +2595170 +1163518 +2065301 +1781022 +2656797 +2332825 +1402559 +1255374 +1569049 +543211 +2183325 +1015436 +1637210 +210511 +2183209 +176482 +2656695 +176522 +2656803 +1432967 +1568898 +543270 +1406077 +2183536 +2183550 +1921052 +970731 +1330959 +803048 +2723310 +1977442 +1876997 +2183553 +2595284 +1942421 +1331014 +2183577 +1648616 +2595329 +2183506 +2656875 +2595323 +1569077 +2183544 +1804920 +2333016 +2418120 +2183496 +2183474 +2183466 +2333027 +1255390 +1330992 +2041534 +970720 +1921065 +2333002 +2494411 +1977468 +2183541 +2494408 +653711 +2024107 +803023 +481142 +543265 +1648610 +2595267 +2656918 +2183509 +1330990 +2183478 +2183470 +1735789 +653698 +1977459 +253551 +1990208 +1735809 +2656925 +2494401 +2418129 +2361748 +1304036 +1990215 +1188747 +2089424 +1223487 +2595303 +803022 +1503151 +1569083 +355684 +1663298 +2333021 +970716 +2656905 +653721 +1569065 +2731882 +2393467 +2656913 +2656867 +2656937 +1962274 +2656926 +803033 +1330983 +2656911 +95315 +481140 +1977462 +1569075 +2393462 +803019 +1331011 +803008 +1713120 +1569088 +1713124 +2183576 +1834224 +2183467 +1569089 +1330958 +2393468 +2183546 +1942419 +355685 +803036 +1432995 +2183540 +1331008 +2183573 +2756664 +1677309 +2595288 +1432986 +1330976 +2595277 +2183515 +1163547 +2333041 +1735812 +1921058 +2333039 +1114324 +2089421 +653724 +1433002 +2656946 +1130419 +2183617 +1433011 +2656944 +2656949 +1695223 +761174 +1503154 +2333048 +970741 +2183587 +1569100 +1406079 +2006152 +2089431 +2393498 +1086640 +2656940 +18946 +2069860 +924916 +1406078 +2333052 +1433012 +2333049 +1569106 +2595337 +1079703 +2183594 +1921068 +761172 +725019 +1114332 +803060 +1942431 +95324 +2183611 +2418140 +2183795 +1188786 +1485296 +2183694 +1677333 +1188790 +1503198 +1735823 +2089441 +176549 +924940 +803122 +2494501 +1503196 +1834270 +1804964 +1030497 +2536138 +2393541 +1877076 +2656981 +1735871 +1834266 +2536166 +970808 +2656972 +803140 +761190 +65915 +2656968 +1735862 +1877073 +2333137 +924922 +253557 +176533 +738896 +1331052 +1684148 +543302 +1569204 +1877170 +1962290 +1921130 +970750 +2595359 +1877114 +2333090 +1569202 +2183797 +1804931 +2494465 +1677316 +2656983 +95346 +2656976 +95369 +349230 +924920 +2536136 +1569148 +1648625 +1735835 +2065307 +2333114 +1094755 +803095 +300621 +18983 +1406085 +2595367 +2536162 +1079710 +18966 +1188787 +2183709 +2006153 +1223526 +1503164 +1569150 +653743 +1804958 +1569188 +1569131 +885809 +1921142 +715773 +725030 +18960 +803127 +355688 +2302375 +2183777 +1677311 +2418153 +367171 +1962289 +1331029 +694423 +1114361 +2656961 +2183685 +1834272 +2656969 +2426559 +2333119 +2657007 +1094762 +95342 +2333117 +1648628 +1172699 +1223518 +2183702 +2595363 +2183719 +1569156 +253561 +885806 +1735825 +2595407 +1648631 +2656992 +451749 +1356912 +1304038 +2041548 +2183726 +1079712 +1804926 +715774 +2393552 +65920 +18978 +2333126 +300620 +1877104 +1485285 +2333083 +2536127 +2418162 +924954 +1331031 +2494467 +18962 +1921082 +694399 +2089482 +176552 +1921097 +280543 +1677329 +543358 +543331 +2183720 +2276093 +2183658 +1921116 +1569152 +2183761 +2089480 +2183783 +379889 +1834251 +2089467 +2333082 +1569173 +2595393 +1331032 +65927 +2069871 +2656982 +2183686 +1834238 +1569180 +2393534 +2595373 +2393542 +1569185 +1569129 +924933 +1877149 +970766 +2041555 +2041547 +2536126 +1569168 +1834241 +2494441 +65925 +803071 +1030488 +2418151 +970793 +1877064 +761175 +1735836 +628448 +803077 +803171 +2183714 +1030493 +2183635 +1503182 +253575 +2089457 +2657022 +18973 +1188762 +2595431 +95345 +970765 +543353 +1877113 +1877041 +2183806 +543348 +1331058 +1046840 +694410 +970755 +803119 +803121 +1877072 +2183725 +2657038 +1105583 +2536132 +2183642 +95335 +2595418 +970779 +1094757 +2089484 +1130432 +1277156 +1713137 +2089489 +2283908 +970803 +1804960 +1503159 +970745 +803170 +1735869 +904554 +694403 +2069866 +2183701 +300615 +1015449 +2595370 +1331040 +1877065 +2183710 +2333086 +2842944 +1569206 +320048 +2089452 +2268693 +2283909 +1015451 +95334 +2183768 +1648629 +2183814 +2393569 +1877050 +1188761 +543365 +2393532 +2595454 +2065308 +1569182 +543322 +1921093 +2089459 +924930 +1877162 +2595381 +1503185 +1648633 +1877040 +1094768 +1388803 +176535 +2333062 +1114348 +1503158 +543329 +2536153 +2657098 +198617 +1079728 +2333218 +1569218 +2494509 +1433046 +2700520 +2183842 +1331068 +1569253 +970859 +2333151 +1356921 +198634 +2595500 +2756691 +2756688 +970838 +1804994 +65938 +451753 +2393597 +1277179 +19039 +1820461 +1921166 +1433082 +1433068 +2333153 +367175 +761200 +2494566 +2494510 +1433043 +2183907 +2657051 +2333189 +2657075 +970860 +19027 +1834298 +1433033 +1695231 +803206 +2333215 +2494532 +1921158 +2183855 +95389 +1383542 +1030508 +1188801 +1569223 +1433094 +19017 +2183883 +253585 +1820462 +1569228 +1079731 +2595514 +2494524 +1804982 +970825 +2595469 +2279842 +2183890 +198627 +1648634 +1877193 +2418177 +2595516 +2494521 +2595505 +1767526 +2494549 +2089498 +1433077 +2333211 +2333190 +1331067 +543375 +2333205 +2494531 +1921167 +1569267 +2657079 +1834285 +198621 +2183860 +2756673 +1569270 +19034 +543371 +2089500 +2333183 +253587 +2183864 +1569251 +1834292 +725031 +2494523 +1331062 +1877195 +336379 +2089492 +1677338 +2657072 +2657060 +970818 +1223534 +2657066 +1046842 +1433047 +1503205 +1079738 +1433031 +2595490 +1094771 +1977481 +1163553 +1804999 +1046846 +1402566 +1990226 +803208 +1921178 +2723324 +1163551 +1433100 +803215 +970877 +970881 +2183954 +280545 +2657125 +2183950 +95400 +694427 +1695245 +970872 +1921190 +694431 +694430 +970883 +970873 +2183930 +1569291 +1569289 +1046845 +2393601 +1921186 +2183941 +2494569 +2756695 +970884 +2183935 +543384 +1921193 +2657130 +2657135 +2657120 +1255398 +803219 +1962304 +1569296 +653748 +885852 +945883 +803270 +1977488 +2184089 +1127414 +1735942 +2393690 +653774 +2657276 +725040 +1735895 +1705822 +2657242 +1990251 +885901 +2184045 +1921217 +2268712 +1030537 +1331099 +2268750 +2657161 +1663310 +2184033 +2657187 +2595583 +2595541 +885836 +885929 +176588 +1735931 +320094 +1295218 +732914 +1331110 +1648649 +970911 +2393664 +2595555 +176600 +1705824 +176569 +1105611 +725047 +885919 +628626 +885906 +732908 +715791 +1569325 +2393650 +628481 +653780 +1677349 +2183967 +1735911 +2333245 +653779 +2682690 +1569350 +885899 +1705817 +1015502 +1094776 +1921230 +1433103 +1755556 +543433 +1977511 +1521998 +543398 +715784 +1938062 +1295184 +2657271 +628503 +1105589 +2183998 +628514 +2065313 +1042613 +1277224 +885829 +2682628 +1331079 +1015512 +2682688 +2183997 +628575 +885894 +1356943 +1805006 +2089511 +628494 +1371934 +885893 +417807 +1637310 +1962309 +1648658 +1921200 +2184012 +1648653 +1246239 +671662 +1637318 +1735891 +1637264 +885827 +1648647 +2268716 +2807677 +1637359 +320092 +2595527 +1114375 +1114377 +2184036 +2682649 +1042624 +2393606 +470455 +2595538 +628632 +1713149 +2657246 +392407 +494047 +1433106 +1962307 +1720726 +2183978 +1569340 +628476 +1295161 +653758 +2657273 +1938063 +2682642 +1295193 +945892 +885882 +885920 +379900 +1977492 +1648651 +2268711 +2657153 +1203910 +1331097 +2682683 +543430 +2657215 +1877224 +2183980 +653782 +1962318 +1042611 +885871 +2184102 +970887 +628515 +2184086 +1277211 +320071 +2393704 +1877217 +1735900 +1304071 +1990234 +1304073 +1569321 +803224 +1042614 +1637281 +1962306 +2393657 +1015488 +1877231 +1569307 +2024112 +628617 +2418204 +1569304 +885881 +341496 +2393647 +945890 +885887 +671618 +1331094 +494046 +1383544 +2184053 +481158 +1042631 +494049 +2268752 +2657217 +379909 +725069 +628622 +1990243 +543441 +1755533 +2682630 +2494575 +1015551 +1735918 +2657152 +1569313 +1433119 +1990258 +628483 +2595565 +1637337 +543446 +2184037 +1637256 +1246237 +2595620 +2682641 +1755578 +694453 +2089520 +628586 +885922 +1433117 +2494578 +2393675 +2184041 +320072 +945893 +2089517 +1755571 +1015533 +2065320 +95409 +543400 +2065324 +1654191 +1990230 +628471 +653769 +543450 +1735948 +2595537 +1503227 +1990259 +1977513 +1695264 +1735914 +1390674 +1977512 +885883 +1295215 +653753 +1637242 +2494587 +2184093 +1476638 +1569299 +2657160 +1042621 +2494590 +1637269 +1277225 +392396 +425410 +628557 +2595569 +1015476 +1277217 +1637343 +1304086 +1569369 +1569302 +1569324 +2089512 +1127412 +1295182 +1344584 +885932 +1331087 +2184016 +1990232 +1637289 +2333248 +671643 +379904 +885855 +2657201 +2682645 +244362 +1015538 +1877236 +628536 +725067 +2657186 +1648645 +1015465 +543438 +2682682 +803266 +970890 +1304075 +770361 +732917 +2685276 +2333259 +628694 +379916 +970960 +1977516 +2089530 +176649 +1356955 +2393723 +1938095 +1569418 +1877251 +1264123 +1295231 +1569381 +1805019 +1079750 +420318 +694481 +2536188 +1977528 +1569386 +176657 +970919 +1188807 +1015580 +1127465 +1383552 +280562 +1877270 +694473 +2756698 +2393755 +2393752 +725084 +885964 +2595647 +1921246 +653803 +694455 +2184150 +628670 +1433137 +1921252 +2285856 +1094796 +1094787 +725092 +725091 +1388816 +671689 +1433147 +628692 +945910 +1977530 +2595655 +1637377 +1569429 +2657317 +945907 +2494597 +1921240 +2494605 +1277241 +2361774 +2393726 +1569415 +2268759 +1503246 +694462 +1877275 +2333258 +1942447 +1172702 +885978 +1705829 +1695275 +65954 +543496 +1114397 +1637366 +176648 +653807 +1637371 +1015571 +2685275 +628695 +2184116 +1990262 +2024115 +1805020 +970915 +653812 +1433129 +2657315 +1877262 +885969 +1060664 +885972 +1834315 +1677352 +1735960 +1735963 +1127463 +2418207 +1433134 +970933 +2657291 +2393764 +1264122 +2494606 +1735966 +653796 +2657313 +543494 +1331111 +1977517 +2006167 +176646 +945906 +1569387 +1015578 +2595693 +970942 +543457 +1127457 +671692 +2595678 +628714 +2595665 +176634 +1094789 +2595691 +1105617 +1015585 +425411 +970917 +1223554 +2536196 +1356967 +671668 +1331119 +1433128 +1503244 +1503236 +2657354 +19076 +19080 +2418216 +1877381 +970985 +1433150 +2595724 +1433148 +1503268 +481171 +280568 +971024 +1834348 +970974 +1781039 +367191 +694507 +1834322 +2657356 +2184163 +210520 +2333287 +379925 +1015606 +1094801 +1223582 +1277250 +1877322 +885995 +1805022 +1223590 +1223575 +803356 +2736829 +2089540 +1977552 +1114416 +803331 +1046868 +1677383 +1569439 +198638 +2089554 +1402573 +2184160 +1877413 +1188821 +1433175 +1094798 +885984 +1735985 +1223597 +2184189 +1877397 +2595707 +1755584 +1877374 +2184231 +803334 +2184205 +1433167 +1877311 +2494626 +2069877 +336392 +1677371 +1990279 +2657349 +971029 +1962331 +2333264 +1877307 +1383562 +803310 +2184228 +1877358 +1735978 +1569464 +420341 +1114411 +803359 +1834342 +367198 +1977542 +2302430 +2731885 +2184243 +1094818 +1569502 +95471 +971007 +671706 +2700523 +1068510 +694498 +2184181 +543555 +2184196 +2184268 +420335 +198643 +2807686 +1163561 +481169 +2184216 +1695298 +543522 +1433152 +420330 +1695282 +1569497 +420331 +2536200 +803368 +2184239 +1476658 +481173 +1331166 +176669 +2184193 +1569452 +1015595 +2807703 +2595729 +320117 +2184183 +803384 +2756722 +1695303 +1569471 +1094807 +803315 +2184170 +2657357 +1977544 +1637384 +1399965 +970972 +2184257 +1331170 +2756717 +543586 +1942451 +2393781 +1962327 +417809 +2426563 +1079752 +1695287 +1834347 +1707154 +803363 +2595749 +2595734 +95456 +1877376 +803303 +543571 +1223576 +1905417 +1163562 +803313 +1695309 +1503277 +1331149 +2807695 +1331147 +2333267 +970977 +1503263 +2393778 +2393766 +2700530 +223120 +1695283 +95479 +19082 +1060665 +2494618 +628724 +1781040 +2184217 +803410 +694524 +1223664 +1383575 +1569643 +2536234 +1877525 +1163571 +2001196 +886000 +176702 +1223659 +2184362 +725103 +628752 +300655 +2859506 +1030567 +502934 +1094838 +925043 +543655 +1223615 +2393816 +653860 +223146 +451779 +2756736 +2184325 +1188868 +1648686 +176711 +1503295 +1503304 +19085 +1877483 +19107 +1277277 +2333318 +1223611 +2657425 +320127 +2595847 +1569532 +1304146 +2494681 +2184329 +1264127 +1390687 +280575 +2001208 +2184322 +2700532 +2393825 +1962348 +1331215 +1569566 +1030571 +1569650 +2595818 +1713163 +628749 +2393807 +803400 +1834360 +420352 +2657410 +543643 +176696 +1569593 +2657421 +2184323 +2657390 +1962367 +2870262 +1990317 +2595816 +1877438 +971085 +1695323 +2440760 +253624 +1304155 +628760 +925061 +1223602 +1569576 +2006188 +1277289 +543616 +1223666 +1990297 +694539 +1114452 +1188853 +2595814 +2184313 +2870247 +1371954 +1433208 +1139791 +2595844 +1503301 +1921287 +2657429 +1402576 +2870259 +1331203 +925065 +2393805 +1188854 +2536223 +1151628 +1331180 +1736007 +1127475 +725112 +1977573 +1877441 +2595767 +1962354 +1921272 +1188847 +2184346 +198646 +925070 +803449 +1223663 +1695325 +1569583 +803460 +2657379 +2595836 +1402581 +1060668 +886012 +1388839 +2807717 +1962347 +803390 +1395881 +1736044 +1163580 +2184289 +1905419 +2595763 +671713 +2184352 +653859 +1705840 +2807731 +1962351 +2595796 +1046873 +694577 +95500 +1877471 +543622 +1877512 +694553 +1015616 +2595809 +1503309 +1114437 +694579 +2184326 +2595811 +95501 +1977568 +1921295 +253621 +451783 +1569595 +1277290 +1921275 +420358 +2393828 +19100 +1503305 +176704 +1246258 +543653 +1921281 +803425 +1877524 +2870254 +543657 +543672 +1637401 +1331212 +2756748 +2595834 +1781046 +2184370 +1569535 +1834358 +1569656 +2870260 +2440763 +2595807 +886008 +420360 +2536235 +2302448 +1127474 +2657428 +1736039 +628751 +1085356 +2595788 +2756747 +1246252 +1569556 +2657388 +2184296 +1388840 +2494695 +2723339 +1304136 +543630 +2333302 +19105 +95522 +280576 +971078 +1388838 +2657415 +1677391 +2723349 +2595775 +1569584 +1648680 +1990306 +1569611 +694530 +1736014 +1383574 +494059 +1569527 +1331213 +1736026 +2595838 +761218 +1877488 +1030564 +2870241 +2184331 +19092 +925040 +2393789 +2870253 +253652 +1569742 +95572 +1805040 +1331262 +1015643 +628808 +1503330 +2302463 +2089607 +2870334 +971142 +320135 +628820 +971148 +2595862 +2418243 +2595878 +1114462 +1877570 +1877571 +971102 +2333344 +1304159 +2870352 +2361784 +725144 +671720 +2333360 +1056475 +971128 +1388858 +1990361 +925095 +925081 +2756772 +95588 +1433247 +481199 +65979 +2595866 +694600 +2657433 +1127494 +1569672 +2184382 +1757891 +628839 +280595 +176729 +494094 +945932 +886068 +925083 +1390692 +2657471 +653904 +2184406 +1304167 +971134 +971118 +1569690 +494072 +543780 +2361780 +653877 +1357026 +1264141 +2870316 +1977609 +2595930 +1637429 +1569683 +543738 +1677404 +1805058 +1075572 +223157 +543752 +543734 +2089599 +2184420 +2595893 +2657431 +971154 +223159 +1905429 +1114489 +971112 +543751 +1188873 +694607 +1637448 +2184377 +1695358 +2494719 +95583 +1068524 +2494736 +2870320 +628816 +2870292 +253650 +1433230 +653890 +1877561 +1203929 +1736052 +1805054 +1433223 +732922 +2870323 +2184448 +543710 +1569712 +2184458 +1030603 +2870338 +2440765 +1357023 +1877536 +2393851 +320140 +494080 +1127504 +971150 +367220 +2595890 +1264150 +1371963 +1042654 +2595923 +2184449 +481192 +925076 +653900 +1921311 +1127490 +95576 +2870335 +1433224 +1388860 +2870293 +1223694 +1569740 +280579 +1172707 +280592 +1105641 +971099 +2393861 +95560 +1331238 +971106 +694622 +2723358 +904576 +1569744 +653901 +1114479 +392441 +2184463 +280581 +1569757 +803501 +1151633 +543732 +1921315 +494063 +1203928 +1223672 +1877539 +1105637 +803479 +1877581 +1877537 +1695347 +2184396 +2333390 +671722 +2184413 +2333339 +1331286 +2870321 +2657447 +770384 +1569686 +176724 +543697 +176751 +628824 +1331271 +1695362 +971139 +2657435 +176756 +2657443 +1569678 +1388857 +19119 +1015653 +2657439 +1834382 +2089586 +2184381 +1921323 +1962391 +1905432 +1203937 +1962384 +2393854 +2089594 +2595897 +1357017 +1114469 +1637431 +2184467 +1015660 +628811 +1223677 +2001219 +2333346 +385268 +628826 +2418232 +1135158 +19110 +694619 +494091 +1188878 +886060 +2595881 +2870329 +2393866 +1921333 +1094856 +1569693 +1313028 +392432 +543743 +1015635 +803509 +886026 +2536239 +2393860 +65978 +2756789 +1114493 +1114481 +543753 +1977622 +2393882 +2302457 +1921314 +1015652 +2494713 +1757894 +2393862 +494077 +1015624 +1105642 +628841 +1277320 +494079 +1805060 +543740 +1203930 +803469 +886050 +65983 +1877547 +2756788 +494065 +1156575 +2302461 +2001224 +1331299 +2657519 +95637 +367234 +2494750 +95617 +1736077 +2756810 +1805064 +1569785 +223186 +803598 +694669 +1114533 +543817 +1877656 +1805065 +971184 +2807755 +355702 +2807759 +1569914 +2184537 +2756817 +1695412 +1371969 +1388864 +2184518 +19151 +2184550 +1877643 +925122 +971173 +1433251 +653911 +367230 +803593 +1030608 +803557 +95647 +223174 +543802 +1569884 +925097 +95641 +2494765 +95599 +2494775 +1757904 +1695388 +1677422 +971223 +971183 +738904 +1402589 +1114506 +1736069 +543880 +1877624 +1051058 +1990373 +2184499 +1569861 +1406095 +336412 +451806 +2418249 +2184486 +1877645 +253667 +925128 +1921366 +1139797 +925098 +1569865 +336415 +1130468 +694656 +2595950 +2657539 +925126 +2393887 +397466 +1068539 +803602 +1357038 +1331292 +725166 +1677416 +1569872 +1877662 +367240 +451808 +1648696 +2184528 +1163598 +971190 +1569858 +653926 +481202 +1834401 +543838 +1569890 +1079772 +1805085 +1395884 +1569764 +803548 +2393888 +1151646 +694628 +451813 +1433253 +2723368 +904580 +1030619 +2184480 +2184475 +1255417 +2595949 +2418251 +2756793 +2494771 +543856 +1068542 +1188904 +1163608 +653922 +1921358 +95640 +694629 +2494761 +1569871 +742355 +653909 +2494782 +694654 +543813 +971221 +803613 +653925 +367239 +1079798 +1942474 +543821 +95649 +1877652 +1877627 +19159 +481217 +355703 +1433270 +1569896 +328291 +1569807 +1223713 +1139794 +2756811 +2494785 +2333422 +2807764 +543828 +95612 +1079796 +543858 +1503336 +2657510 +1223720 +1569839 +1877665 +1736083 +1695394 +1834402 +1569859 +1223729 +1877646 +1114537 +653915 +2333423 +2494786 +1114538 +2494739 +1255415 +803575 +2184546 +1569880 +1223723 +1114541 +725159 +355707 +2756809 +1223754 +19134 +1357033 +19146 +1114503 +543816 +451798 +694710 +971292 +1030631 +1151653 +2494820 +19180 +543914 +2184613 +367248 +95729 +886072 +367249 +925151 +481231 +2843028 +2393905 +2657573 +2596006 +971303 +2393929 +1068545 +1223793 +1223821 +1805094 +1942478 +1736096 +925159 +543951 +971298 +628866 +2657566 +803667 +1736124 +2024144 +2184596 +2596001 +253674 +2657548 +1805091 +1677436 +2393922 +1921405 +349241 +481234 +2494799 +2657564 +803637 +210530 +1403508 +1990380 +1736098 +694721 +2842992 +451823 +2089621 +2184599 +2184553 +1223777 +2843035 +628865 +95686 +1094872 +280605 +803619 +971239 +803623 +803659 +2657570 +1163633 +2333454 +803661 +1877724 +2700544 +2657540 +1569965 +1331310 +223203 +2596013 +1223790 +300673 +1877715 +761234 +1569956 +494105 +1503350 +653937 +2333441 +1781055 +1295250 +1695431 +971227 +320143 +1042658 +1921434 +2843015 +1877694 +1030637 +1223815 +1163623 +1921449 +244374 +2700547 +653931 +2089624 +502936 +1114564 +2393916 +2657578 +1357046 +19200 +420369 +1990374 +2184566 +1030622 +1877700 +1938140 +543906 +1736130 +1433273 +1163641 +1188919 +176795 +725187 +1637463 +971302 +628864 +2361792 +1990387 +176804 +1990386 +95720 +2843004 +1736139 +1834414 +2657577 +1030624 +2657554 +176790 +543950 +2596007 +1921394 +971260 +925166 +1277334 +1163649 +1805113 +2184564 +1188924 +1105649 +971299 +2184606 +2418267 +2595993 +1877699 +1163630 +1331312 +971236 +1767547 +2595998 +2393920 +1921438 +1015680 +1569961 +725200 +543934 +1834421 +1805119 +95701 +2361795 +1068551 +2393919 +2843011 +2595984 +1713195 +945959 +1030639 +628848 +1877721 +2184593 +1962403 +2711590 +971287 +2843037 +355711 +803640 +1264177 +2184620 +925161 +1569925 +1962402 +2843032 +1877707 +2333445 +971247 +95694 +1990394 +223208 +198681 +1695425 +2333433 +925165 +1399989 +2024138 +2595997 +1388873 +761231 +1736137 +694695 +2536260 +253682 +300674 +1877718 +1264166 +1657097 +1357053 +1223803 +1163640 +451825 +1223779 +2184589 +95680 +1433271 +628911 +280606 +1105680 +2711638 +671736 +628926 +2105032 +671751 +1755607 +629024 +629136 +629015 +1105675 +1344615 +2711593 +1264191 +629164 +2870453 +2711606 +502939 +629187 +770387 +629031 +1755605 +628909 +629161 +628910 +2105030 +1085358 +1127520 +2870399 +1344604 +2065385 +2711682 +392450 +2065371 +2870458 +1313053 +1637480 +886116 +629068 +425425 +2065372 +1403520 +2711639 +1344596 +2065339 +671787 +715871 +1313052 +671748 +628973 +2711689 +1203944 +2870374 +628993 +629021 +629050 +2748329 +1637522 +1344594 +715866 +1060673 +628949 +629067 +628890 +1637546 +629165 +2870403 +671796 +2870441 +1399993 +1127521 +2711637 +1637564 +945979 +1755598 +1264180 +715865 +1942488 +2711612 +2870452 +671740 +628938 +629035 +628965 +2870378 +1127517 +629059 +2870373 +2870368 +1637509 +1637481 +2711665 +715839 +1295251 +1295293 +628914 +1476708 +1295271 +629155 +1476686 +1313058 +1654218 +2711601 +1476697 +629197 +628923 +1755612 +886095 +1637492 +2870467 +671812 +2748331 +1203948 +2870466 +1637517 +1313030 +494123 +1203960 +494127 +176933 +2549642 +2268788 +176841 +494130 +1015729 +1707911 +210542 +176926 +210535 +1938164 +946021 +1390702 +1637606 +280652 +280633 +715887 +1169717 +2682718 +400528 +2536270 +946034 +629267 +1246300 +2515426 +280677 +1015760 +715920 +210559 +1015762 +1135173 +1665623 +494144 +1705873 +886181 +417817 +210549 +1938154 +2549633 +1060689 +408072 +1665633 +2285860 +408068 +1246357 +2393934 +629214 +280646 +1905457 +732927 +629225 +2310018 +2549637 +438476 +946032 +2657583 +2596053 +1637612 +886172 +438477 +1015753 +1705872 +1637631 +671823 +1684178 +470519 +280681 +176831 +1015770 +1707912 +1075588 +1821868 +300684 +946040 +176886 +1015735 +1684175 +1246318 +1905453 +1151657 +355715 +470518 +1637576 +1135169 +1088147 +280621 +1938170 +392454 +1169722 +715922 +176832 +945999 +1637661 +66014 +715930 +379967 +1818014 +1684181 +470493 +1015810 +1015759 +1246329 +176850 +176853 +210533 +1015812 +2494824 +1060685 +715924 +280659 +244377 +2020197 +1938171 +470506 +2268782 +1938182 +2549627 +2596027 +886137 +1204027 +1295298 +425426 +1015776 +1705879 +2285902 +1015764 +1637660 +1705881 +629248 +1403531 +280613 +417816 +400534 +2302481 +1344640 +1135162 +2596029 +210546 +1637636 +2268789 +1015800 +1203963 +1637666 +1637617 +66045 +2285889 +715889 +417828 +1938181 +1015741 +176928 +176851 +2536275 +886200 +886189 +671818 +1522029 +1015756 +1246339 +715894 +946030 +2549638 +19201 +1805138 +1665630 +438475 +280668 +629263 +361082 +361080 +2515420 +244399 +886165 +210544 +494118 +470525 +2268836 +1818021 +417840 +1755621 +1637599 +543991 +244383 +2010170 +2440778 +2020195 +629230 +1684184 +1905462 +629278 +244391 +1015781 +886153 +210547 +1637594 +1135165 +494168 +1637640 +66016 +629234 +66032 +1938183 +408079 +1663335 +629277 +1015807 +176911 +379985 +400527 +2310007 +1052030 +1156584 +470489 +2310020 +1637667 +1476761 +1938168 +1713199 +494162 +470508 +176916 +1769264 +470528 +1637583 +1637610 +1105700 +1143863 +1785271 +1344647 +1705865 +361069 +715917 +2268826 +417843 +380020 +1522047 +66088 +715943 +671827 +2065398 +1156609 +2748341 +210592 +1684199 +295954 +1246394 +2333501 +2020219 +2020215 +1169750 +1905483 +2515454 +2065397 +1135185 +1755637 +2010174 +1637748 +380049 +320180 +1176376 +1695449 +1169744 +417861 +438498 +1075610 +1127550 +1075614 +1637720 +946074 +1905515 +438501 +470590 +494184 +1204054 +629294 +2440782 +349257 +1264223 +2682752 +244404 +2682749 +2020221 +470565 +946057 +2020207 +295949 +1246380 +176960 +66094 +494200 +1755635 +1246385 +176981 +1637718 +1060703 +1785290 +176973 +1818086 +2020202 +1223833 +1204035 +1169753 +1246360 +1905503 +1818071 +2596061 +1169768 +2268864 +1877736 +408094 +1522048 +715934 +494223 +2682737 +336424 +2020218 +176952 +2682738 +2020200 +2184647 +1476770 +1705896 +1905493 +176939 +1015906 +1246395 +400537 +408095 +380022 +1075620 +1169757 +361098 +1075615 +1015879 +361093 +392479 +2682753 +2020213 +2184645 +629302 +380016 +1905508 +1015882 +2515438 +1204029 +494235 +629300 +408089 +2268871 +1015934 +210577 +1390714 +1246388 +886211 +2418270 +886209 +2515461 +2268853 +494203 +176959 +629305 +1637736 +1264220 +470575 +1127546 +470586 +494190 +946073 +1204064 +1665639 +1905504 +470552 +408102 +1264237 +1075609 +1637716 +1570031 +1503369 +1331347 +1331333 +1331335 +1736161 +2361801 +1962406 +1015941 +803677 +971339 +1962414 +1151663 +694726 +1570036 +1277361 +1357069 +1094888 +803670 +1277368 +925174 +1677455 +2657587 +1677461 +738917 +1223842 +1834428 +1677454 +1736164 +397477 +1877769 +803716 +2494834 +481244 +2736838 +1977650 +19216 +66117 +1713203 +2333505 +481240 +95737 +2731893 +1383611 +2302494 +971324 +1570047 +1304191 +803707 +904584 +1570064 +1015939 +1877744 +886222 +1781057 +1877784 +1570058 +481251 +438509 +95753 +451829 +1030652 +1648708 +1570032 +1805154 +2807777 +2843041 +451843 +2494841 +1357078 +1877762 +286295 +66118 +300688 +1990405 +2748347 +1805151 +1570050 +2333516 +1707158 +2596071 +1114595 +1877775 +2302488 +223222 +95744 +761241 +1277372 +336431 +1223837 +1094892 +367258 +2184688 +1663338 +1834434 +19225 +223221 +2596076 +1331350 +1304189 +694728 +1030653 +925187 +2001236 +2001238 +971338 +2596069 +2657589 +2333510 +803679 +1877754 +803699 +803703 +1877767 +451834 +1757914 +1331348 +1371981 +1304195 +1277360 +397478 +1877770 +925190 +1433311 +1223841 +1030655 +544019 +544031 +671829 +1503364 +1877768 +1962410 +1877773 +367267 +1433301 +2756851 +1163654 +1402615 +1127566 +1476782 +2807797 +223229 +2657604 +653949 +1015948 +1570125 +1695466 +544061 +2596111 +2657601 +2723400 +320185 +1114608 +1570109 +1114599 +2657602 +2393976 +1277390 +2870471 +653956 +1331384 +1736191 +2418279 +2596083 +95759 +1877790 +2393975 +2596105 +2184749 +177009 +1503387 +1921483 +544043 +1977656 +2723397 +629318 +1503390 +544070 +177015 +694736 +470610 +1223868 +1079805 +2184767 +2756857 +629316 +2333552 +2333524 +2333525 +971376 +300690 +1713219 +66122 +1990412 +2596089 +95762 +1905518 +1570122 +177020 +2184782 +904585 +2184785 +1402613 +925206 +1127569 +629328 +95771 +2657609 +1255434 +2184750 +653952 +2596093 +1736193 +2494859 +2184736 +2711701 +544038 +629319 +223226 +2536302 +320189 +2596088 +1357085 +2807785 +2184735 +694740 +2700550 +2393973 +2268878 +803728 +1433314 +2333558 +1951619 +2657621 +2657638 +2657639 +1877820 +1781059 +2596115 +1433327 +1637766 +653958 +1705899 +2736846 +2807867 +2596146 +2657692 +886332 +803734 +1736201 +2596136 +2006260 +629440 +2870551 +2006254 +1016017 +2184822 +177122 +653987 +2001248 +320207 +380065 +1637821 +653978 +715985 +629450 +544120 +671849 +2596232 +1990428 +361106 +2657686 +2536320 +544096 +2283928 +1016005 +2184903 +629333 +1046899 +1357112 +95794 +2596140 +725229 +1755651 +2807848 +725217 +2184841 +177075 +1503393 +946104 +2596221 +1977740 +2723418 +1942519 +1977741 +629470 +2268881 +770402 +1015996 +177131 +1295361 +1921514 +1877838 +1388894 +1942507 +629414 +715982 +1188948 +2184840 +1977739 +2870487 +715968 +715980 +1277419 +2723433 +1204084 +2723437 +2870485 +367273 +1977758 +1388898 +2494870 +2682766 +2596181 +1433339 +2596208 +66132 +1114625 +1522060 +2268929 +1977687 +1962419 +1736233 +2859548 +2394021 +925211 +1042704 +1277431 +1476811 +177105 +629343 +2184794 +653968 +1277430 +2089691 +629401 +2065419 +2494867 +725213 +1015959 +1042698 +629344 +2361827 +1383623 +1503398 +2006264 +1331417 +886348 +1942505 +1476791 +1295366 +1990446 +629374 +1921490 +2596207 +1357109 +95783 +1246403 +1075625 +1433342 +1648727 +1736204 +803750 +2596212 +1042696 +66131 +1990431 +653970 +886331 +732946 +1433362 +629446 +803745 +1736225 +1977690 +1313094 +1204077 +971396 +1648719 +671839 +1877840 +1846460 +803754 +886305 +629431 +1990433 +886249 +2723416 +2807853 +2596213 +1015979 +1713230 +629498 +2268926 +1313088 +971391 +1176379 +177119 +2268900 +1736196 +544090 +1331386 +732936 +886296 +725225 +1388901 +1015958 +2843063 +671848 +2700567 +2596231 +1390722 +725218 +320214 +2870544 +177120 +392485 +629375 +1570142 +544091 +544117 +886282 +1677472 +629355 +886278 +2807837 +1357103 +629458 +1402624 +2807810 +1637784 +1522056 +971394 +629379 +629358 +1990434 +1127579 +715961 +1637780 +1962425 +653963 +2807870 +2006274 +2859557 +2184885 +1951622 +1277404 +629480 +280742 +2184824 +2596223 +1637824 +2700562 +1357095 +1736211 +2268910 +2089687 +2723415 +1805160 +629404 +971392 +629499 +2184867 +671905 +451851 +1357093 +1977712 +1016025 +1962436 +1372001 +1990452 +380076 +2807868 +1736202 +629393 +177066 +1962432 +1990454 +2394008 +2184855 +320219 +320237 +886336 +1016026 +2870521 +66135 +629402 +95798 +544110 +1677476 +971384 +1402623 +2657673 +1648724 +1834464 +2685293 +671870 +732941 +177031 +1042709 +653964 +95787 +725220 +886300 +2184883 +2657645 +715963 +470616 +1295354 +2807817 +1654234 +1042713 +2807827 +2302506 +629445 +1046900 +1127594 +732951 +1295342 +671841 +925208 +300698 +715981 +2184893 +417867 +1433348 +1015954 +2001252 +1295367 +1637819 +1114616 +2870522 +2689587 +2596129 +2065416 +2184843 +1736239 +629489 +1079809 +1331412 +2394015 +1246412 +2065415 +629336 +380083 +1570129 +2843061 +1388900 +1015980 +1042703 +2006245 +2731903 +544076 +1938230 +2689586 +1295331 +1105730 +1905546 +1654241 +300700 +1820471 +629571 +654002 +344721 +2184997 +1503415 +2494890 +2596260 +2596248 +1736272 +1996701 +2494909 +1637871 +803793 +1921519 +1127624 +1114632 +1255467 +1570242 +1736278 +2596286 +1367331 +2494931 +694763 +886380 +908891 +1068560 +1367325 +177139 +1755688 +300702 +280754 +494282 +671925 +1977783 +341531 +2596294 +1736284 +1570233 +1367339 +1357124 +761247 +2185014 +1476815 +1877853 +654009 +1255450 +1030688 +1834491 +2414526 +470638 +2596244 +1331463 +1948517 +1995154 +2394089 +803845 +2515490 +2657724 +1223894 +2494928 +629527 +1985682 +1877904 +1877922 +1877893 +2723442 +2657703 +1877858 +1921528 +1127608 +544172 +470644 +2333586 +1877860 +2361836 +1255446 +2440797 +2184923 +1163676 +1990476 +1114633 +2184980 +2185048 +544133 +177166 +177161 +1433382 +1938252 +1331455 +2184956 +629560 +1570267 +1977763 +1331443 +803839 +1570191 +2185054 +1877948 +971428 +1695483 +2184954 +544210 +1805170 +2731911 +2394081 +1060711 +2723446 +544173 +177207 +1938253 +177142 +244422 +95811 +494264 +2596310 +1246429 +1977766 +1877873 +1877895 +361110 +1169785 +1357127 +1736258 +2870558 +2394066 +1367327 +498779 +2657711 +1736271 +2089710 +1570247 +2268954 +1264279 +2283938 +1433380 +2494911 +629577 +2657708 +1818102 +177141 +1169777 +425430 +925221 +2740213 +1570250 +732954 +671907 +177149 +1357129 +481264 +498778 +1570238 +2859570 +2756929 +1357116 +2184949 +2185038 +1637836 +331747 +1977797 +2414531 +971409 +2394049 +2184948 +2185064 +1570249 +2310054 +1151667 +1304243 +629508 +1570187 +1846463 +1990474 +925247 +1485318 +1264313 +2723439 +1169787 +2536328 +2065428 +1877857 +2024160 +544160 +1570217 +1246424 +2361833 +2736852 +803792 +2361830 +1877866 +1304241 +1264297 +1344667 +2807888 +1877899 +738921 +715999 +2185044 +2494905 +1938236 +95833 +1433390 +2494927 +470630 +1264299 +803801 +1684214 +2024169 +908893 +438522 +2394075 +1736286 +1877906 +2418289 +694766 +1990464 +629561 +1637884 +2184977 +2185067 +19237 +417869 +177204 +498777 +1877872 +2596292 +2657697 +1357120 +2596307 +177164 +95817 +1736280 +1570223 +425431 +1654240 +2859566 +1503426 +1016046 +1264284 +1962452 +1264291 +2185061 +803835 +886383 +946119 +1805174 +1204097 +2184976 +420372 +1331432 +417872 +1331452 +177191 +1223900 +1570153 +2859562 +803844 +177208 +725235 +2302518 +1570205 +2184912 +177159 +629542 +2018550 +1996698 +629570 +2394042 +745412 +1344680 +1570246 +1188956 +1075629 +1977779 +1075635 +1755676 +1684215 +2394072 +1820467 +1130483 +803826 +177152 +544188 +629566 +2394041 +1127607 +925227 +715998 +498781 +2807890 +417871 +1204185 +1223932 +1085400 +1264328 +1052042 +1990481 +1016103 +742365 +1503431 +716014 +629618 +1905551 +1344692 +425456 +438539 +331761 +1264332 +1818142 +971450 +494328 +1204167 +716011 +1127652 +1376117 +2494934 +1570286 +925265 +629630 +300703 +2024197 +770411 +629596 +1818144 +1942525 +671932 +1223969 +2494943 +2657734 +1877977 +694798 +1834511 +1977807 +1246507 +177285 +886399 +1755696 +438591 +1277444 +1204186 +438544 +1105762 +210621 +946143 +177262 +1938261 +2333611 +1246439 +1075653 +253709 +177273 +1176429 +438536 +325899 +1331476 +1805183 +2494936 +494332 +629602 +1877986 +95870 +1176406 +494339 +177275 +1176430 +494392 +1204160 +971443 +1905553 +1921551 +1051063 +2185150 +1877982 +2494994 +1834514 +481272 +2705550 +1246570 +1570280 +2830471 +494348 +803871 +2285924 +392512 +1127637 +2018565 +280782 +470691 +1246450 +470742 +177291 +1204134 +1395892 +1169810 +2185165 +671929 +1818141 +1246467 +2069896 +341541 +1246503 +1877969 +1176397 +971461 +470700 +2333616 +744940 +2268970 +1331479 +430178 +1127654 +1204124 +392520 +1637919 +803865 +1176389 +1818131 +629638 +544233 +2105072 +349282 +1204164 +2333610 +2494947 +494385 +1570305 +2440801 +280788 +19251 +1223925 +244433 +2285926 +1705910 +210626 +2596319 +1677488 +1204121 +1068571 +223248 +1204147 +1246445 +2748372 +1255478 +470720 +1877974 +2089736 +1331468 +1016096 +2024186 +629601 +1094914 +2494993 +1223977 +1223940 +408121 +1995161 +1068572 +1176422 +408115 +494321 +1223959 +2024174 +1169798 +1246444 +544223 +2494948 +210622 +417886 +742366 +1151670 +438570 +2024188 +1705913 +1246465 +494289 +1176391 +494360 +361116 +1877976 +223242 +430182 +744930 +417896 +1151676 +2018560 +1204177 +494317 +2515517 +1357153 +1878000 +744931 +738924 +1188962 +886406 +1151679 +420378 +1695504 +253713 +2185134 +438584 +2657746 +392514 +1246496 +1246500 +494367 +1905550 +1204169 +1075652 +971442 +1255473 +470688 +1169801 +494384 +177276 +1016066 +1246540 +1938268 +1223919 +1736321 +331752 +654016 +494338 +1503432 +1060731 +280758 +494359 +1637926 +2731912 +886398 +1376115 +1684252 +2494942 +1637901 +946140 +971460 +223249 +1878013 +2494974 +2185087 +2494945 +2089731 +2657733 +470680 +425469 +408112 +1684241 +1834503 +1433399 +1834492 +1255476 +1223972 +95875 +494382 +1246522 +438560 +1877995 +2756951 +1818138 +1805181 +733017 +2065450 +1016201 +629709 +1313129 +177451 +733153 +1767560 +1094917 +1948526 +671985 +2685306 +629873 +751083 +1476932 +1638127 +1016171 +886622 +672044 +672062 +2414580 +630220 +2185225 +886587 +629897 +629909 +2089743 +1376125 +95881 +732984 +733008 +2723464 +1376240 +2843127 +1476871 +1376176 +1367407 +630033 +494399 +1476966 +177335 +733142 +1264374 +1295396 +1313177 +1304252 +2843131 +1367372 +1878045 +2065470 +2756971 +630289 +886596 +629669 +1277455 +1713243 +629996 +2807915 +1295395 +1433445 +1736336 +630225 +2657840 +177356 +629895 +2723453 +671952 +733149 +1637957 +732991 +733035 +2185193 +630050 +630241 +544269 +1977825 +630079 +946158 +630137 +1016200 +2736856 +2041636 +716056 +1016123 +629831 +1313114 +280833 +2185228 +2657767 +2003451 +672037 +629993 +2536361 +803878 +629828 +1878029 +1313179 +1638133 +177371 +629802 +1255487 +630138 +1657116 +1720755 +629751 +2269020 +629718 +1638182 +1637996 +1755724 +733062 +1985711 +2596361 +1637997 +886595 +629843 +177405 +925269 +2394154 +1376229 +2843080 +886494 +886511 +630281 +925267 +1246580 +1713251 +1295520 +2185216 +1094930 +733116 +2418310 +1755722 +2185176 +2685308 +1638148 +886423 +1720759 +2185278 +732996 +1344736 +1367386 +177401 +544296 +744952 +1755736 +2685320 +1295432 +629893 +694804 +733022 +2807918 +1016169 +2001272 +1962479 +672022 +1990494 +2185272 +1016134 +1638123 +1834534 +1295493 +2269072 +1638145 +886662 +1016210 +2657809 +1295433 +1224002 +2843096 +2418298 +629837 +2723460 +2418311 +1204209 +1016173 +1570358 +1376136 +1295533 +1304244 +671941 +2685318 +2596376 +1638086 +2065502 +1367426 +177475 +1376205 +672019 +2549662 +320297 +177413 +2596360 +1224000 +1344727 +716047 +2089750 +1068574 +1433408 +2515523 +1376180 +733135 +2756960 +629785 +629833 +1637936 +1476875 +630111 +2807909 +2657841 +1016142 +1264357 +320300 +1476999 +1295417 +1985743 +1433439 +1344734 +630035 +732982 +1834526 +1367402 +886421 +630072 +1638153 +2657818 +1648737 +1755715 +1638068 +1383640 +1570382 +671978 +2418313 +1295508 +1637970 +1344704 +320271 +2843100 +629678 +1295487 +1938294 +2185240 +1654273 +1637983 +1114655 +280810 +630113 +2268981 +629998 +2185249 +1878061 +1246581 +2269022 +629778 +2278616 +629710 +630116 +66199 +2756962 +1638012 +629931 +672091 +1016156 +2657810 +1736351 +1016161 +886635 +2185204 +886465 +2657803 +1834548 +1638113 +177373 +1834543 +2394128 +1503436 +886521 +1246596 +2843115 +1570345 +629773 +1637944 +630285 +2027112 +630085 +1638032 +1638189 +886476 +629902 +886633 +2065446 +630228 +280792 +1878038 +2001269 +2719516 +733098 +733097 +672109 +630048 +2692400 +2870567 +1985720 +946156 +1990497 +886631 +1295402 +2269083 +672002 +629882 +1383642 +2596386 +1695513 +2065444 +1477016 +2065464 +886629 +1367383 +1977838 +2596372 +672131 +280815 +733165 +886491 +2185276 +629816 +1638131 +654027 +1016188 +1313155 +630293 +2089749 +629822 +2278619 +629786 +2807940 +803875 +244459 +1246589 +733033 +1720771 +733020 +1638157 +2394096 +630069 +1295526 +672118 +1736370 +1695510 +886649 +2657832 +1042728 +1331491 +1313165 +630290 +629939 +1755737 +177473 +1695506 +1638029 +629855 +2843084 +654019 +2394117 +280800 +1016180 +2536386 +1638150 +2278595 +2740216 +1962478 +2394098 +2692389 +1433427 +630204 +1637943 +1042733 +886439 +1995224 +1295492 +1344696 +1522094 +2719502 +1638156 +1016105 +1948529 +1277468 +544256 +629987 +1570365 +2269075 +1433406 +1638075 +629748 +1755728 +2657815 +1295443 +1477000 +629842 +2361866 +177350 +1224011 +2065462 +1127678 +1295463 +2536355 +671945 +1878021 +2596341 +2536389 +2596384 +1376159 +2269029 +630154 +1476876 +1637965 +470752 +2843130 +244458 +2361881 +1638023 +1433473 +2269041 +1736361 +2394148 +886504 +629906 +1638048 +630190 +1367428 +1637969 +671951 +1376138 +1477036 +2756957 +1720750 +733046 +1433465 +2596364 +1638026 +1684256 +1995168 +1638161 +1878059 +1476969 +1476860 +1657105 +1638079 +1477035 +1736363 +2596359 +630195 +1476866 +1476933 +2723450 +1344729 +177433 +733166 +733114 +1878033 +1476925 +1570332 +2041641 +1476899 +1654270 +629832 +177455 +2105081 +1376185 +1367431 +1277456 +2269035 +1344722 +1638120 +2843118 +886431 +2065514 +2008663 +629872 +1223999 +1638073 +1477017 +1313150 +2719505 +1637973 +1638114 +280793 +177361 +2185181 +1433453 +629789 +1657109 +1476931 +1376141 +1295408 +1476905 +672082 +2065482 +1638125 +2394107 +325920 +1476988 +1977819 +1713248 +1367417 +1695508 +1127663 +2418309 +2333639 +1736349 +1834558 +1834566 +392549 +733181 +1127722 +2719533 +1878129 +1042762 +177491 +1878223 +742384 +1042777 +1255513 +1344787 +654047 +1522111 +1357176 +630417 +672166 +253718 +2278623 +1376281 +1127715 +1367510 +886700 +1878222 +1060736 +2269097 +2700609 +716086 +344736 +1878135 +1736379 +2657849 +320317 +654059 +694811 +1736426 +1188994 +1016219 +177535 +672278 +2414609 +2757013 +1367495 +2808008 +1921574 +1016229 +946180 +1648740 +1878164 +2089759 +1684261 +1105806 +1313209 +1834561 +1367487 +544309 +177538 +2418317 +177493 +1638207 +733180 +886714 +544346 +1755765 +1042769 +2069906 +733232 +1344780 +1295560 +733196 +1477054 +2808002 +1570387 +1522113 +1114671 +1357190 +544316 +320311 +672240 +630351 +2736864 +2394205 +630343 +886698 +1331520 +1878152 +1695517 +1127727 +886687 +1736406 +177551 +1344781 +672273 +1016249 +2757015 +1878198 +630300 +2736865 +1295557 +694816 +630484 +1570390 +1878105 +349294 +716102 +1304261 +630454 +1977844 +1344738 +1921582 +1224059 +1255496 +1878092 +1367452 +630342 +630419 +2808004 +886696 +1295542 +544310 +1344808 +1878169 +1736384 +716065 +2302530 +1331518 +1295547 +716095 +2700613 +694821 +1367475 +733253 +1878148 +1477055 +66222 +1224033 +886707 +733186 +2807988 +1367498 +2700615 +733206 +1383655 +1638224 +2807984 +1367494 +494408 +1127698 +1921575 +2682825 +1657118 +1638206 +1755748 +1127718 +1570395 +886719 +744967 +1344803 +1878110 +1736408 +1878071 +1331536 +1188995 +1127717 +1105799 +1477058 +1736404 +1344804 +1224054 +630382 +2736863 +725247 +2596403 +1654277 +1878082 +320304 +1522104 +2003455 +1264377 +2657853 +1016224 +367284 +1878127 +1372025 +733203 +1878095 +744961 +1878142 +1503445 +1188991 +1313203 +733176 +1878147 +1376265 +630369 +1948530 +1016228 +654041 +1878159 +1367472 +2807978 +1846472 +320314 +1331532 +2756995 +886680 +2736872 +1878179 +672182 +2756994 +1344753 +1962489 +1016235 +2394212 +1367461 +630370 +2001278 +630367 +630303 +1878176 +654034 +1016254 +1127695 +1878149 +733207 +733220 +2105092 +1684262 +672192 +2756996 +1016259 +177521 +630397 +1105803 +672221 +223252 +1677491 +1985752 +630427 +654065 +2757009 +2414610 +1376269 +1367464 +1277495 +1344828 +177611 +1367560 +1094956 +1878279 +1938305 +1921593 +2685356 +1016286 +210646 +295982 +1313261 +886773 +630559 +1638265 +1477078 +325926 +1736462 +2185332 +1224087 +2495068 +1313242 +886731 +1878230 +2731920 +177607 +2269109 +2089774 +177590 +672306 +654066 +716107 +2302537 +971511 +1948536 +2757034 +2495053 +1962509 +280872 +2185354 +2283947 +280865 +2185382 +2361889 +1224094 +2394256 +2185358 +280862 +761252 +630544 +2495063 +1570436 +1638236 +803963 +2394234 +2394246 +1313227 +1677494 +253721 +925281 +320330 +1878319 +971496 +1277501 +1477093 +1016268 +1503460 +1304278 +2185330 +1638293 +2185338 +1570472 +2418326 +1189003 +2361887 +1977879 +1942543 +946183 +1878232 +1878284 +1878270 +2495064 +2089783 +498785 +630540 +2394225 +2495044 +1042785 +1304285 +1878304 +544351 +1977889 +470772 +1570439 +1638298 +2685357 +2006300 +886778 +2414633 +1367533 +1736459 +2185329 +1016261 +295979 +2495042 +1344836 +244493 +1878273 +2185323 +1313233 +1755791 +2089777 +1344826 +886781 +392557 +1638288 +1264390 +1030713 +1878261 +210650 +1372031 +1313231 +481291 +803938 +886732 +1736435 +1331546 +886759 +2657873 +223256 +1985785 +2185321 +2001286 +1878251 +1570464 +1357214 +1344813 +1433489 +1477085 +2041669 +2418318 +2185370 +177626 +1990509 +2808039 +971508 +1648742 +1313262 +1878277 +2185337 +2596428 +1755788 +946192 +253720 +2185319 +2685331 +1638276 +1295604 +630554 +1736451 +1638297 +2185340 +544352 +1277499 +1204231 +66231 +2685338 +886799 +1295582 +425481 +66233 +2808040 +1878245 +1736437 +280855 +2394244 +2418323 +2596429 +451878 +177579 +1304271 +210637 +1304275 +1030714 +654069 +886739 +2003459 +2278628 +95898 +1127743 +392562 +1948532 +1277494 +2808059 +1995258 +1878289 +2736874 +1477068 +971505 +210638 +925286 +1570447 +2596443 +2719544 +1189000 +177633 +1277485 +1331542 +244484 +1224091 +925282 +630506 +1016260 +803932 +1114683 +470774 +1878325 +2692406 +2596432 +733291 +494432 +971501 +1638261 +1246621 +1130494 +280871 +2596453 +1376293 +2041668 +2414628 +1172725 +630520 +451879 +2394288 +630604 +2757064 +2757081 +1172726 +1990531 +2185521 +2361898 +654081 +2757074 +1684275 +630644 +1331596 +2870653 +886808 +1357224 +2723501 +2859727 +1277537 +2740233 +630620 +1304311 +1736535 +1313272 +2333693 +804030 +2333698 +1977953 +2859824 +2723488 +1990526 +300722 +1638331 +2008672 +1367567 +2185443 +804005 +544433 +300721 +2719550 +1127758 +2185413 +2185488 +2333695 +2185451 +2723524 +2859742 +2185405 +1304334 +1878364 +2657906 +1433528 +1638320 +1357269 +1367572 +1331608 +2731931 +1295632 +2859748 +654084 +1224147 +1878369 +1834587 +1570475 +2596488 +672317 +1921609 +1114692 +2859873 +1990521 +2859731 +2185453 +1990538 +925294 +2859816 +2185399 +95914 +1736547 +1990532 +2333692 +1477104 +544382 +2843150 +630673 +2711742 +1372059 +2843143 +2024235 +2757099 +2736877 +2700616 +95929 +1313275 +1677495 +971557 +2870607 +2185494 +1834594 +1570521 +544440 +1503469 +1695533 +2859604 +1990514 +1114695 +1921616 +2596473 +1304290 +1068583 +1295619 +2418339 +544448 +1433544 +630614 +95937 +2859716 +1570554 +2859910 +1736507 +2870629 +2596529 +1433520 +2859809 +1477102 +451886 +1224127 +1313280 +1383673 +2870649 +1921617 +2870646 +2185506 +1068585 +544392 +544441 +1433530 +971539 +451887 +1114693 +2185388 +2748390 +544474 +2870619 +2731929 +2859800 +803985 +2414640 +733296 +2808102 +1357246 +2089802 +544429 +654094 +95934 +1016298 +2185465 +1921638 +803986 +1304291 +2859739 +1331601 +803992 +1433532 +1996709 +2333721 +803995 +1114699 +1030723 +1834577 +2859770 +2870655 +1295642 +1094961 +1736505 +2859671 +2001293 +1114706 +2859777 +2859591 +1878399 +694869 +2859692 +2808084 +2870634 +1189013 +2185427 +2859794 +1477101 +2870613 +1570533 +630615 +2185511 +1570480 +1977900 +971554 +1357227 +2495070 +2185516 +2859866 +2394280 +2185478 +2089803 +1372057 +2185428 +803998 +2859753 +1736511 +2700617 +2859890 +694857 +1277508 +2024239 +1094968 +1357272 +2723485 +2185397 +2736878 +694867 +971558 +804014 +2440812 +803981 +1921612 +1962516 +1938312 +1736544 +630624 +1224135 +1695536 +2859640 +1736513 +2185452 +2859737 +544451 +544422 +630621 +1086658 +630669 +1331606 +2024243 +1570502 +1921648 +1878378 +672337 +1977909 +2185523 +733305 +2089794 +2185492 +2870632 +2859574 +2001295 +2757093 +2757101 +2001294 +804037 +2185391 +2333703 +971534 +1736487 +2596508 +2041672 +1304316 +630633 +2740239 +1878377 +1357264 +1570528 +804007 +2394303 +1990518 +1990529 +1657129 +2185508 +2808072 +2748388 +1878350 +2394323 +2185466 +1570496 +694842 +1151692 +2859673 +1433539 +544472 +2859672 +971520 +2808101 +654102 +1570556 +2185519 +2859778 +2333685 +630628 +2870644 +1277504 +1331622 +630588 +2596545 +2185409 +1383668 +2278629 +1977951 +2596490 +1383670 +1878396 +1357255 +803990 +694853 +1657123 +1638323 +1736481 +1376312 +2418340 +2808090 +2302546 +1295636 +451884 +1977939 +1990512 +2185438 +2394344 +1938310 +2333682 +1878338 +2859817 +1357222 +2748392 +2870636 +2361899 +1304299 +2276113 +544463 +1878355 +2859741 +1224163 +654142 +1433578 +1372094 +2692426 +1878440 +1030733 +2692422 +1990552 +2596562 +1030737 +2394379 +2596555 +1834601 +544517 +1030738 +654133 +725262 +2089805 +2596587 +2536430 +1921702 +2596573 +1736553 +1570584 +1367589 +654131 +630688 +2536436 +2700636 +1962526 +1344854 +1331649 +2700640 +725268 +672371 +1094977 +1921736 +2418361 +672354 +1962534 +1094976 +2700643 +2596597 +1570573 +2692439 +2685373 +654113 +1433585 +654130 +2596616 +1224158 +2757152 +2700623 +1016312 +1878403 +1962532 +1477109 +2748403 +1990551 +1878419 +1376327 +2657955 +1372092 +1736568 +1357306 +1570590 +1433574 +2414645 +2700630 +971572 +2685366 +654117 +2596586 +2757116 +2394389 +253725 +1304335 +672361 +654155 +1962525 +1921706 +2394391 +1357327 +2596627 +694874 +1695556 +2596584 +1030731 +2657941 +2418352 +2723585 +886845 +1357319 +1304357 +1331660 +2700626 +1277553 +654126 +1277571 +1357293 +2185536 +733325 +1367579 +2596568 +1331632 +2414650 +2185524 +544521 +2723579 +971581 +1433581 +280878 +2185555 +544526 +2685362 +2418354 +1344849 +2723576 +2596577 +2418356 +1372082 +2596625 +2394382 +95948 +2657969 +1938317 +1433556 +1654293 +2185556 +2736908 +2692423 +2700631 +544503 +1331634 +1695544 +1357281 +1834597 +733313 +2185602 +2596551 +2414651 +2495087 +1736586 +1990561 +2723570 +1304353 +2185591 +1695548 +2685371 +177703 +971565 +1834605 +2723533 +2596610 +1570602 +177699 +1638341 +804071 +2185530 +1736561 +2657944 +886851 +2185593 +1477113 +2657961 +1030729 +1570583 +654162 +2657943 +1277565 +2757157 +654168 +2394392 +1695555 +1570603 +2692435 +1304343 +804042 +1357328 +2757154 +886849 +2657932 +1921700 +2394400 +1570608 +1331718 +1736636 +544701 +1094999 +1331732 +2596716 +1570653 +2185892 +2041713 +2596651 +2394463 +1695602 +2596695 +2185664 +1255534 +2089827 +1990575 +1344856 +2185633 +2185726 +1433679 +2185928 +1878451 +1695627 +2440816 +2418395 +1878521 +761258 +1736628 +1433609 +95975 +971614 +2596639 +2041716 +2418377 +1878487 +1878450 +2495122 +971604 +1114722 +544607 +1277592 +1255536 +2185895 +804134 +2185657 +95966 +544568 +1433716 +2041686 +804144 +1277614 +2596700 +2495137 +2185716 +1713275 +2692443 +2185870 +2757187 +886859 +253735 +2185656 +2596644 +2394449 +1016318 +1433631 +1990568 +2185814 +1383686 +1503490 +804114 +1570729 +2495166 +804148 +1834607 +1695614 +2757176 +2394465 +2185914 +2495143 +2333763 +2757204 +2185731 +2185827 +544540 +2748408 +2089852 +544573 +544578 +1277593 +2495150 +2185645 +2185856 +1094987 +2185658 +2596635 +1189025 +2018598 +2658049 +2041687 +2185821 +300734 +1570735 +2394477 +2536440 +2185818 +2596694 +2596672 +1736607 +925307 +1962537 +2418375 +544556 +95988 +1433634 +2394474 +544610 +1331707 +1433596 +1433635 +1433712 +2440820 +1570698 +2333784 +2333772 +971634 +2185831 +2757175 +2495113 +2185832 +1570630 +2185904 +1503503 +1277630 +1433730 +1094998 +1255526 +2495112 +2185910 +1695605 +2495121 +544538 +2418386 +2495147 +1433714 +1878476 +2185896 +1638347 +1433690 +971593 +2394428 +694886 +2658024 +2185848 +1736624 +544620 +2596649 +1570737 +630729 +2185668 +2185696 +1990567 +1372106 +1224178 +1695617 +2596638 +1677498 +1781081 +1079835 +630721 +804076 +2185815 +1130518 +1977991 +761263 +2418382 +544613 +2185727 +1357337 +2658042 +2495130 +1570684 +2185732 +2757205 +2394420 +1433678 +2658068 +1663365 +1433604 +544548 +1344857 +2008709 +2657981 +2596661 +544669 +1570730 +1331695 +2333766 +2757210 +95969 +544708 +804099 +1127767 +2495171 +1433657 +2185877 +2041680 +2185906 +971633 +2394416 +694897 +1406107 +1433664 +2495123 +2596722 +2185819 +2276128 +2333805 +1433625 +804174 +95982 +654186 +2041724 +1433636 +2658061 +1255551 +2658038 +2185757 +2008711 +1433638 +1383687 +2692440 +1433675 +2596701 +1570699 +804088 +1677497 +2185663 +804129 +2185902 +2185864 +1570704 +1224167 +544606 +2185761 +2418378 +804117 +630723 +1079842 +1977998 +1695621 +804123 +1079843 +804080 +1570670 +1695596 +2185711 +95984 +544590 +1331697 +654176 +804170 +1255554 +253747 +2596686 +804187 +544626 +971594 +2495097 +544593 +1130515 +1878508 +2657977 +2185861 +694896 +177709 +2658033 +2394448 +2658008 +2185702 +1331724 +1736627 +2089855 +1834642 +2185935 +1695649 +2394546 +1095024 +2185934 +1695639 +1079858 +2495181 +1295672 +66272 +1331746 +630763 +2361913 +1130524 +2394524 +886890 +2089902 +1570804 +1707173 +1433749 +1068599 +1172732 +925317 +420394 +2089875 +1736651 +95997 +1224201 +2394538 +1433811 +1834631 +1433806 +177731 +2394517 +2596743 +694902 +1224224 +1016323 +2596783 +2186112 +2596756 +971664 +2186163 +498798 +1503524 +2186045 +2186194 +1255571 +1477154 +1277654 +2186131 +177716 +1056480 +1264394 +1921753 +1570777 +494434 +630740 +1255576 +1921744 +2394555 +2186183 +2394579 +2186146 +1570767 +544769 +1114728 +904593 +2185985 +1570771 +2596776 +1638356 +2333817 +2186035 +2186005 +1130534 +1978002 +1477130 +2186121 +971665 +971689 +1016320 +2185945 +95996 +804190 +761266 +2808127 +1834626 +1921749 +2333823 +1224190 +886898 +223274 +1030759 +1068604 +223272 +96028 +761270 +925323 +177718 +1570775 +2394560 +1433739 +1503518 +1189034 +1079857 +1485321 +223278 +96016 +1522132 +2185996 +1372121 +2302573 +1433759 +1433813 +2658088 +2658089 +1255567 +2186010 +1477136 +2041742 +280892 +2185952 +223288 +2394526 +1433742 +1503536 +2186064 +177745 +1277633 +1663377 +2394568 +2186186 +1433817 +1503565 +770428 +2394558 +1503537 +223281 +1713281 +804192 +2185966 +177750 +177749 +2440831 +2870661 +2089893 +96032 +1695641 +2394504 +177765 +300735 +761277 +1820480 +1151701 +2105105 +2089899 +1224192 +253760 +1246627 +1433755 +1921747 +2185971 +2186175 +804265 +1713292 +1736638 +694911 +1878548 +804205 +1878558 +1818157 +1264391 +694917 +2302572 +2269125 +2658090 +2302563 +1189039 +417925 +1503542 +2596748 +2692444 +1485327 +1834643 +2536463 +494435 +1503531 +1079876 +1204239 +2333827 +300736 +2279848 +1130526 +761273 +286314 +1477149 +1224207 +1713291 +1820481 +971660 +2596751 +1503540 +2394501 +2278632 +1255564 +1570829 +2596742 +96015 +66263 +223271 +2596741 +96025 +2394521 +2089915 +425486 +2069915 +886865 +2186068 +2089896 +451901 +1331759 +630741 +320348 +804222 +1068600 +2495209 +1372122 +1736639 +2279845 +1433740 +1736654 +1503526 +1172730 +1834641 +1295667 +1079883 +544721 +2536464 +971650 +2394520 +2394544 +1277656 +1921761 +2185950 +1433784 +2186171 +1503522 +1503512 +1522129 +1663368 +1114774 +804355 +1367592 +1570904 +1030791 +544881 +925339 +1921765 +2596820 +544790 +1978024 +544882 +1189087 +1570892 +1433890 +2596864 +2418408 +96044 +2186287 +2536508 +2418407 +1921794 +1224258 +2276148 +96051 +654213 +1834692 +544811 +1114753 +770437 +96053 +1878611 +2658101 +1834693 +2658128 +1503573 +2658111 +2596851 +2276155 +544875 +630786 +177779 +804333 +946206 +1648768 +2186226 +1657167 +1834672 +2394608 +2394590 +886919 +2186293 +1921780 +2536516 +1224240 +2743505 +1095044 +630810 +1224262 +1189054 +630791 +544864 +1570884 +1736692 +96041 +2186242 +2394599 +2536494 +630811 +2361939 +904601 +2658105 +1114767 +355734 +1433878 +804311 +2517627 +733332 +971722 +2596853 +2089932 +2418409 +1433871 +2418399 +654204 +716128 +544840 +804309 +1224256 +2283960 +2658126 +1878617 +1990578 +1114771 +1878604 +971721 +716129 +946207 +1978033 +96040 +886916 +544802 +630807 +1095045 +344749 +1834674 +2394637 +1942571 +1086663 +286321 +804282 +244508 +2041746 +1224252 +804337 +2808128 +1503591 +2394611 +2536503 +1095037 +1638362 +2596830 +66283 +1654298 +544815 +2394639 +1878632 +1878596 +886917 +886911 +1878646 +2536476 +804289 +804332 +2186263 +1503586 +725279 +1834671 +2089946 +1503599 +1805211 +1978029 +2186268 +1921789 +2186247 +2536475 +544846 +1878594 +2536505 +1978014 +2394634 +804316 +1654297 +544839 +2089953 +1805210 +804279 +320350 +2808139 +96055 +761280 +1962557 +2394598 +2186231 +2757218 +1834694 +1189083 +630813 +286317 +1570898 +544812 +2658123 +2186281 +1114758 +1172735 +971712 +544801 +2333831 +1736704 +1978038 +1114765 +804322 +804298 +672395 +1114788 +2536504 +1736706 +1921795 +716130 +694935 +2394645 +694929 +1277664 +2685384 +1367599 +886956 +1695654 +1295686 +971805 +2843167 +1127778 +545013 +2870737 +544992 +2394676 +2186388 +2859953 +2757240 +544975 +2596879 +2186408 +1189109 +971796 +1114805 +2041758 +2186421 +2736934 +2596873 +1978042 +2870729 +725281 +1570951 +2757263 +96070 +2001319 +1357374 +804422 +2757235 +1736739 +2596914 +971795 +1638381 +2186312 +2418416 +1367594 +694960 +2186297 +1204244 +2870717 +1224271 +1834703 +2186369 +2719558 +2859962 +694957 +1570979 +2418418 +1942575 +672397 +2870704 +2859934 +971787 +2870719 +2001321 +1695666 +1114812 +1978056 +2333859 +1878712 +2757243 +1224290 +545007 +1095058 +1834699 +2186353 +2186321 +1570944 +1016366 +2186412 +1978051 +925356 +2870697 +2186363 +1357379 +2740286 +1433911 +694948 +1030800 +2757245 +1372127 +925363 +544948 +544912 +544996 +804401 +733339 +886936 +2723622 +2089962 +1127774 +2394675 +2870756 +1878703 +1224278 +2596915 +1204243 +1433906 +1736752 +2394677 +2186301 +96067 +672404 +253779 +654225 +2860006 +544902 +1477168 +1736758 +1755806 +2186403 +2186324 +630890 +544978 +2748421 +2495256 +2757254 +2859918 +654218 +2596902 +2859956 +1344870 +1372139 +2596877 +1383697 +451911 +2723616 +1736730 +2736931 +1921844 +1570910 +1657179 +2394707 +2743506 +2658158 +1189113 +2658149 +1736764 +2333847 +1570938 +1878713 +1114796 +2860014 +2757228 +725284 +2596874 +2596876 +544993 +1834698 +2692449 +2596906 +2186310 +1016339 +1921866 +630831 +544949 +971781 +672410 +544893 +630886 +1878705 +1204245 +2859914 +971773 +470798 +1834702 +96058 +2186410 +886959 +1684280 +1095073 +1204246 +804396 +630847 +1570931 +725282 +545000 +2186339 +694969 +2186309 +1477165 +804457 +1834712 +1016344 +971819 +1277682 +1277693 +1921821 +672409 +2723631 +1736746 +2870707 +804454 +2870736 +630849 +1713313 +804363 +1357395 +1905603 +1224267 +544966 +630825 +804442 +96066 +1736722 +96064 +280906 +2723610 +1767568 +2736928 +1878653 +1677504 +630828 +2870665 +1095062 +2596925 +280902 +886940 +804430 +1060743 +1978044 +1357382 +2658150 +733336 +1016359 +1962568 +804372 +66285 +2859913 +672398 +1344869 +925372 +2723629 +2859928 +2186434 +2394703 +2740285 +66287 +280900 +544943 +2870755 +253781 +971770 +2711774 +654220 +545003 +2495242 +2394708 +1095075 +2186467 +1433962 +1095079 +2186449 +2536529 +1383701 +1503626 +2333871 +694986 +1695692 +2843181 +2186512 +2597040 +2186495 +2186503 +1878755 +654258 +2041773 +925376 +2870788 +1736806 +2596983 +1304393 +2658176 +694984 +2186499 +804478 +2596975 +2597008 +804516 +545110 +1571014 +2186537 +1571024 +545089 +1570987 +2186501 +1331846 +2394765 +2333865 +545020 +1695686 +545092 +2186530 +1331842 +2685397 +2597027 +2041765 +804493 +1736813 +2711780 +545084 +253793 +1921891 +545042 +2186440 +1570988 +2186479 +223298 +1114813 +654256 +1357404 +2008732 +804475 +1834720 +1695681 +96082 +1978101 +2006324 +2731946 +2495270 +2186455 +2394742 +2008727 +2089982 +545065 +545071 +1570992 +2597000 +2008733 +2870791 +925375 +2361971 +1736836 +2597012 +1878765 +2757281 +545068 +2658203 +1357400 +1570991 +2685395 +2597022 +1372142 +1433959 +1189129 +545026 +1304384 +2757280 +1331860 +1433952 +1331850 +2536530 +2597017 +1357406 +1695697 +2597002 +1878763 +1695693 +1030834 +2757275 +1383699 +1978086 +1570996 +2069924 +804469 +2597021 +694985 +1503627 +2361959 +2186535 +2596943 +2700674 +2186528 +2333861 +223301 +1878760 +1357401 +2870779 +1433955 +19306 +654250 +1878736 +2186775 +1406135 +96112 +1878807 +2186736 +1434044 +2027115 +2186626 +1406139 +1383705 +1095092 +2597100 +96136 +2090058 +2006325 +971847 +2276170 +1503650 +1805249 +2495304 +761307 +2495277 +2536596 +2418448 +2658266 +2008748 +2186605 +2001326 +1434045 +253801 +886968 +177822 +2658297 +1503640 +1068618 +2333926 +1406140 +2186783 +1736843 +904607 +2186646 +2302608 +2353461 +2186791 +1921907 +2186634 +971864 +19336 +2597130 +804593 +1713320 +925392 +1434007 +2333891 +2186672 +1695739 +2658285 +392573 +2536580 +2302604 +2186810 +1962593 +2536563 +2536565 +2278911 +2597167 +2597064 +2186720 +1331914 +2658286 +1295693 +2186656 +2018607 +761298 +1503647 +761294 +2333906 +2394822 +2333880 +545151 +545150 +2186751 +1277741 +253802 +1114825 +1357443 +1189137 +2597060 +411889 +2186855 +177821 +2495339 +2515540 +2658241 +2658284 +1921903 +2536601 +2186650 +19322 +1503645 +2333978 +2597134 +2090017 +2186708 +96159 +2495291 +1224295 +1434010 +1331875 +804591 +1781087 +925393 +2090046 +1331870 +2186636 +2658226 +2536587 +2658240 +2333931 +1705938 +1978111 +2597149 +761309 +2090014 +545135 +2597135 +1433988 +2394781 +1277716 +481324 +2186782 +1433992 +66291 +1942594 +2090043 +2186830 +96144 +2394798 +2018606 +2597168 +2711785 +761291 +2186778 +2597076 +2536573 +2186723 +2700686 +2658272 +2186739 +1277733 +223305 +2008745 +2700691 +2186599 +2658293 +2186796 +1095094 +1277774 +2495348 +2186597 +545138 +451919 +971854 +971858 +2658255 +1434024 +804549 +2495285 +1942596 +2186635 +1434043 +253803 +2658252 +1878769 +1383704 +1277758 +761293 +2536545 +2186767 +2186598 +2090022 +2658295 +1695734 +96132 +2186560 +1736844 +804557 +2414661 +2495360 +2186571 +1921902 +630910 +1921898 +1503649 +2658303 +1277744 +1878785 +1331902 +2394785 +2302626 +2495345 +2186745 +2333968 +1571086 +2536574 +2495332 +2186627 +2333927 +2333982 +481322 +1942600 +96161 +2041819 +971917 +2536653 +19359 +1905607 +2334029 +2186869 +2700703 +1878810 +2394844 +2186929 +1781090 +2090122 +2090132 +1139803 +2302639 +2001328 +2334039 +545167 +2186962 +1571165 +694999 +1434055 +2334017 +2658332 +804665 +1571162 +1695752 +2090093 +2027122 +1834738 +2186879 +1834741 +2626302 +2186877 +2090076 +1277779 +804626 +411897 +804622 +1834752 +397491 +2731952 +804608 +2041865 +971914 +971869 +1133652 +1030848 +1503656 +481331 +19352 +2041868 +804609 +2334013 +1372151 +2186906 +545175 +2597217 +1834737 +804611 +1571125 +1571107 +2090073 +1834758 +971910 +804637 +404606 +2723652 +1571145 +2536638 +2279861 +2333991 +1571168 +2186868 +2333988 +2597242 +2536625 +1189142 +1834760 +2334020 +2808150 +2186873 +1713333 +2186918 +1878828 +1695759 +1834763 +2748426 +2597275 +1990615 +1834766 +2394854 +19358 +925411 +2394855 +1767579 +1713336 +2597220 +1372156 +2186933 +2597181 +1224301 +545161 +2186900 +925403 +2334048 +971890 +1677518 +545177 +545207 +804634 +1695748 +1095103 +2658311 +1056489 +2597188 +2394862 +19355 +2334024 +2090079 +2711798 +630912 +2658338 +1189149 +2536628 +2597264 +2597225 +2090116 +19344 +2186942 +804648 +2394843 +2808155 +1834759 +804655 +804605 +761324 +2536671 +725299 +1095107 +2186892 +545214 +2186985 +971892 +2041811 +1767574 +2041857 +925413 +2495389 +1378541 +2597195 +725303 +2685401 +1172740 +2495408 +2597196 +2041858 +1990617 +2186878 +2186951 +695013 +1388917 +1834747 +2041813 +1978120 +2041827 +2186903 +761329 +2090126 +1331925 +1834771 +2302636 +2090091 +2597186 +2597179 +2334060 +2711792 +19361 +1383709 +2536644 +2186969 +2187030 +1942612 +177834 +1705940 +654269 +887023 +886985 +2597400 +2187099 +2394893 +2187152 +1277804 +2187109 +2090165 +367302 +2187058 +1085408 +886981 +1571274 +1571229 +2597389 +2187217 +971968 +96181 +804777 +1378549 +1978159 +971980 +1030857 +1016382 +545352 +545291 +1805267 +2597346 +695052 +2536715 +481342 +1978129 +887035 +1367604 +545356 +886998 +96197 +2723674 +2187256 +695038 +804823 +2597424 +2334091 +1127784 +2334080 +2008777 +2041899 +1571264 +971983 +545320 +2302673 +1313310 +2597291 +1571263 +1372161 +349304 +1990648 +1277833 +1571270 +2711818 +1571216 +2658382 +630935 +1736883 +2041893 +1942607 +2001342 +451937 +2394887 +804760 +1878872 +177847 +244512 +804831 +2334122 +2187018 +2008759 +2597322 +2187229 +2685406 +1388930 +545298 +2597438 +1127786 +2597329 +1331934 +2187180 +1114851 +971954 +545303 +2700715 +804739 +2187196 +1805269 +887015 +1995280 +2495436 +1277830 +1357483 +1571302 +1990641 +1016381 +2187212 +1503665 +1068629 +2597286 +1434131 +733354 +1978166 +545267 +1695778 +2495442 +1878866 +1277807 +2597333 +1357471 +2187198 +1695772 +2006334 +2187105 +2187258 +1990654 +1677522 +1434094 +1030864 +1571335 +2597369 +2597360 +761341 +2187240 +2041873 +1130540 +2276173 +1878860 +2018619 +2334064 +1503669 +177851 +2187095 +971936 +1357473 +1383711 +804675 +2187074 +2187122 +2536695 +804811 +804694 +804759 +545266 +96186 +1571232 +177829 +2495421 +1357475 +1921929 +672423 +2711806 +2334078 +1990652 +1571283 +2187055 +886994 +2090144 +2187029 +177831 +1357468 +654275 +2187238 +2090147 +804756 +654274 +2187085 +2658366 +545285 +2334109 +96189 +2711822 +545315 +1757934 +804792 +804696 +2658387 +2187043 +1978151 +1030866 +804687 +1114840 +2597283 +1978134 +1648800 +804712 +1079893 +725329 +2597393 +2597319 +1805262 +2394879 +804769 +2808162 +1571296 +804794 +2187241 +2187200 +2808165 +1224307 +1503660 +2597314 +2187179 +2041880 +198725 +725310 +2187237 +2597466 +1571247 +725320 +2440858 +804692 +1978171 +1834796 +1948546 +971973 +804765 +2536701 +2187020 +725315 +2597443 +1736888 +654273 +2658374 +2597338 +1434090 +545339 +695049 +1114853 +1331966 +887001 +887013 +1695760 +1295699 +804709 +1878891 +2597426 +1030860 +2597307 +2024279 +1016372 +971961 +654266 +761343 +2187096 +1434093 +887019 +2658384 +1921950 +66303 +2027129 +1295705 +1834798 +2334094 +2700709 +1990634 +2748431 +2517636 +1713340 +630942 +2394890 +804713 +1503682 +1571364 +1951648 +2658423 +630992 +177896 +253832 +2495447 +1695782 +2597484 +2362021 +1313314 +1056494 +1638426 +1016416 +2723682 +2731971 +300777 +1079905 +695090 +2394939 +887114 +1720825 +2283981 +672433 +2041921 +2658421 +887072 +2065553 +2302688 +1921983 +223337 +2187398 +1638438 +725337 +1713360 +2269170 +2808210 +1434142 +96243 +1331986 +1204261 +545399 +2187301 +2269151 +1056493 +1962631 +1638416 +1638431 +2187277 +96241 +66316 +545416 +1204267 +1978189 +2090196 +2689601 +2187324 +2597475 +253829 +2536732 +1383721 +1105848 +804852 +887095 +1383720 +1376350 +2597476 +1295730 +2597479 +1130543 +2394987 +367312 +96233 +1376353 +1948549 +2187299 +2658411 +630955 +1477200 +1079903 +320364 +2187387 +1985805 +1357504 +2090174 +725335 +631007 +367306 +2283979 +1304431 +2187317 +1388953 +2843217 +320375 +177870 +2362018 +2658413 +2808255 +2808297 +2187394 +804844 +2027134 +1127788 +2808271 +1767589 +672440 +280933 +2394974 +1969394 +96240 +1571369 +2302700 +2394943 +1921977 +1938345 +1313319 +1985809 +2269173 +2187370 +1677529 +1948554 +1295721 +1224310 +385307 +1736896 +630993 +2187342 +1978178 +1962643 +804855 +2187404 +1846484 +1695780 +1331989 +2041924 +2597534 +695086 +1477229 +630996 +1372195 +2394947 +2187371 +280913 +1388949 +545414 +2711834 +2090177 +2187358 +545403 +2843200 +1990675 +2187362 +1736898 +2689600 +481350 +1016429 +630998 +1951653 +1571362 +630991 +630976 +631000 +725340 +1331984 +1878902 +2302703 +177889 +253826 +2597536 +925448 +300775 +177858 +1376357 +177894 +1295738 +1085421 +1921985 +349309 +1246638 +631033 +887047 +2808203 +2515550 +2808286 +1477201 +1921979 +1767592 +972001 +2187369 +1978184 +1295718 +1978172 +545391 +280917 +1921973 +545398 +631031 +244518 +2394954 +1477216 +1376351 +630978 +1905619 +2808233 +451940 +1264396 +1805278 +2843226 +2843248 +1255608 +545421 +2808217 +1805282 +887099 +1905617 +1805285 +1962635 +2808239 +1571385 +2302683 +1805290 +630986 +1951659 +2187323 +804860 +1204269 +2187328 +887074 +2001347 +1016415 +1176458 +1357493 +2105109 +1571373 +1846494 +404608 +2597497 +2187343 +2808238 +1638448 +1264408 +887078 +925444 +2187330 +19391 +2187339 +1224316 +2302699 +1434187 +1522152 +887235 +2187410 +1638527 +1638542 +2658433 +2536764 +1684286 +887307 +1905639 +177927 +887140 +1042822 +1477320 +695097 +2269226 +2395041 +1030878 +1684285 +1990697 +761350 +1969412 +672487 +1434164 +392581 +1357525 +96257 +631135 +2395034 +1434184 +2808306 +1638500 +2536767 +1344889 +2723702 +1030881 +1295749 +1638480 +280956 +1367624 +2269208 +1277881 +631116 +1016502 +1204274 +1638494 +2597596 +804899 +545471 +2334146 +2334153 +545535 +1990704 +2626314 +2269212 +1638524 +1878947 +1878931 +1477346 +2597617 +280958 +1085425 +1477284 +631097 +725359 +1713368 +2269215 +2515558 +1367628 +1295784 +1648806 +1755828 +2740318 +320384 +1985819 +545475 +1948559 +545546 +2187427 +1638549 +1434163 +1948569 +1224318 +1016486 +2187508 +2334168 +1638504 +972021 +2269231 +2723691 +1295771 +733365 +1388955 +2362043 +545445 +1477260 +2187493 +695095 +1357527 +1905629 +1985829 +1105863 +1295780 +631119 +545542 +2187445 +1127799 +672456 +177957 +1016435 +1638543 +1878951 +1016441 +1755815 +631179 +545492 +1638462 +2187429 +1942646 +2065566 +887162 +887239 +2711853 +654305 +2187424 +2187521 +631159 +2536754 +2269187 +1477270 +804937 +2597603 +545474 +2723705 +1638540 +733368 +1477294 +2334131 +672495 +2334156 +1638523 +1477253 +2711851 +1434180 +1105868 +1477276 +2334164 +887264 +1477301 +1434171 +716162 +2723690 +2362042 +1264412 +1295750 +2187522 +2418487 +1332005 +1344892 +1016439 +716156 +545454 +1434238 +1313345 +1127803 +1042819 +1878945 +887130 +1985815 +2536768 +2090208 +2362039 +1434174 +1571421 +631185 +887273 +1295759 +2187453 +2597598 +545516 +2723703 +1571434 +2353473 +972022 +96250 +672453 +1654313 +1477287 +1846509 +1951677 +1995287 +631184 +1295752 +1878935 +804934 +1638474 +2711846 +2090216 +887134 +2018638 +887221 +1638513 +654297 +631094 +2269189 +1985831 +1677531 +887169 +1332000 +1277877 +1571409 +2187483 +545524 +2740317 +2723706 +1477327 +972024 +2006351 +2395026 +1878936 +631151 +1951665 +631048 +1344890 +253837 +2740324 +1434209 +1105866 +1571420 +631066 +887167 +2334144 +2626313 +1995286 +2515554 +2658437 +1295762 +1277878 +2536760 +545531 +1204278 +66331 +2395028 +887176 +1978205 +2090215 +2187463 +2065560 +1016452 +2278914 +1905643 +1367625 +2187456 +1477282 +2269211 +66332 +2041938 +1332007 +2187497 +2187492 +1016474 +631186 +1016445 +1990694 +1372208 +672498 +2700733 +716180 +2353477 +972045 +887511 +178041 +1295797 +341570 +2041991 +1016533 +96273 +1434297 +1357533 +1376382 +1477354 +1846512 +1344919 +1571503 +804982 +244544 +804970 +1376381 +2495481 +946263 +1878966 +1277921 +2187624 +1376379 +1942658 +1030886 +1295817 +494460 +887369 +631344 +1016520 +1357547 +1477431 +1503698 +341572 +946262 +1016562 +1434251 +1905650 +804958 +2700743 +1277914 +887356 +2748442 +631285 +1477355 +1295812 +1114869 +177983 +2187586 +1085438 +1434301 +695118 +1477461 +1985852 +1376377 +887484 +2187641 +2269258 +2843260 +1434271 +1376380 +1016512 +631286 +545610 +631249 +2041962 +1477432 +1638644 +1878964 +1755830 +1571501 +1969415 +545603 +545612 +805013 +2187651 +2723722 +805004 +2414677 +654317 +2187599 +631322 +725374 +1434258 +545589 +545592 +887520 +887384 +631292 +1990713 +2685432 +1434275 +2395057 +545620 +2626327 +2090220 +2395061 +177997 +695116 +631335 +1638622 +1016572 +804961 +494453 +1344922 +887354 +2757305 +66347 +178037 +631298 +2418497 +1127813 +2187595 +2658468 +2069956 +1720851 +1638573 +96282 +1016538 +887343 +1255626 +19403 +1713378 +1016570 +545554 +1434289 +2362046 +631220 +2187545 +887424 +887407 +1905645 +1638618 +1638578 +2536784 +887443 +887489 +177980 +887348 +887397 +1736932 +887418 +481356 +1042837 +1277909 +716169 +2740337 +2597640 +631336 +1016522 +2700744 +1372218 +2090230 +1332027 +1648812 +887346 +1332012 +672510 +1477474 +804963 +1720836 +2187656 +1951679 +2597663 +2334187 +972042 +1016541 +725377 +1571468 +2090218 +1477364 +887487 +2515566 +1477412 +631262 +1434290 +1477458 +2187611 +2658457 +1638617 +1755832 +1477420 +177992 +631237 +887322 +804998 +1878961 +1295814 +2187643 +1677534 +1016523 +2700739 +2187608 +1434278 +2689619 +2041993 +2041964 +1434264 +2269265 +545566 +2700754 +1477406 +1638632 +887383 +1016568 +2700757 +695127 +2658492 +2006355 +1357536 +2302715 +1720839 +223343 +1295830 +1313358 +2692469 +1713376 +1878965 +1755836 +2626325 +1295796 +2536788 +2334198 +887428 +1638650 +1736930 +805016 +631231 +1477388 +341573 +1638641 +695129 +177990 +733374 +545601 +1295828 +2597628 +66345 +2187700 +2187755 +631347 +2731983 +2187756 +2187686 +2843266 +695135 +2187746 +545657 +2187675 +2395085 +1189172 +1962689 +2302721 +2808320 +2736968 +1277941 +2187780 +1255638 +1224334 +19405 +96318 +1016587 +2495505 +1056497 +2723735 +1962678 +451953 +2597706 +1095147 +2334210 +2395074 +631346 +2187807 +2395075 +2302738 +1962693 +2723739 +925468 +1277933 +2414682 +1781097 +2626333 +2843292 +1713387 +2843323 +1905662 +761368 +1332048 +1295837 +1736947 +805064 +2711876 +1277935 +2334239 +1503709 +887542 +654324 +2395093 +1255630 +1834856 +2187695 +1736943 +2395096 +2187797 +2001363 +2843283 +2843284 +545645 +1663411 +2187716 +545641 +1571526 +2187781 +695138 +1978257 +2334212 +1962673 +2740344 +733378 +244549 +2495487 +2334216 +2395080 +2495496 +1879035 +2658495 +2302725 +805032 +178071 +761363 +2597718 +2843272 +1846518 +1921999 +1978262 +96328 +925463 +2187674 +2843268 +2187761 +2843287 +695145 +223344 +2090239 +2597710 +972060 +2843273 +805043 +178057 +2024293 +2597680 +2018651 +2001367 +2808310 +1295835 +545666 +1277943 +2808311 +1332051 +1878980 +1485340 +96301 +2187723 +2187736 +2723725 +1204281 +1878997 +1921998 +2269277 +96293 +2395088 +805071 +887546 +1332062 +1571522 +2187794 +1695795 +1056496 +1571525 +244550 +223349 +1663412 +2006360 +2711878 +1332061 +545691 +1503741 +1332085 +2187979 +805100 +2395140 +2187849 +2395160 +1295840 +887598 +2658588 +1757952 +2711891 +2018656 +1922009 +2187839 +1079928 +2187815 +1277967 +392586 +2187894 +2187873 +2395173 +1879053 +805121 +1978287 +1962724 +2700764 +1224359 +2187870 +654331 +1834877 +1962712 +695188 +946276 +805133 +1130549 +2187847 +2187904 +2334260 +887559 +1879057 +1879067 +2395125 +2187896 +1434344 +2597816 +545679 +2536818 +1962703 +1962711 +2658528 +2736973 +1503739 +2597794 +1834871 +2658543 +2658517 +1224342 +1571589 +725412 +2495553 +545739 +2658526 +1503737 +2597866 +2395170 +1736999 +2395132 +2090267 +1332078 +805104 +2495528 +2334249 +2187812 +2187853 +2395172 +2187919 +2187940 +1332069 +2536834 +1332123 +887618 +1042840 +1383746 +545734 +2006366 +1189183 +2187968 +1277964 +695191 +972077 +2418510 +805101 +1357556 +1638681 +367328 +545741 +2090272 +672537 +2187905 +2597795 +2731991 +1922016 +946279 +1388965 +695186 +805130 +1879102 +1978289 +2187913 +1079915 +2536846 +1879062 +1677552 +1127816 +925483 +695152 +2187936 +1079922 +1571567 +1357559 +2495552 +2743519 +451960 +805092 +178085 +2395129 +2187813 +1736985 +805124 +2187836 +19420 +1344928 +1332102 +2187820 +887588 +1962708 +2334242 +1030896 +2187923 +2597884 +1677559 +2395135 +2843337 +2843328 +2700763 +1962714 +1571636 +695182 +2187910 +2283995 +96335 +2597829 +2187831 +1985863 +244554 +654341 +1224356 +2597743 +1879097 +2711882 +2334254 +2187952 +2597822 +1922008 +1736987 +2395130 +178089 +1879077 +2187927 +2658563 +1030900 +2658576 +2187949 +2597885 +1879094 +545729 +1879082 +2395156 +2658520 +2658539 +805076 +2597740 +2302759 +2395123 +1332107 +2090271 +925493 +1571581 +805117 +1736973 +2187976 +2597750 +631390 +178081 +1503726 +1663414 +887627 +2302743 +2090253 +66367 +1879058 +1805331 +1079934 +1879056 +2334262 +2808335 +451963 +2269283 +1805319 +1357574 +1767603 +2597869 +2597814 +1357569 +2334289 +2536857 +1736958 +2395146 +2536854 +946278 +2187981 +1277978 +1922020 +805136 +1805330 +1434337 +2334269 +1879092 +1332110 +2334290 +2536852 +2362079 +2597860 +1295843 +2187921 +2597845 +1978297 +2597933 +2597991 +1571656 +2090296 +1434374 +2658593 +1571677 +2334341 +2188008 +2395204 +2536897 +2334336 +2536882 +2598019 +1434433 +1406180 +2188098 +19446 +1030909 +2395194 +2187990 +1571678 +1378577 +2362093 +2598006 +2334317 +2090278 +2090282 +1434375 +1978296 +2395203 +2597938 +2536888 +481368 +19435 +2658639 +1951692 +2685440 +2597956 +198732 +1434394 +2187996 +2597979 +1571649 +2536887 +2536907 +1378573 +2597994 +1434430 +1571665 +2334349 +904633 +1434407 +1332145 +2597906 +1434357 +481366 +1879127 +2090297 +2042018 +2188106 +2188085 +1571641 +2598002 +545758 +2597952 +1357588 +1879133 +1834889 +1434398 +1378578 +2334328 +2597907 +1834895 +1962737 +1189203 +1383747 +2536893 +2597973 +385312 +2334293 +2418514 +2395201 +2700773 +2334304 +2658629 +19437 +2597993 +2334329 +1879131 +2187993 +2495577 +1942676 +2334365 +2188062 +545762 +2334340 +19431 +1485349 +2495565 +2598030 +2495570 +1114877 +1879132 +1332128 +2090280 +2187985 +2658635 +1962736 +2395189 +2188096 +1357587 +1879114 +2597905 +1378576 +2658610 +2090312 +2597941 +2018663 +2598004 +1951702 +1834890 +1571663 +1095159 +1030917 +1879130 +545792 +2598071 +2395225 +2658651 +1383754 +1383761 +2395230 +2284001 +695201 +2495608 +253853 +1978304 +367337 +2685457 +1951710 +2658664 +2302785 +1434456 +2188216 +654346 +2658656 +1434471 +1278009 +481373 +1372235 +1332170 +1942701 +300792 +2090319 +1357602 +2188118 +2685450 +2188141 +1434441 +972089 +1434464 +2042035 +545791 +1434447 +2188166 +2495597 +2042032 +2843348 +1376391 +1395901 +805168 +2808348 +2658678 +2658655 +2808355 +411915 +2598093 +2362097 +2536939 +1224369 +2843346 +2598095 +223377 +1406188 +1434463 +253850 +2334370 +2808357 +2598054 +2740358 +1357610 +1332183 +2334369 +2536930 +2598121 +1372233 +1571691 +1962745 +2711916 +1805340 +2188175 +2362101 +2188138 +223373 +1434468 +2536934 +397494 +1962748 +2536915 +805147 +2685453 +1277997 +1332164 +1357594 +1434469 +1357600 +2188119 +2598048 +1942700 +2536941 +2711906 +2395255 +2748457 +2188173 +1016594 +1277986 +1737037 +2598287 +2740371 +946285 +1095188 +545848 +2090350 +2188321 +1395902 +972120 +1962771 +2723793 +1978397 +2598255 +1344936 +545869 +2537009 +2711958 +1357619 +2536965 +805202 +1357647 +1978383 +1695822 +2598264 +1879205 +2598277 +2700793 +2598214 +1434484 +2598175 +1737031 +1978394 +1985865 +1434479 +2808388 +451972 +805241 +2334398 +1278015 +2723790 +2537013 +631407 +545828 +1951723 +19476 +2598283 +253868 +2700790 +2598124 +2188219 +545914 +451975 +1503781 +2188274 +2723773 +2395304 +1978339 +2395284 +2732029 +2334406 +545901 +1978363 +2711956 +2188299 +545908 +1834937 +1962774 +631401 +2598183 +1372256 +1879176 +761380 +2723791 +2598200 +2723784 +481380 +19471 +805198 +1879185 +1978382 +2536993 +2598219 +1332202 +631412 +2740375 +1905670 +1713421 +925530 +2808359 +1278059 +1962791 +2740367 +2598163 +2598257 +1951721 +1879168 +2598184 +2418538 +2700791 +1978325 +1978359 +2536964 +2598272 +1388971 +2732014 +2736983 +1737040 +2736987 +2711947 +805242 +805204 +545813 +2536990 +481390 +2006379 +1713409 +2732037 +1357634 +2711942 +2008808 +2732024 +545870 +1978392 +2685459 +1357638 +2334403 +654356 +1016603 +2362117 +887631 +367357 +1278027 +1357628 +2090349 +2700822 +2598181 +2732039 +2188319 +451978 +1757955 +2598145 +1295858 +178104 +2736989 +2743528 +96387 +1332218 +725425 +2700815 +2711978 +1503777 +96369 +1255641 +2395282 +545882 +2757332 +2395264 +96376 +654350 +2188271 +887643 +1278042 +1978365 +2598192 +1278017 +2188318 +2711975 +2006383 +2395278 +1332196 +2285941 +2188240 +805224 +1654322 +2269290 +2495619 +2598316 +2700812 +2536980 +280979 +1962784 +1990749 +2658691 +2188262 +1304501 +1879196 +1030929 +2711976 +2711948 +2598269 +2334389 +1304486 +1332220 +2362107 +1962768 +2188222 +1978371 +2008837 +545875 +2692474 +2536975 +2695612 +280981 +2495617 +1978378 +805215 +545815 +2700808 +545945 +2598397 +1522174 +1477502 +2658709 +1879222 +805275 +545924 +1434502 +2188459 +2395333 +2334456 +2395315 +1278069 +96395 +2334462 +2188453 +2598409 +946289 +925542 +2302835 +2598360 +2188397 +2018688 +66384 +2495636 +2395323 +1805353 +2188385 +1767620 +2395318 +2042054 +1388974 +2188429 +1571732 +2495632 +1571808 +2269292 +1477500 +761383 +545936 +1638709 +1713429 +66387 +2090366 +1879224 +2395332 +2495660 +2302824 +66372 +2090368 +2188347 +2334467 +1879226 +2537042 +2495634 +887684 +2188355 +1477505 +1805350 +2188356 +19514 +1571764 +805302 +2517641 +96397 +1834958 +1357655 +198753 +1737044 +2757341 +1962792 +1638700 +2495648 +223390 +1571753 +2188421 +2598336 +1434517 +1962793 +1879244 +805261 +1571722 +2188367 +1638694 +1224388 +1571800 +2188482 +1571749 +1434497 +2188446 +2090378 +545928 +2188384 +2658716 +2537026 +2334466 +1332245 +198742 +1571792 +2740382 +1922051 +2188348 +925543 +1737058 +2090384 +1677585 +2495664 +2495662 +1677577 +19509 +2658704 +1767619 +1189226 +2598375 +2188473 +1477497 +2188413 +1767617 +2658719 +1388976 +2188378 +1079939 +2334452 +198744 +2188340 +1834953 +695248 +2302812 +1879212 +1805364 +805271 +2748484 +695237 +1677583 +2598383 +1383788 +1304516 +2537028 +2042055 +2537031 +66385 +545927 +1834969 +2334454 +2188463 +2598378 +1224387 +1571813 +2495654 +1133684 +805354 +2860079 +2090460 +2426599 +2860043 +887763 +1503824 +2188540 +1781112 +1344942 +66397 +2188636 +805393 +2440922 +66416 +2188617 +2302868 +2334505 +397500 +66432 +1769293 +66402 +280986 +1767633 +1477526 +1485388 +1189233 +1133669 +2870826 +19528 +19548 +887806 +2495682 +2188503 +805401 +1485369 +2090409 +1503856 +887756 +349320 +887722 +2870798 +1485376 +2440912 +946291 +1056526 +2188647 +1571859 +1503853 +631428 +178128 +1156625 +1503791 +397496 +2188609 +887804 +2302843 +2860100 +1477522 +198798 +887856 +198788 +210695 +2860036 +2188544 +761390 +770486 +66504 +2334496 +2302848 +2284024 +2334535 +805350 +66428 +1677598 +805371 +178174 +1485396 +2284019 +887776 +1785336 +2188678 +887822 +1485362 +631430 +2860064 +19540 +1522181 +198768 +66484 +1477558 +223408 +2188587 +19515 +2334522 +2334497 +2090448 +2284057 +2495678 +1485367 +2870802 +770478 +761395 +2090447 +887704 +887865 +1477524 +223396 +96418 +2188634 +2188671 +1406197 +1503819 +805356 +2870806 +1663426 +2279863 +2334532 +2334518 +2284026 +1571848 +19556 +1638716 +2188592 +1503821 +66401 +2537061 +2302838 +2188519 +66399 +805384 +1406207 +1677607 +2188641 +2440916 +887853 +2285943 +2334527 +1571860 +2090455 +280988 +2284030 +2302852 +178129 +887866 +2090395 +1068647 +198771 +2090433 +887740 +66431 +19545 +2065598 +2188527 +2042064 +1434557 +2426591 +2537063 +1571833 +1503830 +1095207 +19530 +19526 +887777 +2090422 +1767630 +397506 +1571820 +2860063 +2188560 +1834974 +2334509 +1156623 +2188570 +19552 +1406201 +2042058 +2870800 +1434548 +2860065 +2188495 +770475 +1434530 +19561 +2302854 +2515594 +904648 +2188525 +770491 +2188578 +1503855 +1677595 +972131 +1638731 +2188652 +1139827 +1477519 +1571868 +2860095 +178201 +2188668 +887812 +1503844 +2860035 +210689 +2870822 +1695833 +2188553 +2860038 +2302836 +2598422 +2860096 +1189232 +2658733 +1434584 +2395352 +2334556 +2658751 +1189236 +1477610 +1477617 +2723803 +210701 +1434607 +695273 +1571924 +1224419 +1571940 +1571943 +1477630 +2188869 +887924 +96443 +96441 +2598451 +904660 +2353491 +1879282 +2188751 +1720867 +2090480 +1016642 +2537071 +887903 +2188707 +887911 +1477589 +178263 +1571914 +1295870 +1434609 +1571906 +1638759 +2658756 +2188734 +178266 +1295876 +887958 +2395380 +2188739 +805435 +2188867 +2269317 +887879 +1434576 +2042078 +1571877 +1713450 +2188806 +2711989 +210703 +2188857 +887868 +1654330 +545963 +887966 +1905678 +244574 +2188849 +2188796 +178255 +502952 +1720874 +1737064 +2070004 +367362 +1224435 +2748486 +2598439 +887873 +1720872 +2395342 +1025080 +1879275 +1720893 +1434573 +1677610 +2334565 +1485398 +1016614 +19583 +887869 +1049636 +925559 +2188879 +770498 +2334553 +2188877 +1638769 +904661 +887927 +887939 +2723805 +805443 +2418552 +178233 +1434586 +1571928 +2188789 +2626343 +2276196 +2537082 +451990 +178219 +631448 +805419 +2188811 +1264428 +805441 +1406217 +2598465 +2276199 +66545 +1016628 +1030952 +1720875 +2188748 +1571888 +320428 +972157 +2188780 +2302874 +96453 +178275 +2188875 +1879280 +2188736 +2188853 +66517 +355745 +96445 +946313 +1571889 +1313389 +2334552 +19580 +1638794 +1278096 +1085451 +2188850 +430212 +2188876 +178212 +2414693 +2334575 +2188763 +1016664 +320405 +1879268 +631449 +2188754 +2188753 +1016633 +2188785 +2658730 +2418557 +430219 +2537090 +2188771 +1332251 +295993 +887935 +1016616 +66528 +1477623 +2368909 +1477801 +66723 +2353544 +210707 +2269420 +888237 +1638915 +178848 +888128 +2537102 +2188937 +281001 +888293 +2269380 +178461 +244641 +631705 +178411 +1016816 +178626 +281012 +1049639 +66617 +672575 +244601 +631529 +888149 +2269462 +1639097 +888258 +66670 +223416 +888033 +178659 +1879341 +320481 +2269636 +946318 +888040 +2188884 +888127 +66676 +66665 +888298 +631817 +1755866 +281049 +178579 +2269441 +2353551 +66848 +1477667 +631515 +1938396 +2269362 +1938397 +1846536 +672563 +178335 +888338 +1477820 +2414699 +716227 +2269434 +888235 +280994 +430220 +2269372 +1246675 +1016740 +178428 +178317 +2353549 +1204309 +631740 +66586 +2269668 +1477786 +1127827 +2353502 +2269566 +888296 +1264446 +2353510 +2018693 +1477676 +2658771 +2395399 +888038 +281048 +1434621 +1477662 +1477806 +341627 +1016717 +1755884 +2105133 +178678 +178705 +2269532 +178475 +1016833 +66753 +1639020 +2269430 +2269685 +178297 +2757343 +1204301 +178880 +1176470 +1016781 +1488240 +178758 +244627 +1344963 +244637 +1522205 +2269557 +178601 +96466 +2269678 +178700 +1938406 +2065662 +888336 +2279272 +210720 +349331 +2414706 +716217 +1224441 +1477682 +631511 +1684303 +1638918 +178532 +888050 +1295914 +946353 +66756 +1030961 +2269627 +1522232 +888183 +1295904 +1477811 +178654 +1477772 +631640 +2353505 +2188948 +1477822 +178588 +178702 +888035 +888243 +631741 +1477671 +2269617 +631688 +178530 +1654341 +361146 +2105134 +805448 +2065657 +1638863 +631790 +2353530 +631773 +1639082 +349342 +888253 +178548 +178718 +946346 +631568 +2269411 +2269423 +178285 +888339 +2269655 +2353525 +178301 +178760 +888217 +1344954 +178491 +2188965 +1571959 +178315 +281040 +631622 +178687 +1639032 +178657 +178374 +631653 +178329 +404626 +1948589 +1477698 +631610 +1905701 +1016734 +178837 +2269525 +66803 +2269392 +545991 +888220 +2065630 +631735 +1016751 +178316 +2065611 +770530 +1846542 +888044 +178722 +1639070 +888250 +1938390 +178747 +281005 +66790 +888317 +631587 +2269632 +1224443 +66751 +178515 +672556 +888121 +1638844 +178603 +888174 +2269437 +1639069 +2269491 +341638 +66773 +1042867 +888027 +2269631 +888316 +672594 +888037 +1938405 +631772 +66873 +178380 +66722 +1522206 +1477740 +631808 +1639062 +1204310 +631696 +1127841 +178388 +1016686 +2414713 +2269659 +1654343 +631588 +178798 +672562 +178716 +1477699 +1639002 +2188957 +66734 +178531 +2269436 +178432 +2515600 +281031 +1477819 +1127821 +631499 +2285945 +341630 +178762 +2269403 +1638939 +2269544 +631667 +178744 +2368919 +320459 +66674 +1638940 +2269471 +320449 +946326 +66681 +2269427 +1204300 +341623 +178808 +2269520 +178696 +2414703 +631643 +2188889 +66852 +716210 +1879338 +1477763 +672566 +178782 +2072060 +178538 +2269603 +1522199 +178449 +2353515 +1477770 +1477648 +2188914 +2188925 +178733 +672595 +1638991 +66657 +1127838 +2515617 +888105 +2188927 +2065618 +770518 +631631 +888018 +2353562 +1295889 +946339 +672568 +2368911 +1503874 +631719 +178861 +1042872 +2269487 +1477813 +178431 +178886 +178645 +178642 +1042877 +1264441 +631777 +2188921 +178607 +2414726 +1522221 +66840 +96464 +320458 +888334 +888176 +178554 +178293 +1042876 +887993 +178714 +1639067 +1639010 +2537104 +888134 +96460 +349348 +695276 +392596 +1639030 +2368921 +1938398 +1477787 +1755871 +672593 +631534 +1016742 +66696 +66698 +244598 +178393 +1805377 +1638843 +2269589 +888277 +2279268 +1938384 +244587 +2269468 +2070009 +888299 +178775 +888093 +672597 +888231 +888202 +1477752 +2719590 +2738676 +2748501 +888411 +1990759 +1395907 +632025 +1985888 +1922081 +2440933 +1295969 +1313425 +1367653 +2695685 +2723841 +631969 +631975 +1955020 +1962826 +631911 +2269690 +2695674 +1962823 +1296000 +672631 +2728319 +2269705 +888429 +631874 +1477899 +1477846 +1905705 +672649 +1767642 +2738679 +1295995 +2728341 +1948592 +1372268 +1639143 +631851 +2728350 +1016870 +1805384 +2738674 +1295992 +1367710 +631982 +1367664 +1985902 +1313463 +2738594 +1985913 +1376399 +1296017 +2712005 +2723838 +672678 +1376419 +2738667 +1985877 +2695647 +2728321 +2695671 +631955 +631881 +631838 +632003 +888427 +631937 +888363 +2738587 +2695710 +2728311 +631904 +631884 +672628 +672729 +632022 +1016856 +1016869 +2065680 +1955023 +1313396 +1477872 +1477851 +281063 +1978408 +1105918 +672730 +632015 +1296007 +1948617 +1313426 +672694 +1985900 +2695681 +1948600 +1948624 +1295944 +631992 +2712002 +1357668 +2695667 +2695676 +1313436 +178907 +631840 +178899 +66880 +1938411 +888399 +1395905 +2728365 +1639108 +1313476 +631984 +2695658 +2738608 +1376463 +631866 +2738563 +1367694 +1016879 +1376481 +1367705 +1313400 +2728366 +2695661 +2695702 +631896 +178918 +1372270 +2024311 +1016873 +672655 +1313458 +1313394 +2748493 +888367 +1705975 +733397 +1477916 +1016850 +1313478 +632020 +2712009 +1376414 +2728354 +1016883 +2860119 +2738643 +1990760 +1296020 +631924 +1295989 +2738597 +672690 +2065683 +1477852 +1969439 +2738562 +2695639 +1016868 +672676 +1969457 +631864 +672620 +1295988 +2695673 +672632 +672611 +1639128 +632010 +178902 +1016847 +1313422 +2695715 +631968 +1295980 +2695711 +2024333 +2695637 +2695679 +2748494 +1639123 +1477905 +2871038 +2090547 +1139837 +404634 +2870846 +1695850 +1357676 +2189166 +2843418 +546011 +1767646 +2808412 +2188988 +1695854 +2870904 +2188996 +2189119 +888436 +66887 +2598556 +1332281 +1503881 +1835000 +546025 +2808407 +2189162 +2065689 +1079964 +1805411 +546018 +2042130 +2843369 +2723849 +2008848 +1962841 +1406238 +761407 +2808404 +2189028 +654374 +925588 +2302905 +2090512 +546055 +2870917 +2870926 +1695840 +2860150 +1572018 +2860167 +2334612 +632029 +2757345 +1406233 +1296021 +2732047 +2598517 +1395911 +1695851 +632046 +2658774 +805477 +1990763 +2598522 +654396 +672746 +1962834 +2860160 +2302890 +2843432 +2302909 +2808394 +1695845 +2598506 +2001391 +1677620 +2189069 +2658775 +2537172 +888444 +2362145 +178920 +2189030 +1189274 +632043 +1406223 +888451 +1737082 +632096 +2598558 +178923 +2870897 +2871012 +96481 +1357699 +2065693 +1503906 +1737078 +1835023 +632045 +178941 +546090 +2843390 +2189062 +1879363 +2870864 +2871028 +1695848 +2006396 +2284072 +1879355 +2870978 +2189026 +2712034 +2188984 +1434652 +2302926 +2189130 +223422 +725454 +761409 +2188997 +1503928 +925596 +2090506 +2189148 +2042106 +546096 +1677616 +546109 +1278113 +632068 +1962829 +1189273 +546058 +2870889 +695278 +2440934 +546113 +1395912 +2598580 +805484 +2700842 +2362150 +2027156 +2090517 +2843397 +1663434 +2843382 +1978434 +1503923 +2495740 +1332294 +2712032 +972191 +2871002 +546044 +2189016 +2426616 +2018711 +1503920 +2090560 +904664 +2284067 +1879372 +2598557 +2870901 +546141 +1139841 +546087 +2395451 +805499 +632083 +1503904 +2598523 +1503896 +2723852 +2189099 +2189097 +385321 +725452 +2808424 +2070011 +725460 +1571980 +2302922 +1942741 +1278110 +2712022 +1278111 +2537131 +1278120 +2598542 +2870947 +2658783 +805486 +2843376 +2395411 +2870933 +654373 +672752 +452004 +2870861 +805470 +545998 +1677618 +725468 +2870878 +2090571 +2027154 +2860151 +385327 +1224452 +2870991 +404629 +2870958 +2843423 +632036 +2870997 +2843435 +2189071 +2334613 +546006 +2090573 +2018709 +1834997 +1079963 +2006399 +1948636 +546052 +2598554 +2871022 +2843391 +925591 +546093 +2189145 +733401 +19611 +725464 +1978433 +972189 +1677623 +805464 +2090584 +2042114 +2008843 +2302920 +2189063 +2870923 +1737096 +2395430 +2537154 +2302911 +385318 +546125 +888469 +972176 +725450 +925573 +2870999 +2395403 +2042104 +805483 +2090492 +1835017 +2871041 +2189129 +2537165 +2685464 +2440935 +2870979 +411936 +1357677 +1757967 +1835024 +1357698 +1372277 +2537130 +546135 +1383802 +1942720 +2302915 +2189023 +2692509 +632824 +1969542 +1949089 +546186 +2705665 +632103 +546242 +546180 +2692517 +1948671 +2705654 +1296115 +546178 +1296110 +2689682 +546189 +1296264 +672817 +632811 +1951780 +1955056 +1376486 +1278151 +1948979 +1986077 +1304533 +1296180 +632210 +1986199 +1962857 +672904 +2689769 +2712096 +632522 +2719621 +632613 +1313574 +2695934 +1296435 +1942819 +546234 +1278135 +1948681 +2723860 +1986119 +2738686 +2689924 +1313617 +1990777 +1986209 +2689639 +672926 +1948764 +632771 +1278167 +1278131 +1296216 +1951737 +1313510 +1296686 +2689688 +1990786 +2705663 +1978457 +632364 +1955079 +1278225 +1296838 +733407 +2689863 +2685497 +546188 +1344999 +1278139 +2695739 +672858 +1296556 +632242 +1296092 +633036 +1376502 +1296183 +1962848 +2695786 +1990776 +1948836 +2712047 +1296752 +2695802 +632343 +633113 +1948810 +1296512 +632213 +2712142 +1296245 +2728373 +2719737 +1296858 +632535 +1296054 +1296677 +2689758 +1948911 +632161 +1296803 +672953 +632221 +1278204 +672772 +632389 +2808482 +2689897 +1313735 +632530 +633096 +2705627 +632497 +632926 +2689768 +2712057 +672760 +632549 +672797 +1986112 +1948856 +633014 +632470 +2712049 +1296871 +1296717 +1296524 +2808459 +1951753 +546232 +1985993 +2719598 +2695918 +632603 +632155 +1986049 +1367757 +1948686 +1296325 +1948922 +2685513 +1985967 +1296038 +2689839 +1948871 +633081 +1296859 +1985938 +2689904 +1986252 +1985955 +1313701 +1313564 +1948696 +1955055 +1313495 +1986254 +2685519 +1986078 +632365 +1296134 +546159 +1296238 +632297 +632107 +1278127 +1948652 +632263 +672829 +2719629 +2689989 +2689640 +1296296 +1986161 +2808447 +2689641 +2018787 +2695949 +2689677 +2689896 +633114 +2738823 +2705666 +1313536 +1986017 +632485 +633139 +2689828 +632544 +2018731 +633029 +632552 +1296182 +1948889 +1296306 +2808431 +1296129 +1969465 +632579 +1357711 +2712181 +1986198 +2689964 +1296745 +1948848 +1949001 +546164 +2808539 +633153 +632628 +2712063 +1948716 +2808483 +1296705 +632507 +632508 +1296342 +632163 +2018755 +2712168 +1296072 +672833 +546168 +1948698 +1948849 +1296810 +632475 +2719730 +1986154 +1296784 +1296464 +2689823 +632555 +1948916 +1296835 +1313571 +632423 +632289 +1296199 +2689647 +654415 +1986014 +1313751 +2689971 +672834 +1296242 +1948909 +1986178 +1296235 +1296381 +2738714 +1986072 +2695922 +673001 +1357710 +2689643 +1332310 +632970 +1986240 +1296088 +1296612 +2689648 +632534 +2695911 +632332 +1969517 +1985973 +1278165 +1986219 +632111 +2018780 +1278159 +1296458 +2018750 +1942797 +1948906 +1313734 +632416 +1296660 +632670 +1296714 +632737 +632459 +672848 +632374 +672995 +1949026 +1949000 +1986147 +1995365 +632273 +632752 +1986021 +633067 +1969515 +1986093 +1296741 +632916 +1278179 +2705648 +546214 +632168 +1367771 +1995340 +2719705 +1942835 +546276 +633005 +672837 +1942810 +1986069 +2808460 +1278170 +1345070 +2712174 +1942792 +546148 +632792 +2719723 +1962858 +2705614 +2685504 +1948703 +1985942 +2738721 +2695770 +2689838 +2685503 +1296669 +1296268 +1376484 +2685514 +2689638 +1345064 +2689686 +1942791 +2712092 +1955094 +2738718 +673030 +1986090 +1942776 +632401 +632400 +2692518 +2808519 +632642 +1296527 +672925 +1313773 +1313521 +1296440 +2689939 +632874 +673028 +1278194 +632175 +1278228 +1985976 +2738771 +1296567 +672766 +1948984 +1296559 +1296237 +2808529 +632929 +632207 +1296879 +632653 +2689653 +2695867 +2712085 +2712060 +632715 +1986115 +1948745 +2719717 +2738818 +2685495 +1296162 +2689694 +1296329 +2689900 +1367729 +632915 +1278231 +1296832 +1978454 +2705631 +2738780 +1978496 +632736 +2719678 +2685479 +632301 +1278193 +1278169 +2738698 +632601 +1296546 +672886 +2808511 +1986241 +632312 +1955054 +1986068 +2719680 +1313767 +1296354 +1948763 +632238 +672942 +632361 +1296324 +632282 +546285 +1986031 +546264 +632593 +2689765 +1296786 +1345005 +2738756 +1296830 +632543 +733417 +632304 +632645 +2712155 +1296234 +1296614 +1986148 +1345078 +1296688 +1296345 +654403 +632808 +1313679 +1367781 +672855 +1296169 +2689766 +2689633 +2719625 +672959 +1313629 +1344985 +1296365 +1296222 +1948919 +1296074 +2719593 +1313632 +633162 +1296812 +2689840 +1955041 +632461 +2018765 +1313503 +1367744 +1969536 +1948646 +632422 +2695955 +632287 +1296156 +632703 +632420 +2695745 +1296776 +632735 +1367719 +2808433 +2808432 +546227 +1296770 +2738795 +632551 +2712194 +1948806 +1296782 +1296578 +1949017 +1296312 +633126 +1296645 +1942779 +1376504 +725487 +1955080 +1313681 +1986057 +632184 +2689928 +546209 +2719614 +2689764 +546181 +632739 +2712116 +1986206 +632546 +1376524 +632902 +2689944 +2689940 +632330 +672901 +632112 +546247 +2712066 +1986210 +1986126 +2719641 +2738776 +633053 +1313550 +632196 +2689834 +1985966 +673041 +2689795 +1296607 +1955078 +1313522 +632413 +2808541 +632997 +1296357 +1948777 +2719722 +632547 +1948731 +1296394 +2692497 +1332297 +1986004 +546176 +673009 +1296191 +2712138 +1332306 +1313738 +1313575 +1949080 +1995352 +1955052 +1296333 +1296334 +1296453 +1985933 +1978485 +1344984 +1296036 +1985932 +1313491 +1278155 +1296695 +1948778 +1296701 +1942783 +1296684 +2712172 +1296828 +1942818 +632324 +1296853 +1313646 +1278177 +632891 +2738725 +632353 +1296744 +1313724 +632315 +1345014 +632108 +632994 +632102 +2712156 +1296582 +1376490 +1313657 +672969 +2692505 +2719648 +1948712 +2692482 +632460 +1942795 +672954 +672895 +1995374 +2695753 +672896 +632639 +632743 +1278140 +1278245 +632302 +1357713 +1296344 +1948859 +1345053 +2070018 +695318 +1477951 +2189265 +1224468 +2302957 +725504 +1922133 +2189345 +2598604 +253893 +1224459 +2658854 +1879386 +2189237 +2189295 +244649 +972210 +96521 +1388988 +178984 +1990803 +546354 +1572055 +178966 +494485 +1068651 +300814 +1922098 +888484 +633220 +673051 +1978503 +972212 +888505 +1278280 +1388984 +1737108 +925610 +1477964 +19621 +2418598 +2189256 +2418586 +2189226 +2418584 +633221 +1477969 +925604 +2042141 +2808553 +1224461 +1383805 +244654 +1042880 +178974 +546321 +1805418 +2018802 +2189277 +2495754 +1922110 +2658808 +805518 +888507 +673057 +2395460 +1503934 +1372296 +673061 +1224457 +1962875 +1224491 +633196 +2189294 +546335 +2189272 +1127845 +2395518 +1879416 +2658817 +2189250 +1296895 +1978513 +1922105 +695321 +1639178 +725490 +2598652 +2418588 +2395483 +1879394 +2269712 +1639191 +1345082 +2700869 +2495762 +1296897 +2189283 +1278286 +2189289 +546352 +695301 +888543 +253894 +888514 +2495747 +805527 +2189216 +2189317 +1905710 +1922090 +1879383 +2334661 +2334665 +2395461 +805538 +2658789 +1737119 +320492 +633213 +716266 +546337 +2395481 +1805431 +1224485 +2395459 +2598633 +805543 +2395478 +481412 +1332329 +1522268 +1388985 +1785347 +1639165 +1016897 +2658822 +1477965 +1409989 +1016910 +2723877 +320496 +2598603 +2598623 +1304555 +1938423 +546357 +178954 +1805429 +1879384 +888540 +1075694 +888556 +1278276 +1278273 +178973 +1737102 +2189228 +2537202 +1016894 +633200 +1388990 +1951783 +2705712 +1942845 +1654350 +1278275 +2737003 +223431 +1737116 +2395517 +2189257 +2269730 +1648862 +888502 +1296894 +2598626 +2189223 +1477955 +888520 +2269731 +1383804 +1095222 +633186 +1969567 +2495745 +1345089 +385334 +96517 +1990802 +546363 +1938431 +546401 +2189354 +281100 +633267 +2395527 +2395572 +1278298 +1332347 +2860209 +888594 +2598748 +546402 +888573 +2495776 +633282 +1737137 +1639258 +2598730 +2598669 +2495783 +2189386 +1016920 +2658904 +1737135 +1372298 +888568 +179052 +972237 +2395547 +2712211 +2024344 +1639233 +888595 +1996737 +2712226 +546422 +1522274 +2334691 +546406 +2860185 +300821 +2189442 +546441 +2269742 +1879443 +2090634 +1639248 +888583 +179014 +2598685 +2495773 +1304560 +1938429 +2189400 +673073 +1383807 +1296927 +2189360 +1835034 +2189349 +2395549 +2598757 +244662 +2695962 +2334693 +2719742 +1224497 +1522272 +2860190 +633261 +695342 +2065701 +179049 +2189362 +2712208 +2860175 +1042886 +1477987 +888598 +1757976 +633286 +1639234 +2537211 +2090637 +695335 +2395539 +1332344 +805572 +281096 +654452 +805577 +1648872 +972233 +2860197 +1572143 +1879456 +2712212 +2065702 +2598681 +1313787 +1085476 +2712228 +1522278 +2395542 +1951791 +2395581 +888590 +1042889 +673083 +888579 +281105 +633260 +2712236 +546378 +1378590 +281095 +1030989 +1477992 +1648866 +1737140 +244658 +633266 +695327 +805585 +2598671 +925615 +1572125 +673069 +1016948 +1805436 +2705717 +2537223 +96545 +2105146 +673082 +2537239 +1962898 +1332355 +633257 +2712232 +2598702 +2740397 +2189418 +1879457 +2353566 +633271 +2414739 +1922137 +546423 +546405 +2808586 +1016923 +1434702 +2658900 +2598665 +179040 +96555 +96558 +1042890 +1016930 +1357729 +1388992 +1477975 +2395575 +2537227 +2658869 +2860206 +2018804 +2334708 +1986264 +1572095 +2537225 +1572097 +281102 +96561 +2189402 +946381 +66906 +1016942 +1639230 +96535 +2712214 +2658924 +2189426 +2189408 +673085 +2658883 +2808578 +1755915 +2658881 +1572142 +2712210 +2658928 +2626351 +546388 +633308 +1654356 +1737145 +2732058 +805568 +2598743 +2705716 +1016958 +2495780 +2395576 +1278304 +2598873 +1372305 +2189505 +1434727 +2495826 +1805444 +2362181 +1962921 +546498 +2598852 +2090670 +2537290 +1332416 +1278384 +2189566 +2189617 +1713498 +2598836 +1879507 +1357764 +1805456 +805613 +1978539 +1695891 +1278314 +1278323 +1835041 +2418621 +2302983 +2598794 +1572197 +1278382 +2658945 +2189560 +2334740 +253906 +1332370 +1389000 +1572180 +2334795 +1572203 +1395915 +1357744 +1879496 +2440956 +1572175 +1189298 +1278375 +1713487 +1572151 +2189506 +2189581 +2189514 +2598817 +1572208 +1255705 +2692526 +546466 +1805440 +223465 +1996741 +2189609 +695352 +2189586 +1278316 +2598909 +1383808 +1332374 +2537286 +2362201 +2700884 +1922171 +2362200 +1879469 +1648875 +1942851 +1357757 +1434752 +1133694 +2090680 +1434738 +2495797 +2537279 +2189547 +2658934 +2740408 +2302971 +1572181 +1389011 +1879526 +1278366 +2334779 +546502 +1304582 +1304577 +1278350 +1372312 +2598965 +1255697 +2334800 +96567 +1278313 +1095228 +96565 +2537251 +1879509 +2440955 +2334789 +2495811 +2090644 +1068657 +1879463 +2189535 +1835039 +2027160 +2189516 +1879536 +2495810 +2395596 +1572194 +2495812 +2598855 +2189446 +1434755 +452017 +725517 +2189597 +1879482 +2189627 +2658954 +2362206 +2395629 +1805460 +1695896 +2598780 +2189499 +1278369 +1951800 +2362188 +1648879 +2001401 +1434777 +2189553 +925623 +2658978 +761419 +2189577 +481416 +546506 +1942850 +1922168 +1757986 +2189462 +1737165 +1357750 +2334794 +1922159 +1163696 +805617 +1389010 +2685531 +1278380 +198806 +2598910 +1805445 +1434748 +725526 +2302975 +2334784 +2024347 +805624 +546490 +1357743 +2334777 +2598977 +2189635 +96562 +2189476 +1922162 +2395592 +2395615 +223461 +1572189 +2598979 +2090657 +2700881 +2537280 +2843459 +2395619 +2189580 +1879511 +546496 +2658947 +2440951 +1879518 +2598891 +1922146 +1737168 +1304595 +2395622 +1189295 +1978562 +888621 +281121 +392629 +716274 +1737192 +1572248 +1639324 +1478047 +244670 +452023 +1434802 +1755935 +1478032 +1879546 +2269781 +1639273 +1737183 +1737184 +972266 +1962943 +1572273 +1478007 +2065705 +805664 +179080 +1478042 +1434821 +2189667 +1639277 +2105149 +1017013 +2090696 +633396 +1705995 +1278394 +2395657 +1478065 +1879565 +1757990 +805669 +179126 +1962956 +633353 +2599095 +2395708 +1376553 +1572243 +1434804 +2599003 +2598990 +2334808 +2599002 +888724 +2090703 +2042216 +2279277 +2599060 +2008864 +1127868 +1572247 +2189772 +2723906 +1648889 +2418628 +888618 +179123 +888628 +2395668 +1478062 +888634 +1978557 +2395751 +716278 +1720923 +633399 +888675 +1016998 +546523 +1372320 +1978547 +2395705 +1713511 +946393 +2395679 +546582 +2269784 +2659021 +1755937 +673098 +673104 +2599120 +1942858 +2598982 +633327 +888639 +2712281 +805666 +888665 +546524 +2719745 +1345112 +1357776 +1879576 +2189783 +2042195 +96607 +633334 +1684314 +1503995 +2189769 +546534 +1639272 +2395664 +2712246 +2737017 +2189761 +1969576 +1296956 +546535 +716279 +392628 +2269769 +1016989 +1879567 +1654367 +1503991 +2659059 +1962942 +1503985 +888696 +2395661 +1434780 +546586 +1522282 +2599114 +2090700 +888630 +1478036 +546522 +1332440 +1639328 +888638 +2712254 +633351 +392627 +2362227 +1255740 +2659065 +2414750 +2189637 +888647 +367385 +1016999 +2757364 +66919 +2189721 +179113 +2006411 +1995377 +2189670 +2723921 +2659067 +1255724 +633397 +179119 +1016972 +2659005 +1434806 +179124 +1042907 +633338 +2362225 +633322 +1357783 +546514 +1332435 +1189302 +2599046 +19642 +546585 +2189643 +733427 +2395676 +633335 +367386 +2700892 +2599053 +633350 +888688 +66913 +1478019 +1478035 +2189714 +1332446 +2189639 +66930 +805636 +546579 +2658999 +633364 +1720919 +1755938 +1105927 +633349 +546515 +716275 +349364 +1695898 +179108 +2334822 +281114 +1639283 +1278406 +2659088 +1042902 +888657 +2189715 +2659028 +2599078 +1755933 +2659074 +546539 +2659014 +1639296 +223467 +805680 +888631 +2712280 +2659039 +2189786 +1389017 +1332426 +1332444 +1357790 +1990827 +2269763 +2189780 +2042193 +2757367 +2276216 +2659048 +761421 +1031002 +1969581 +2712259 +1572275 +2732076 +805715 +2001415 +2395776 +2189874 +2334867 +2334851 +2395769 +2334875 +2599255 +2189902 +1504008 +1713531 +1835072 +546603 +2189897 +2042224 +805740 +2395773 +546670 +2537368 +1922191 +1990847 +1332471 +2537334 +546617 +2418647 +2189862 +1572296 +654490 +805722 +2042223 +2740426 +1389023 +2659106 +1978570 +2599208 +2334872 +546658 +805708 +2189825 +2001410 +1572308 +1572282 +2740435 +1278437 +2712282 +1572299 +2001403 +2362235 +2599161 +2189878 +654488 +2090723 +2599189 +1332448 +2395767 +805725 +2599226 +2732087 +2537336 +725546 +2042229 +1978590 +2599276 +546589 +2395774 +1835074 +2732079 +1504013 +2732085 +2737019 +2189847 +546592 +2599206 +1572293 +1978605 +1278438 +2495856 +1357805 +1942870 +1962962 +2599283 +2001407 +2334886 +805743 +2334859 +805765 +2748521 +2395753 +1504007 +1278443 +546631 +2418654 +2495868 +2334880 +2737023 +2495857 +1962968 +805702 +96621 +2495867 +2659128 +2362232 +546654 +2189906 +2740427 +96630 +805711 +2303005 +2189812 +1737206 +2090740 +1922181 +2090735 +1648898 +2659105 +2599164 +805727 +2303009 +1357808 +1278452 +1572290 +2189807 +2042220 +2001416 +2748520 +972280 +1978613 +1879599 +2189896 +2599142 +2362231 +1114933 +2090719 +546663 +1031009 +1879582 +1372334 +1978601 +546611 +1879601 +2732088 +1990840 +2737020 +1345118 +2599277 +2189883 +2006412 +2599159 +2189861 +1951819 +888735 +1224512 +2362263 +2190046 +2418668 +2334986 +1963028 +2732106 +673113 +2090763 +1357811 +1434848 +546673 +2189994 +546772 +546690 +2599496 +2090791 +2599517 +2090755 +2712407 +2090752 +2743537 +2065721 +1378608 +1962980 +546738 +2723960 +2190082 +1963012 +2659160 +2303043 +2189937 +1978645 +633462 +2659176 +1572349 +2712309 +2659153 +2659162 +2042270 +2740453 +654513 +1835091 +1962997 +2712341 +2395803 +2843461 +2712377 +546795 +546798 +2189967 +1978631 +2712386 +2090761 +1978655 +2190096 +2871052 +1357841 +2537424 +2537521 +1434843 +1204331 +2712337 +546720 +253945 +2395806 +2712434 +1278483 +2362272 +1572330 +2599413 +2808600 +1478075 +2700929 +2190109 +1189312 +1504018 +2018830 +2042263 +2537471 +2006419 +1713532 +1978621 +546760 +2042244 +2418661 +2334906 +2190091 +2740452 +546742 +2334985 +2737047 +2189999 +2395891 +1990888 +1942874 +2189991 +2599497 +1963014 +2190090 +1572361 +2659142 +2712313 +2599355 +1357858 +2190164 +2303024 +2334989 +1949104 +2732090 +2190058 +1434882 +2395881 +2042241 +2418663 +2284098 +300835 +1805471 +546736 +2537438 +2018828 +2303041 +2334932 +546780 +2334901 +1357839 +2418673 +1879621 +2732098 +1434853 +2743544 +1963004 +1990876 +1357814 +1224519 +2190144 +2190118 +1357824 +2723968 +1031016 +2395824 +2190142 +2599444 +2362273 +1224508 +2712416 +2189990 +805780 +2599324 +1357854 +1372341 +1879632 +925648 +2732093 +2395831 +2090764 +2712433 +546799 +546732 +673122 +1962993 +1278467 +2732123 +2599408 +1255751 +1304616 +2659175 +1031018 +2395815 +385367 +1905720 +2395834 +2495880 +1978644 +1357834 +2189978 +2006423 +2757393 +2808612 +2740454 +2723954 +2732094 +2732092 +1737223 +546768 +2712330 +2740444 +2537477 +2659170 +66940 +2495875 +1951839 +1978625 +1938433 +2599541 +2042245 +1737221 +1879614 +2599523 +1978640 +2737024 +1434875 +2659169 +546757 +546785 +2659182 +805767 +2395830 +2334959 +654521 +2712332 +1990872 +2685549 +2001423 +673118 +761430 +2723973 +2426628 +2303033 +2189993 +2748529 +1990883 +1922200 +2495879 +2732110 +179157 +1835078 +1942890 +2599477 +2712427 +2712350 +2599427 +2042261 +1372348 +2042266 +2599435 +546766 +2712308 +2334914 +2599345 +1332500 +2495899 +2495902 +2090827 +96646 +2418669 +385352 +2395883 +1955107 +2659138 +2190040 +2537478 +2689994 +2537410 +1942878 +2737029 +633474 +2303028 +385357 +2757384 +2599429 +2537518 +1095232 +805769 +2537429 +2712316 +2712390 +2537458 +2712374 +2190084 +385374 +1942899 +2712428 +1978617 +2303050 +1163702 +1224510 +2871046 +2190033 +2334916 +2599321 +1478101 +1357819 +2190212 +1357878 +546826 +1879665 +1879650 +1278500 +367390 +546828 +2659194 +2537538 +1504022 +281125 +1434885 +2659193 +725564 +725570 +1572394 +2190199 +2757398 +805802 +2732128 +1304619 +805797 +1572379 +2190184 +2748549 +2723999 +1332520 +367392 +1942901 +2517666 +1357866 +972302 +1278520 +1434886 +546816 +1372355 +1951847 +1835095 +2303057 +1278511 +1031019 +2018838 +2395909 +2599557 +1572373 +1990891 +546839 +1648904 +1296981 +1189317 +2659185 +1332515 +96652 +1504021 +1304621 +2190186 +2748551 +972296 +2659192 +1130566 +2090833 +805790 +925652 +2335000 +695390 +2070040 +2190233 +1963050 +2495931 +1478106 +908931 +96670 +350049 +1434920 +1434915 +19662 +2008873 +1963052 +1434922 +1434942 +546860 +2042320 +2700953 +2599625 +972332 +19655 +2495927 +1079980 +2090852 +1434911 +1879681 +546856 +2335040 +2495948 +2705721 +2190364 +2700952 +350054 +805810 +925664 +1835109 +1434930 +1737233 +1332530 +2303072 +2190350 +1737241 +1406272 +1572410 +2537551 +2042292 +972310 +2395956 +1434910 +2659216 +972329 +2495928 +2190326 +2426631 +2042316 +888761 +350062 +2440986 +546868 +805824 +972315 +2190225 +2495963 +1434927 +1978670 +2440984 +761438 +2659228 +2090855 +2537542 +633510 +2659230 +1056533 +2190237 +1172761 +2395946 +1088172 +925659 +2303067 +1296982 +2599661 +1572400 +2495941 +805821 +2303073 +2190328 +546853 +2190321 +1942908 +546861 +2190232 +1085481 +1949114 +2659218 +972313 +1963046 +2190272 +1879673 +1163709 +1572421 +2599658 +1572405 +1478107 +2190296 +1189327 +2190254 +2303062 +2395942 +2006430 +2712449 +805839 +2659231 +2008871 +2190267 +1572411 +2190303 +1684315 +2335026 +1434931 +1504030 +253962 +96665 +1189323 +1095236 +2700950 +2599627 +2190354 +392632 +805835 +2190374 +2599638 +2537554 +888759 +2090854 +502981 +888758 +2335049 +1163708 +1332532 +2335051 +2190445 +2042351 +2843603 +2599715 +1572448 +2843606 +2843580 +2395965 +2335052 +2599690 +2303083 +1978690 +2743548 +546934 +2843562 +1978691 +546939 +2843501 +2537586 +633518 +1504039 +695410 +2757410 +2659251 +1978688 +1332549 +2537577 +2024363 +2843579 +546930 +2843482 +2724016 +1990904 +1278562 +546945 +2685559 +2042348 +546936 +1951868 +546923 +2303095 +654540 +725586 +1572452 +972357 +2537591 +546888 +2712473 +546929 +1805482 +2712481 +2692542 +2599713 +2843593 +1835115 +2090893 +2190428 +2599671 +2303089 +350091 +2843557 +1996752 +546921 +2843554 +1224532 +2843491 +2843589 +2599696 +1485437 +2190423 +1504040 +1031030 +2042349 +904676 +2843577 +2008878 +633521 +2599679 +805864 +2724018 +2599708 +2843488 +2843494 +2190408 +350076 +2748556 +1504041 +972346 +1922208 +546892 +2843547 +1434977 +925677 +1737249 +2700957 +972353 +2843575 +2843604 +2090895 +2190386 +1835117 +1978694 +1224528 +452039 +2190411 +2599714 +2042356 +805865 +2599693 +2090891 +546894 +1434967 +179194 +2599890 +2269796 +2871058 +1224557 +2362306 +1409997 +1079984 +1372376 +2190483 +2712551 +2353580 +2395997 +2740507 +1278582 +2414757 +2599763 +96696 +1085487 +1572468 +1963094 +2724032 +2090923 +2599812 +2719749 +2537638 +654545 +1755957 +2418691 +1522304 +546998 +2712561 +1572515 +2537655 +546958 +1478149 +1278588 +2690002 +946415 +2190542 +695422 +1978720 +2599828 +66957 +2418688 +2599748 +1949123 +1648913 +1978725 +2871063 +2599842 +1246697 +1478120 +2732165 +1478121 +1639346 +1357913 +96692 +1434988 +1504063 +96680 +972366 +2090918 +2335098 +1085485 +1088173 +1713549 +1297001 +1648915 +1114945 +1572475 +1905725 +1755952 +1332564 +888827 +2537619 +1963068 +2685572 +2006447 +2712518 +2599848 +2105151 +1978755 +2700965 +2599749 +972372 +2871067 +2070043 +392639 +2712501 +2724030 +2537666 +805917 +2190481 +1478148 +2860216 +1367806 +2724038 +2440998 +1978745 +2743553 +2537641 +2599871 +1278596 +2042357 +2537660 +2599740 +2599897 +2537689 +1114943 +1255810 +633543 +2740521 +1969586 +2335077 +2659262 +2712509 +2626359 +1737271 +2190464 +1297006 +805919 +2599728 +1435013 +1264463 +2599852 +2190525 +2537633 +1332601 +546989 +1095243 +1572512 +1435016 +2418690 +1332583 +1255818 +2395996 +946413 +2190532 +2414756 +2537678 +2335074 +1304625 +1278577 +1278598 +888791 +2740502 +1978741 +1357920 +2018853 +1639347 +770567 +1224541 +2537626 +341662 +1572503 +2537682 +1127876 +972361 +925690 +2724037 +1434983 +1255797 +2685567 +179204 +1969587 +1879736 +546956 +2757421 +2871082 +1031039 +2700967 +1879730 +341665 +2599878 +1963089 +1478155 +2599870 +2871061 +633525 +1332588 +1478146 +179198 +1372372 +888811 +733430 +716282 +546969 +2757418 +2440995 +179183 +2599761 +2599752 +2018858 +2190475 +888837 +179181 +2599873 +2335103 +1376562 +1156641 +2724048 +1297019 +1572480 +2659281 +1435005 +2599883 +1406276 +2599863 +341669 +1963070 +2018857 +1963071 +2871062 +2599746 +341672 +546984 +1406282 +2495989 +1357917 +2740525 +2599754 +2537648 +1224547 +1478150 +1372374 +2732156 +2599866 +1255804 +2659268 +1296990 +972362 +1478164 +888815 +1648909 +1879706 +2808628 +2830711 +2808719 +1031044 +179217 +2847923 +2843763 +96713 +2830770 +2685573 +2418758 +2830554 +2830607 +2659386 +2844041 +1224560 +2027168 +2843913 +2659391 +2844063 +2190618 +1963106 +2808647 +805952 +2843624 +96706 +2830680 +2190621 +888845 +2808684 +2844134 +2808631 +2847868 +2830625 +2843672 +2659406 +2830531 +2843897 +19687 +2847883 +2190590 +2844014 +2830732 +2844092 +96726 +2843676 +1017070 +2190600 +2808715 +2844083 +2843929 +2830606 +2844057 +1990924 +2844135 +2659384 +761457 +2844151 +2599906 +2808651 +2659366 +2830559 +1737276 +1942957 +2843634 +2659404 +2843911 +2843687 +2843686 +2418734 +2844029 +2830691 +1372391 +2830730 +2418739 +2844137 +281134 +2808689 +2844022 +2659305 +2843907 +2830610 +1031045 +2335123 +2659322 +2808634 +2844141 +972409 +1278612 +2190568 +2190596 +2843931 +2830662 +2847878 +2626362 +2830752 +2830677 +2830637 +2844145 +2830690 +2659420 +2830686 +2830747 +2808682 +2847876 +2830506 +2659314 +2418745 +2808724 +2659410 +2335114 +2830753 +2276241 +2847902 +2843697 +2808660 +2844049 +2830676 +2276239 +2844058 +350100 +2830640 +2659347 +2830571 +2335117 +2190566 +2843666 +2659286 +2843869 +2808685 +2830729 +2190598 +2830582 +2808642 +2190563 +1504075 +2843909 +2830724 +2843745 +2418732 +2847884 +2418761 +2830692 +2843854 +253968 +805957 +2843981 +2190565 +805928 +2090944 +2830575 +2843678 +2418741 +96719 +1737280 +2830698 +805920 +2843995 +1737287 +2843657 +2847898 +2843961 +2847925 +1648928 +1963099 +1942962 +2843965 +2808695 +2830600 +2659371 +1737286 +1304632 +2659321 +2335143 +1922252 +2496001 +350131 +1572588 +2600062 +2712578 +2190705 +633580 +547035 +2737075 +1278649 +2537695 +2740530 +1332634 +2190736 +2599949 +2190746 +1677675 +2737077 +925708 +452061 +695433 +300844 +2600053 +1406301 +547064 +2441004 +1278634 +2659453 +2496004 +1922229 +2600000 +2659482 +2659465 +2748583 +2362321 +2659474 +2700985 +2712567 +1737315 +2008880 +2190643 +1963112 +452045 +805973 +547028 +1713574 +2190808 +1406300 +2042366 +1278654 +2042368 +1278620 +2042385 +1189333 +2599956 +1922216 +2335157 +2599935 +2042367 +2303114 +1572574 +1922210 +1572551 +1357936 +2600069 +2537743 +1504086 +1332616 +1978770 +1713566 +2737078 +1572558 +2599978 +350102 +2700981 +1504083 +2190821 +1133699 +2396074 +2190822 +2396083 +1805496 +2190728 +1737303 +2396085 +2599925 +2190649 +1504088 +481425 +411944 +1332642 +1278616 +1278668 +2599944 +1435034 +2738839 +1572596 +1572586 +2659470 +1835135 +2537744 +547025 +547065 +2303110 +2090976 +806008 +2599932 +2537748 +1224565 +2418774 +1572598 +2537720 +2190766 +1278674 +695438 +1031054 +1922235 +1922244 +1922243 +1835136 +1357931 +2396034 +2600060 +1031052 +350116 +1648944 +1278676 +1922237 +547033 +2042374 +806028 +2692549 +1922227 +2496010 +1713572 +2008882 +404638 +1278663 +2659489 +2190633 +1224568 +1332624 +2190727 +1879790 +1942970 +2090963 +547043 +1189335 +1278661 +2396103 +2190682 +1572550 +2190667 +1713561 +2190702 +2090949 +806019 +547021 +1922225 +2396097 +2712574 +96730 +1990928 +547058 +1963119 +481435 +2191150 +2191098 +2191117 +972495 +481463 +2830792 +2396254 +2335244 +2335277 +2191225 +1639413 +806096 +1332683 +547293 +2692556 +1504136 +2335253 +2418803 +223503 +2659542 +1978812 +281170 +2830779 +2191267 +725630 +806132 +1978808 +1278688 +1114957 +1922255 +2091044 +1922268 +1805505 +2190870 +2191156 +2600208 +547099 +2396215 +972455 +1224593 +344758 +1639393 +2600295 +1376568 +2191096 +1572725 +411989 +2090995 +2396226 +2757450 +244684 +2600306 +2537770 +654577 +695478 +2335222 +2537804 +2757438 +2496056 +806060 +1357953 +1943008 +2191159 +1278700 +2335212 +1572741 +2600230 +2659519 +2042402 +1990947 +1572694 +96790 +1572668 +2659551 +1879798 +547077 +2600161 +2537787 +888857 +2659576 +2191131 +547224 +96760 +1879837 +2191097 +2191160 +2600225 +1572623 +1357972 +2012786 +2701018 +2724092 +198818 +1737332 +1130581 +1435110 +1963134 +411988 +2600265 +1978816 +547337 +2600124 +2396263 +19762 +2600291 +972527 +1990976 +547152 +96883 +1835149 +198826 +1085521 +1879804 +2191216 +972464 +1922271 +1278682 +547331 +1278715 +1478172 +2191129 +2420670 +2685582 +2600176 +972511 +2600304 +2600245 +2420668 +2600209 +547295 +633603 +96834 +2191047 +2600113 +725617 +2191265 +481440 +2701015 +2659597 +2091036 +1357949 +19725 +2496023 +806045 +2191271 +2190877 +972541 +96786 +1504134 +96892 +179289 +654574 +96794 +96859 +972448 +547242 +179229 +2190863 +481461 +972470 +695501 +1639397 +1572619 +547188 +1224591 +1713582 +972507 +412006 +2659525 +806131 +2335205 +1978805 +96906 +1017106 +1978821 +2537829 +633611 +2396309 +1031068 +1130578 +2600296 +925745 +1978815 +972469 +2600132 +2700989 +2600159 +19739 +452086 +2191017 +695445 +1572608 +2659562 +2496080 +2659540 +1922310 +2335301 +2396124 +2191012 +2070049 +1095258 +2600213 +2191094 +2418805 +19711 +1990949 +2757432 +2191114 +2190830 +2303162 +547313 +2496071 +1572672 +547193 +2659611 +2190983 +96904 +2190949 +96810 +2335199 +2042415 +547342 +355752 +2335248 +2740545 +972471 +1996757 +547178 +2396122 +19737 +2191260 +1677683 +481428 +2847944 +179235 +19731 +1130602 +2191049 +1990952 +1572743 +2091042 +1435127 +1435151 +2191103 +2757435 +66978 +2191163 +547120 +2537849 +1395918 +2008889 +547255 +2600129 +179299 +2335223 +547229 +2537838 +2190995 +1572606 +19744 +547234 +972524 +2335361 +2701013 +96852 +1068668 +2191028 +2659579 +2426638 +2600148 +2190935 +2600109 +695508 +1922304 +452099 +481470 +1478180 +654578 +972521 +1504093 +2191077 +2724082 +2190926 +1224603 +1042924 +2362332 +1572615 +1572685 +1805518 +1127885 +2496025 +2830795 +1572616 +1737346 +344757 +179248 +633618 +244689 +96833 +2190862 +2496054 +481447 +1737337 +179227 +1572661 +1879815 +888868 +1943009 +2740544 +2537793 +1189353 +1835165 +547187 +1805522 +2091053 +1922262 +96868 +244680 +452089 +19774 +2191218 +1017114 +2303139 +1435098 +1278705 +2659561 +2024377 +2600096 +1017098 +1017111 +2600279 +411999 +1758005 +2191014 +972468 +1572691 +806050 +1805532 +19784 +2190931 +19755 +2191019 +2191202 +1130585 +2659595 +2418778 +1978820 +1278717 +244678 +1695926 +481494 +2600197 +1435155 +1922270 +2685588 +1017095 +972478 +633588 +481448 +19719 +361160 +96923 +2335352 +2091019 +1978834 +179276 +547280 +2600091 +2418816 +2537821 +281162 +1879842 +2600233 +1963147 +2659620 +2090996 +547155 +2190952 +2712628 +1278711 +2418784 +1297031 +1695924 +411998 +452098 +2537813 +2190908 +1017087 +925733 +19777 +2396116 +1677682 +2600236 +2091003 +1478182 +2190882 +96747 +19763 +2396299 +1942993 +2396152 +96882 +2396212 +2191144 +1951893 +1435087 +2712597 +1922298 +972498 +2191011 +1572643 +481495 +2190876 +2335348 +1435119 +2191003 +2335207 +2496042 +1713583 +96938 +1737338 +2335373 +2659543 +1990983 +1068665 +2335334 +2712624 +1332674 +2396252 +1224608 +1224578 +925727 +66972 +972442 +2396126 +452103 +2042396 +1648949 +806126 +1042916 +2191045 +1978813 +2191080 +2830787 +344769 +2418786 +1224587 +2335206 +1835152 +1085498 +2701022 +1572670 +2701009 +2191025 +547139 +2191223 +2191266 +2191251 +344756 +2600158 +2600217 +2757443 +96842 +2191072 +2600172 +1224576 +2600211 +2335229 +1357952 +654555 +547137 +2269808 +96781 +1835168 +2191235 +2701000 +2190969 +2701031 +1478187 +633645 +223535 +281172 +1572744 +633639 +2732179 +1478190 +2626365 +1879852 +2191285 +888901 +1879851 +633644 +452153 +452149 +2191286 +380118 +1990989 +547355 +806133 +2537867 +1835172 +1737351 +2712644 +1978841 +1278720 +1435161 +1086667 +1572753 +1478189 +96958 +972544 +806138 +2600310 +654581 +2600321 +2335374 +547351 +2024394 +1572747 +888895 +1572754 +2496086 +888902 +481502 +1504142 +2701032 +2303173 +1978838 +1755968 +2712638 +2537874 +2728402 +547356 +1835173 +806159 +2659655 +1805547 +2335435 +1572792 +1572769 +2659659 +2191363 +1835186 +806188 +1978851 +972561 +1996760 +1278747 +2303199 +2600373 +1879863 +1332722 +547417 +2496143 +2335402 +1713599 +1978843 +2042444 +1572759 +2659674 +2191317 +2191328 +1278738 +2335397 +2600367 +1879899 +2091085 +2070058 +972547 +96968 +972580 +2441019 +2600368 +2396361 +2659672 +2496105 +96971 +1572783 +725641 +2335427 +2600371 +2396340 +1304655 +1572776 +654598 +547371 +2418821 +2191346 +2070067 +547404 +1879889 +2600401 +1963174 +2496089 +2191416 +1767671 +2496093 +2600338 +2091066 +96996 +1572767 +96997 +1304657 +2600388 +96986 +806170 +1835196 +2496119 +2091096 +2191364 +806161 +1114972 +654600 +1879900 +1951919 +1767667 +2600395 +2070059 +19797 +19794 +2396342 +2600405 +2191327 +1435166 +1879860 +1504143 +2600375 +2191337 +2070061 +806169 +2362361 +2600372 +2600349 +2303176 +806174 +972568 +2537880 +2362363 +2396370 +2659686 +547391 +2600351 +1504151 +2600393 +1951920 +96974 +2396355 +1737358 +2496092 +1504146 +2191343 +2600410 +1358004 +547398 +96975 +1951918 +1879903 +1781124 +2600424 +2659732 +547453 +2191444 +2659764 +2496188 +2008908 +547444 +2600465 +2600526 +2600426 +2537971 +2600568 +2191490 +2600487 +1963216 +547452 +344788 +2191527 +2191590 +2191585 +2396398 +2659753 +2191667 +2018887 +806242 +695534 +223541 +2600472 +1278810 +1758021 +1504163 +1835217 +1278789 +1879920 +2362367 +1522316 +300869 +2008920 +1224632 +1278834 +2070086 +806256 +300868 +2191515 +1278831 +1572804 +2191662 +2042494 +2191617 +2396393 +1572818 +1435198 +2091160 +1114986 +1435212 +1278764 +2191607 +806203 +2303220 +2600428 +344782 +2279870 +1435220 +1278778 +2191492 +2600479 +2191433 +2757460 +1504164 +1224620 +2600419 +344771 +2724100 +806237 +2191586 +1189360 +97035 +2362373 +1278835 +2284126 +344793 +2091168 +2537933 +1189365 +1068675 +1713611 +2191595 +1805561 +1139847 +198844 +198842 +1835206 +1278811 +2091115 +806234 +19803 +1224639 +1189370 +2191637 +2701055 +1695950 +1737390 +2537952 +344780 +2191571 +2692574 +2396445 +1278765 +1278816 +1189364 +806230 +1879916 +1224641 +806212 +2659770 +2284133 +1835225 +2600431 +2701053 +2042496 +1435225 +2496150 +2496180 +2191645 +2701054 +2284125 +2303226 +806227 +2600518 +1278757 +1758030 +2757465 +2496206 +2600496 +2008907 +2659735 +2012795 +2396389 +2600489 +1695946 +2496184 +2191443 +97014 +1805565 +1713616 +1805557 +2396423 +2600412 +1389054 +2757463 +2284127 +1922339 +1963215 +1278815 +2362407 +1189359 +2191521 +2701080 +2712664 +2600461 +695531 +2537961 +2659740 +547464 +2191577 +761489 +1504162 +1278848 +2659762 +2191618 +695535 +761498 +2537953 +1978852 +2191486 +547434 +2600454 +2362404 +2537987 +1278787 +2091120 +1963225 +2426640 +1835199 +1805552 +2659719 +2042469 +2600510 +2396431 +2191566 +198840 +1695949 +2659703 +2191681 +2042472 +2537923 +1713625 +2191641 +806201 +2537977 +2537951 +806193 +2091110 +806228 +2070081 +2496175 +1278775 +2496181 +2191529 +2600463 +2701044 +2303216 +2712659 +1278819 +1435204 +2191611 +2701075 +1835198 +2362386 +2659729 +2191463 +2191480 +2191669 +547443 +2091189 +1639437 +2008927 +547447 +1990994 +2008911 +1278902 +2396482 +1224656 +1435289 +2496269 +2335593 +1879946 +2191923 +2335586 +2303272 +725651 +2070103 +1278901 +2091234 +2335452 +2712668 +2042528 +2600752 +2496222 +2191920 +806260 +2335575 +1189379 +2600659 +1835259 +2659790 +2303271 +2712671 +2191889 +2600577 +1332788 +2191730 +1879992 +633665 +1358017 +2659796 +2538004 +2335617 +1278868 +1572851 +1879944 +1879979 +2692577 +2191792 +1504194 +1572924 +2757469 +1677711 +2496245 +2362419 +2303262 +2538058 +1879974 +633672 +2191806 +2659826 +2191732 +1504219 +2396446 +2192023 +1963256 +1504205 +1963237 +2600584 +2335461 +1114990 +2538063 +2191756 +2538103 +2600632 +1278899 +1278856 +1278857 +2748608 +547557 +972584 +66980 +2191823 +2701108 +2496230 +2191984 +2191838 +2659809 +2335527 +2712681 +1951933 +2335604 +1835261 +2496224 +2191778 +2091221 +1879981 +547555 +2600737 +2303241 +1504217 +2538075 +1224661 +1435287 +2191925 +2659846 +2748604 +1879927 +97066 +1435297 +1879925 +2091214 +2600620 +1278879 +2701087 +888923 +2538044 +2659848 +1332789 +2191833 +1572890 +1835241 +2600759 +300870 +1130618 +888907 +2659836 +2538076 +1435242 +2538031 +2538080 +2335592 +19824 +2418829 +547564 +2335540 +2496279 +695550 +1572845 +2042531 +2538099 +2396477 +2659840 +1879973 +1572928 +1068687 +1879933 +2538055 +2732185 +888917 +1963252 +1572869 +1485458 +2191726 +761507 +1130626 +1278896 +925761 +2496264 +2808733 +547519 +1504201 +806265 +2496267 +2335454 +2701092 +725646 +2396469 +2191755 +2335538 +2042521 +2191751 +1435251 +179317 +2191995 +1572927 +2496218 +2496260 +452181 +547530 +2191899 +1332776 +2335510 +1332765 +2659845 +2191878 +547562 +2191911 +888909 +1572861 +2538052 +2600721 +1358016 +2748611 +2362411 +547574 +1410001 +2600725 +2600618 +2018899 +2335481 +2659835 +1189372 +1572834 +1572912 +2441057 +2191767 +2191936 +1713640 +1572922 +2701099 +1879986 +2600685 +2396488 +725649 +1435280 +2441050 +1572925 +2757473 +1504215 +2192044 +2600697 +1737412 +2303231 +2396502 +2496305 +2538006 +1332774 +2659792 +1297043 +2600691 +2191807 +1677723 +547509 +1278889 +1435301 +2426652 +2396450 +2659789 +2396494 +2396481 +2192050 +2659816 +1572902 +633650 +2396490 +1713634 +2701088 +2537999 +2091265 +2441056 +2191737 +972615 +1978859 +2441045 +2303236 +2757468 +972611 +2600730 +925774 +2091246 +2538093 +1389058 +2303243 +2712672 +1332766 +2191813 +2600644 +1737406 +2335553 +633679 +1963236 +2600735 +695556 +2191913 +1963247 +2191956 +1504221 +547585 +2191965 +2191843 +2335442 +2091278 +1224667 +2335469 +1879976 +2091283 +1095302 +2600914 +1573072 +1278927 +2701119 +547611 +1485460 +2091408 +2192483 +2496385 +2496318 +1332833 +1943069 +1573029 +2042583 +2659971 +2335861 +2303309 +2192065 +2192408 +1835292 +547607 +2600832 +2496370 +1189410 +1573098 +2659863 +2396571 +2192386 +2192291 +2192371 +904689 +2335790 +1332794 +2192323 +367450 +2396529 +1095331 +2335806 +2601063 +2335843 +2600997 +2538262 +2042565 +2091414 +1677761 +2192511 +2659898 +2600988 +1695961 +2335736 +2701121 +2008933 +2091386 +2538164 +2538132 +344812 +1435330 +2538234 +1963278 +1978868 +1880085 +2601060 +2701111 +2659901 +972636 +1332811 +2192227 +2600972 +2335884 +1095314 +2496375 +1435386 +367443 +770576 +1435376 +1095327 +2192444 +2426659 +2496392 +2042574 +2601084 +2496489 +806346 +2042617 +2600802 +806380 +2070121 +2303274 +367449 +498827 +2042607 +2659962 +1572954 +1880049 +1572979 +1880065 +2192168 +1880032 +547603 +2192225 +2192218 +888932 +806329 +972650 +2496486 +2600851 +2496485 +2538148 +2091314 +2600834 +498849 +1504296 +761534 +2192437 +1068697 +925782 +2192140 +2441066 +2192295 +1677758 +2070127 +2418838 +1573020 +2070143 +2600913 +2091307 +1880041 +2600934 +2362462 +1435374 +1504263 +2091374 +2496428 +1068691 +2426665 +2600916 +2335727 +19883 +2091409 +2070114 +2396541 +2538289 +2441092 +2538264 +2659946 +1573039 +19856 +19837 +1963281 +2601007 +1737418 +2335794 +1435331 +2600846 +2659891 +2496330 +2600804 +2496431 +1573023 +2538227 +1880089 +2091424 +761539 +2538297 +2192131 +2600899 +2303296 +2192240 +1835274 +2659914 +2065746 +2192126 +2600866 +1572984 +925776 +2659958 +2192282 +2335809 +761535 +2538155 +1677747 +1504337 +2192432 +2659883 +2284160 +1737445 +806392 +344817 +2070131 +2335735 +1573074 +2659918 +1677741 +1713657 +2192493 +1713652 +2659884 +2601030 +19921 +2396551 +1504314 +1835302 +1504282 +2192529 +2303277 +2538175 +806313 +19862 +2335693 +806318 +19857 +1677744 +1278943 +2070129 +1677731 +2192419 +2192404 +2192174 +1435306 +2192074 +2192236 +806315 +1504252 +761562 +2303320 +2192073 +2335766 +2042584 +2192293 +1572999 +2441082 +806339 +2496393 +498847 +2042580 +2042556 +2192428 +2192466 +2192490 +2091321 +2538157 +2042537 +695601 +1835287 +2192156 +1695965 +1358054 +1880048 +1504281 +2091289 +1713663 +806341 +2396553 +2601024 +2091423 +2601062 +2441076 +2042576 +1278910 +19915 +2601085 +1189405 +2600927 +1572991 +2538230 +2659932 +1880000 +1278924 +1573060 +972654 +761570 +2396561 +2441069 +2496384 +1943061 +1189412 +2601061 +2335667 +2496339 +2091359 +806370 +1189395 +2600980 +806308 +19877 +2192395 +2659887 +1435304 +2091313 +2538167 +498806 +1695969 +547599 +2659869 +1139851 +2192122 +2335641 +2192478 +1737458 +2335737 +2091388 +2538158 +2192359 +2192166 +547605 +2192153 +1189409 +1504279 +1115011 +2538142 +2070118 +1573009 +547619 +2042595 +2496423 +2335669 +761552 +1435372 +1943054 +2600887 +1389069 +179329 +2538189 +1573088 +2538258 +2600892 +806347 +2335763 +1737425 +1943065 +1781135 +2496434 +2335782 +806372 +2538196 +547635 +344809 +1573014 +2600984 +1278953 +19918 +1695962 +2335842 +806401 +2496422 +547596 +1677734 +2396507 +2496408 +2335685 +2192105 +2418844 +1677736 +761590 +547615 +2600944 +1572988 +2091353 +2335872 +2335855 +2091309 +1115006 +2335764 +1880058 +1358051 +19912 +2600996 +1139854 +2600965 +1095305 +1573019 +19851 +2601051 +2659908 +1677738 +1332801 +344816 +2192381 +2192191 +19854 +1835282 +2091361 +1278968 +19926 +695610 +2601378 +2396598 +2192946 +806507 +547661 +1943123 +1332839 +1163731 +1880124 +2192966 +2192629 +223550 +2192771 +806511 +2496535 +2396649 +1963326 +19991 +19981 +2601219 +2192627 +1805594 +2303337 +2042622 +2027180 +2538385 +2335948 +1781140 +2601123 +1332844 +2701138 +1504423 +19964 +2091465 +2601128 +1224695 +1805592 +2601373 +1376581 +2441110 +1130667 +1332855 +2279884 +2701131 +2601174 +2362470 +2042702 +2091513 +2336026 +2091545 +2091548 +695625 +806497 +2441129 +2336015 +97073 +198876 +2712694 +1163728 +2303377 +2335976 +1130664 +1648978 +1435500 +806538 +2192958 +2601310 +1880184 +1880152 +2601218 +1943126 +1435532 +1943104 +2042665 +2042697 +1224681 +2601245 +1504348 +1963378 +1835372 +547672 +1332836 +2192674 +1922361 +1279020 +2496542 +20017 +2042666 +1224689 +2601303 +2601275 +2418860 +2284171 +2601344 +806508 +1435537 +223563 +1435435 +1504417 +972688 +19966 +1880115 +2192763 +2601380 +1835320 +1963352 +2192863 +2418856 +2192967 +2192862 +1504354 +2396686 +1435523 +2303340 +2091549 +2027178 +2336041 +1880097 +1573169 +1504395 +2192617 +1278976 +2091500 +1435513 +2538414 +2192891 +2396614 +2192916 +2396677 +2601339 +19954 +2012805 +1880151 +1835332 +2269849 +2418861 +2538348 +1573180 +2396633 +2192746 +2018910 +2601365 +1130673 +547666 +19950 +2303359 +97074 +1163735 +2042682 +2692589 +2601352 +2396682 +2192877 +2192555 +1943129 +1835342 +1943091 +2517688 +1880154 +2193039 +2192604 +2303380 +2091532 +1130642 +1224682 +2601327 +2192553 +547732 +2284170 +2335928 +2192694 +2192902 +1435499 +806487 +2362482 +2601117 +2336009 +2192919 +2303382 +2538413 +1130678 +2091512 +2538397 +1963314 +1279026 +2192868 +1880141 +2192549 +1389074 +547743 +2192937 +2192785 +2396638 +2601306 +2192848 +1130663 +1943110 +1737474 +1435484 +2018921 +1435507 +2396605 +2362467 +806539 +2091445 +547662 +1573165 +2193015 +2192590 +2538331 +1573159 +2336125 +806516 +2279883 +2192575 +97085 +2024405 +97121 +2018929 +2192963 +1880159 +2538457 +547664 +2303387 +1435545 +1573216 +2192747 +2396705 +1504409 +2660008 +2303328 +2042708 +2192719 +2335994 +1224687 +19942 +725661 +2538323 +281176 +1345137 +1435436 +2192670 +2336105 +1435585 +2192784 +806532 +2192921 +1255830 +2601157 +2538383 +1963360 +1163736 +2336044 +2601276 +452193 +1504414 +2336030 +1922374 +2091539 +2192911 +2192686 +2284177 +1130644 +2336035 +2091434 +2336111 +972753 +198897 +2601233 +1332838 +97079 +1963305 +2091519 +1435493 +2336038 +1573178 +1504352 +2517687 +1504393 +1278988 +1695986 +2336100 +1435581 +2192942 +2601098 +2192740 +2659986 +2091460 +1130631 +2496499 +1278975 +2692586 +1963330 +2024409 +19996 +2192591 +1130647 +2303331 +806490 +972679 +806509 +2192920 +2396674 +2192589 +1332849 +2335959 +2601390 +2538412 +198903 +2303397 +2538371 +2538343 +1677792 +2538391 +2362489 +2601372 +19995 +1835370 +2091533 +2193033 +2042635 +695609 +1278994 +2396667 +198884 +761612 +2336116 +2336067 +2601381 +2091522 +2601129 +2192637 +2396664 +1017127 +2336019 +2396679 +2269847 +1573185 +2601256 +1504420 +1130668 +20019 +2091510 +2660025 +2336126 +2601182 +2192684 +1573199 +1332859 +2193040 +223559 +1943115 +1279042 +2660015 +412019 +2538393 +2192761 +2192583 +2193036 +2070161 +2192976 +2192611 +1279038 +1478220 +972713 +2538395 +547654 +1435445 +2601320 +2601273 +1805602 +806434 +2192630 +2192927 +2192989 +2496550 +2192700 +97082 +2601126 +412011 +2192748 +2303389 +2335982 +2601368 +2538306 +2601108 +2601111 +2732191 +2193002 +806524 +2737111 +1255834 +2012801 +2396669 +97102 +1835346 +2538439 +2538405 +2538452 +20011 +1504355 +1707182 +2042750 +2496625 +1017147 +2538507 +2065788 +2269984 +2538467 +2396712 +67014 +1706031 +2193182 +889030 +1805672 +2269954 +2601417 +367461 +1905734 +20089 +1963410 +67019 +2042785 +2396760 +2065780 +889021 +2418874 +972772 +1639554 +889049 +2441132 +179451 +2193147 +2336156 +1478335 +2538483 +1639545 +1017216 +67026 +1410009 +2660089 +1639463 +179409 +1573294 +2193172 +889047 +20046 +2336168 +2042779 +2601501 +1332871 +888955 +1996762 +1639549 +2042748 +925821 +1042935 +1639468 +806568 +2269859 +1963422 +1435590 +67038 +2042769 +1504451 +2336157 +2065749 +2310087 +2496615 +179373 +2601466 +2269992 +1639529 +223581 +2193377 +1017190 +2042781 +2538465 +889136 +1410027 +1017169 +2601509 +380129 +946421 +2042758 +66999 +2336177 +2193305 +1224710 +2601498 +2193150 +2269909 +2193099 +806557 +2273408 +1706039 +633737 +2018930 +2496655 +2269883 +2193220 +1105950 +1478278 +1639582 +1737499 +547748 +2065766 +633710 +889054 +1478253 +2065755 +2538493 +633709 +2270008 +1042947 +1573307 +2065818 +2269904 +2336224 +20097 +1573254 +1639480 +1573266 +1297067 +1639451 +2070184 +2660065 +2538505 +547749 +1095361 +2065756 +2496612 +2193151 +889122 +2193393 +2601404 +2065753 +2193100 +1963401 +2538511 +1737488 +1639506 +2193094 +380130 +2193389 +2269907 +1410056 +633754 +2496571 +2065802 +67092 +2193105 +2757494 +1279052 +889102 +1573306 +2285958 +2396741 +2269855 +770590 +633757 +1478235 +1332881 +1435606 +2336210 +2269943 +2269894 +2193398 +2193364 +1639489 +1105947 +770594 +2065803 +2601412 +1172775 +806553 +2303446 +1224713 +888960 +2601477 +2303434 +1485484 +1805663 +2042751 +2193349 +1805642 +1332873 +2072074 +1478240 +2193145 +1639551 +1376585 +1105959 +2193310 +179389 +2193272 +2193217 +2601455 +2336225 +1358076 +889123 +889098 +1017178 +1805665 +2042762 +179402 +2193177 +2601488 +1573264 +2496667 +770606 +2065799 +2303416 +2303433 +806571 +2269993 +946451 +2193083 +2414766 +1478245 +547765 +1922408 +1880200 +1720961 +20042 +761630 +1677799 +179376 +2601499 +2601519 +1805640 +2193142 +179448 +20078 +1639460 +2065795 +67011 +2269893 +97147 +2193173 +889084 +1095364 +2496609 +2336193 +2193179 +1297068 +367464 +1654384 +2193144 +1504441 +2269966 +2496657 +67012 +2396738 +2193331 +1644879 +20032 +1639559 +2538491 +972760 +1720960 +925843 +1017166 +2601444 +2091554 +20079 +2193248 +2193133 +633706 +179457 +2193085 +2601414 +1639566 +2601403 +2496577 +179405 +1706042 +1720958 +889063 +946449 +1095372 +300877 +2303455 +1755981 +1095360 +2336169 +889130 +1573277 +2336217 +888952 +67095 +2601492 +2091557 +2660045 +2065820 +2310085 +889045 +20088 +2193131 +1835390 +2303442 +1695990 +2420673 +1880211 +1478328 +2362527 +1389076 +2269851 +1279046 +889113 +2193351 +2336212 +20075 +20095 +1478243 +770589 +2538532 +2601405 +888975 +1478256 +2336205 +2515638 +889144 +2660070 +2601457 +20045 +179397 +633765 +2269999 +2303437 +1805643 +2193318 +1963400 +296009 +1835380 +1017187 +179415 +66987 +2660074 +2269930 +1677824 +1376584 +2193195 +889018 +1478269 +2193249 +1017200 +1504463 +1478229 +972754 +2193264 +889075 +888950 +2193106 +67043 +2303447 +2065800 +2091568 +1943130 +2193247 +1805638 +2496588 +2193081 +2269955 +1358084 +1522334 +1485476 +633718 +2601460 +2538494 +633763 +1189440 +1573324 +2336244 +2601630 +806626 +1504494 +1922427 +972814 +1963470 +2601638 +1332907 +2660105 +2601653 +2336266 +1720962 +1279077 +1880310 +2193549 +1573406 +1835414 +430245 +1504518 +1713703 +2193608 +2193555 +2193454 +2444833 +2441153 +179471 +925849 +761635 +2193590 +223596 +2193410 +1332899 +2336297 +2660166 +2660143 +761645 +2193473 +1358100 +1224718 +2601670 +2660098 +2601604 +1504475 +2336261 +2396802 +1130682 +2601593 +1573380 +972801 +1713727 +806627 +2601667 +738958 +2660162 +2193559 +281187 +806726 +1737517 +2601599 +2193464 +198943 +2808747 +1835421 +806682 +806674 +2396808 +806602 +2336325 +2193556 +1573397 +1880299 +1279068 +806737 +695668 +2601537 +2193530 +1017233 +547814 +281179 +1880252 +806631 +1639618 +2336311 +1805703 +2396807 +925851 +2496758 +1332894 +1707187 +2193558 +1279074 +2336282 +2444832 +97169 +2336305 +2193419 +2396811 +1880303 +361163 +2018938 +972812 +2538554 +2601571 +2303500 +2193480 +2601576 +2270019 +925886 +2193542 +1639614 +2193543 +2018936 +972808 +806687 +2396779 +2601562 +2601575 +806654 +1880233 +1573404 +2193573 +2701158 +1435637 +1963453 +2193466 +1085549 +2193437 +2660135 +1805682 +1573358 +2601632 +806633 +547826 +2070187 +1435647 +806729 +2660154 +2336359 +2757498 +97177 +2193526 +806650 +1573376 +925853 +2844175 +281184 +2336264 +1172792 +1880276 +20124 +2660175 +806715 +1963451 +1737510 +2601639 +1880254 +2496717 +1573368 +770611 +2336358 +2601566 +1737511 +2601655 +1880257 +2601561 +2336301 +97170 +972823 +2418880 +2844178 +2660118 +925865 +806703 +2310092 +2193519 +2193518 +972797 +1573349 +2091602 +1435638 +2193560 +1963473 +2682833 +2420679 +1880216 +1713697 +1573360 +2515646 +2660165 +1996767 +2193488 +1963466 +2660141 +1172794 +1085540 +738963 +695664 +2601600 +1963439 +1504487 +2018932 +2660099 +1189431 +725666 +2660104 +1880251 +1332896 +1573347 +2336309 +695666 +2303494 +2193417 +2193461 +2396777 +2336319 +281178 +281185 +695644 +738960 +806608 +20129 +806677 +2660114 +1573315 +2601656 +1737527 +2601654 +2626372 +889165 +1805697 +2808751 +2601520 +2496716 +198955 +2757501 +547818 +1189439 +1573325 +761642 +633773 +725664 +2270012 +738962 +2701157 +1504503 +2660158 +806620 +806713 +1996769 +547778 +1246720 +806815 +1504572 +179494 +2441172 +889335 +2193706 +244720 +20178 +1573504 +179498 +2444840 +2396872 +2303535 +67131 +1095404 +2420681 +1639699 +20187 +2601710 +1573429 +2426698 +2515652 +1410082 +2303543 +633824 +1654391 +2538629 +2270076 +1504546 +2444845 +210768 +770647 +889361 +2303502 +2601726 +2270105 +67130 +633806 +1737529 +2336381 +1573453 +20193 +2091652 +2626379 +547854 +1095398 +2193872 +2193719 +2336488 +1573497 +1042967 +2396908 +20175 +2193627 +889328 +2270033 +946468 +1713734 +2737118 +1410087 +2336430 +2270097 +2310094 +1706046 +1639661 +1846578 +2538582 +67135 +2515663 +1031100 +1105980 +2660180 +1720996 +946464 +1573500 +889193 +2091639 +1835454 +1105972 +2660176 +633794 +2193847 +806744 +889200 +2601700 +1410064 +1835426 +20198 +1255841 +1332927 +2270057 +1042960 +806740 +2193738 +1639700 +806783 +1297079 +2336416 +2601719 +1677856 +179493 +1279084 +2441169 +1522363 +1163752 +889327 +1835436 +2336426 +281198 +1410099 +770662 +2396873 +1435718 +1017260 +20207 +2396876 +2396851 +889368 +1435716 +2042819 +2444848 +1297073 +889268 +2270069 +1639709 +2601730 +2027198 +1654389 +1880340 +2303513 +1573483 +1105982 +1573469 +1573416 +1880403 +889374 +1573431 +889272 +2091638 +1880368 +925903 +1805714 +1410092 +2070197 +1573430 +547874 +1880357 +1115026 +1435702 +1573488 +2336493 +2496774 +889222 +281215 +1410080 +2396861 +2303550 +806757 +1639735 +1846558 +1639657 +1880348 +1410102 +1573424 +1017254 +1435698 +1573495 +470807 +2362541 +2336472 +2682842 +2193657 +20196 +2193795 +889267 +1504556 +2091626 +946471 +889229 +2091627 +2091672 +2420686 +1204342 +2538592 +2601672 +1478366 +1835425 +761690 +2193634 +2070201 +1880409 +2042826 +1017274 +2310101 +2336492 +761695 +412036 +2496811 +1189445 +281200 +1639731 +1654388 +1410106 +1639680 +1835444 +1639645 +547866 +1880406 +1905756 +1504525 +1358114 +1905763 +2072079 +2601683 +2303505 +1573436 +1478364 +695692 +2496786 +1573418 +2193842 +1905745 +2336440 +1105962 +2396891 +2601697 +2396850 +2270063 +20181 +281207 +2193846 +2193851 +2193837 +2270034 +20204 +2193833 +2193643 +1639752 +1017244 +889245 +1720991 +2193727 +1696003 +633813 +2682841 +2270083 +20172 +1639757 +2193655 +2310104 +761699 +1835445 +1522344 +1042972 +695674 +1846577 +2444844 +1095389 +1017264 +1835437 +1963478 +20201 +761701 +806796 +367472 +889212 +770679 +1105973 +281204 +2193733 +1573428 +2070205 +1846559 +2336431 +2336405 +2420683 +1880345 +2193666 +179488 +889340 +20192 +1224730 +1246716 +20224 +2042837 +1189444 +179499 +1706044 +367475 +889203 +1332929 +2362536 +2042824 +972843 +20168 +2065838 +1410097 +1504558 +2193741 +1835447 +20202 +1522347 +1639768 +889345 +1639676 +889237 +179479 +2682835 +2496787 +1504548 +1345144 +889343 +889285 +2193854 +889347 +1713748 +2193845 +547869 +1978907 +2396886 +412034 +1224721 +1042964 +1639651 +281192 +2193663 +1504571 +2538649 +2193993 +1781155 +2303584 +1485496 +2441183 +1835492 +1485495 +412067 +1573543 +1085580 +1332976 +2601834 +1573589 +806847 +67145 +547895 +20244 +2496857 +770680 +2303594 +2091688 +1504580 +1435826 +198968 +2336525 +2193988 +1085567 +2270126 +2091708 +2193980 +412068 +2441234 +1504629 +2497075 +412072 +2303575 +1573533 +1332994 +2496955 +2091681 +2193898 +1504590 +2601750 +2336636 +2193886 +2303602 +1737556 +2091724 +412051 +1332980 +1172815 +2303570 +1332983 +1880456 +2601854 +2042857 +2496874 +2091685 +2601764 +430249 +2497008 +1478401 +1648991 +2496992 +1085586 +633831 +1835493 +1189465 +1435841 +2496845 +2601770 +2496917 +2336594 +2194117 +1435796 +1042980 +2496895 +1435830 +1189452 +2194004 +695708 +344843 +1805737 +2027241 +1085582 +1805767 +1805766 +946486 +2601830 +2538646 +281222 +179545 +889399 +2497004 +2303561 +1677897 +1573566 +2310105 +1504612 +1677878 +695707 +1805725 +2027238 +198971 +1805735 +1130694 +20266 +1478430 +1805777 +925949 +20248 +2601878 +223611 +1805749 +1835490 +2414777 +889382 +761726 +1478416 +2336559 +223612 +199006 +2396930 +2601874 +2660266 +2496981 +2538671 +1677901 +1805761 +2270122 +1478425 +2091736 +1085569 +2497049 +1172797 +2336629 +2496876 +806865 +97220 +1805819 +2193882 +2496983 +972858 +2091695 +1573593 +2193997 +2194102 +972870 +2336689 +2336565 +2336614 +2496862 +2748630 +2497070 +2303556 +1573577 +1332993 +1068716 +1781162 +1332971 +1805776 +2336701 +2091710 +1573573 +198977 +2496828 +2070237 +2194083 +761720 +1068712 +179535 +1805811 +2497090 +925921 +344866 +2336647 +2070231 +806825 +2497024 +2193906 +1737546 +2193968 +925930 +2538652 +2070252 +223613 +20256 +2441220 +1435769 +946485 +2336709 +2496995 +2396922 +2336545 +2444849 +1573542 +695717 +2042856 +1435777 +1880424 +925937 +2303571 +2336549 +1435745 +1835467 +904700 +1332959 +1677871 +2091707 +1805727 +1835491 +1677902 +1880462 +2538692 +925925 +2336550 +1805799 +2538667 +1504628 +2441175 +2091731 +344860 +1115030 +2660243 +1130690 +1172804 +1435797 +2336661 +1435764 +2336706 +972873 +1478414 +2042846 +2336630 +198996 +2091689 +2284217 +2497067 +2701172 +344862 +2336590 +2194009 +1677882 +2194101 +2070224 +1435804 +2496960 +1922459 +1435750 +1130691 +2497044 +1435791 +2091718 +2496850 +2496948 +2497030 +2496909 +2194093 +2496886 +2497100 +2441193 +925918 +2685612 +2194051 +412043 +2496873 +344868 +1017293 +1504621 +2194091 +2070247 +1922463 +1435855 +2517697 +2336847 +2538724 +633838 +1573654 +1435868 +1677920 +1573630 +2194189 +2336775 +2336811 +1017304 +2336714 +1922522 +2194203 +2194255 +889457 +633846 +889514 +2194222 +2497119 +2517693 +2601985 +889411 +367482 +1922492 +2396972 +972916 +806904 +1224762 +925972 +20273 +761729 +547931 +2336755 +1880504 +344887 +889415 +1644884 +2336779 +344891 +770686 +2538743 +2538733 +1805871 +2538703 +1023828 +1333011 +1846583 +889494 +889500 +2336765 +889479 +2497117 +1255848 +2421927 +1573601 +2601913 +1639807 +2270143 +2336747 +344901 +1781165 +1023825 +633842 +2070257 +1573607 +2421926 +2027248 +1805841 +2601974 +179568 +2396939 +2194291 +1017303 +2194171 +2660318 +1023835 +1042993 +1504651 +1639811 +2194146 +1963501 +925954 +633891 +2194263 +2660321 +889472 +972881 +633869 +1478436 +2538722 +1963496 +2194162 +1639822 +2194289 +1573641 +1504664 +1115044 +1042988 +1478439 +2601973 +2685617 +1017309 +1504656 +1677913 +633834 +1922465 +1224756 +2336793 +547921 +2270152 +633840 +889483 +2517691 +1573627 +2336826 +695738 +2194250 +1805882 +2070263 +2042863 +1023834 +2626394 +2194197 +1880468 +1805851 +1756012 +344900 +1922482 +2270140 +889413 +1478467 +695750 +695726 +2601964 +695723 +1639805 +2601933 +179557 +2660295 +1880488 +1115047 +2601940 +1435870 +1504660 +2660315 +1820499 +2660291 +2396945 +1639789 +2538702 +1922497 +2310108 +2396959 +904716 +972878 +2515682 +1922519 +2270147 +1189474 +179570 +2194245 +179563 +1478462 +695746 +2396955 +1224757 +1713759 +1721008 +2601921 +2660282 +1820507 +806900 +2336748 +1922521 +1224782 +925977 +1880516 +2601943 +1224783 +2515681 +1922481 +2660331 +889459 +2336804 +1115038 +1677906 +806875 +1737565 +1963500 +925970 +2194233 +972906 +296016 +2515680 +1639791 +1880475 +2303620 +2660333 +1504667 +2336810 +1835522 +2362566 +2336754 +1573604 +2601987 +2284218 +2303609 +1435914 +1389080 +2194412 +97254 +1435924 +1713779 +1504692 +1573698 +761731 +1880563 +199045 +972928 +1943145 +2602035 +2194393 +2194320 +1677928 +1504672 +199025 +2660346 +1737604 +2396995 +1224788 +2660379 +2660356 +2042886 +1172819 +2303630 +695761 +20283 +2194330 +2194332 +199051 +2194369 +2194317 +2336884 +1805904 +695777 +1880559 +1435891 +1163787 +1435883 +547947 +972925 +1880538 +2601998 +2194352 +97256 +2336852 +1504689 +1880540 +1255869 +1922526 +2336894 +1504688 +547959 +972937 +1333026 +806934 +2194396 +2808756 +1880558 +2602016 +2336913 +2397001 +1880562 +1737601 +1737605 +2660361 +2194382 +2194397 +199055 +1172825 +2602043 +1130703 +1573714 +1172822 +1573712 +806929 +2602012 +2336877 +2517706 +2194365 +1573702 +2421929 +2336871 +223620 +20286 +1835542 +2660415 +2602042 +2660390 +2602027 +2660401 +1573664 +806949 +412097 +97248 +2362571 +2194335 +2515684 +1758053 +806920 +2497164 +2497211 +1435879 +806928 +2336869 +1677931 +2336876 +2602013 +2336890 +1573706 +2362579 +2396987 +2194418 +1130697 +806948 +1189484 +2602006 +199041 +1805907 +1333021 +430261 +1163774 +2660414 +412094 +1402700 +1573691 +1880566 +2497218 +2194416 +1644887 +925986 +2336860 +2497207 +1095432 +2660363 +20293 +1805896 +1880554 +2497197 +344908 +2497205 +695760 +1880530 +889545 +2194506 +889548 +2418926 +761736 +1189494 +1095447 +2660487 +1737617 +1880591 +1573759 +2538782 +2602225 +1880592 +1115060 +20314 +1880596 +300891 +300887 +2538797 +1224798 +2397077 +633940 +2303636 +67159 +2194525 +2602077 +1573767 +2602088 +1713785 +1504704 +1224801 +2497233 +1991025 +2336946 +2660496 +2660441 +2194475 +2194438 +223623 +2336940 +1043008 +2397014 +2602143 +1758077 +2418929 +1880593 +633942 +2660501 +2602083 +1504716 +1737653 +2538793 +2602220 +2194514 +1696026 +2497228 +2194521 +972942 +725687 +2336921 +2303639 +1573723 +972949 +2602224 +2397051 +1504718 +179607 +20305 +2194455 +2336948 +1504722 +2194458 +2660492 +20301 +2397067 +695788 +547993 +97288 +97275 +2194444 +1279104 +926010 +2497226 +2362582 +1504702 +548063 +1358129 +97290 +1943152 +547987 +2660457 +1943155 +548033 +2194535 +1677942 +2194496 +1504756 +2538791 +2194446 +2194541 +1880612 +1835563 +179576 +2194452 +1880611 +1478478 +179575 +179612 +1573720 +2194425 +2538796 +2538763 +2602094 +725690 +548056 +97258 +1573749 +2497249 +1639831 +889536 +452220 +2336928 +2602103 +1504742 +2602226 +2602158 +633923 +2397073 +2602048 +889532 +452230 +1649009 +1504727 +548065 +1333044 +1115061 +2278943 +1333042 +1758084 +926020 +1835555 +633946 +548069 +223625 +2194472 +695792 +806975 +1504736 +2397059 +695802 +1402703 +1943153 +2065863 +2602196 +972980 +1031127 +1095477 +2660476 +2008942 +2194499 +1095471 +633964 +1696039 +972944 +1031130 +2660500 +1043003 +2660459 +1963523 +2336935 +547981 +1880604 +1504720 +2660493 +2602128 +1737620 +1333035 +633935 +2336951 +1095467 +2602133 +2602081 +1095449 +725679 +2397053 +2602197 +2844190 +2194542 +1573780 +1095458 +1504734 +633898 +889537 +2194465 +1639829 +2602169 +1737635 +2426723 +2602087 +2602152 +633917 +2303642 +2602144 +2602053 +2602052 +20313 +2091777 +1737622 +2065862 +1504750 +2660494 +1410113 +2660454 +2194478 +2194557 +2844188 +2397045 +1504743 +2194433 +2336957 +2194468 +2270158 +1835564 +2732202 +1333039 +1504708 +1737616 +926030 +2538762 +1095455 +889530 +20308 +2602162 +1333041 +1677943 +2194536 +548085 +2497334 +1279117 +2194667 +2602278 +2194772 +2660516 +2602267 +2194622 +2602384 +67181 +1023862 +281283 +2337066 +1504771 +2737124 +179696 +1573981 +2194913 +1043018 +2194936 +1963553 +2194886 +548122 +2538883 +281234 +1880641 +1017362 +2418963 +2602433 +179678 +634019 +1880735 +2538900 +1485514 +2194813 +20401 +2538921 +2660641 +281252 +179690 +1737660 +1504796 +2091807 +2018953 +1639852 +2538825 +344921 +1435935 +1573897 +2538893 +412110 +67165 +2538934 +2497270 +2515690 +1279120 +1644908 +1023859 +452244 +2194654 +430279 +1905778 +179638 +1805914 +1573812 +1835588 +946511 +1649019 +2418942 +2538875 +20353 +1297101 +20326 +2194778 +2194922 +889634 +2660519 +2194686 +2194921 +2418944 +281265 +1435953 +2194612 +2660570 +1043022 +1573940 +2397157 +973071 +1639842 +2660630 +2042933 +1189500 +281249 +1224815 +548167 +1573893 +1115071 +1639846 +889580 +1172829 +2660571 +1880640 +926045 +2602391 +548161 +1654404 +2660646 +889680 +1478501 +2091903 +2042930 +807044 +2042918 +1478550 +2303665 +1835573 +2337017 +1721024 +2091880 +2538886 +2538926 +2336962 +97306 +2337103 +2602457 +946513 +973057 +2194943 +2497275 +2660674 +2418966 +2194853 +1707194 +244745 +2337069 +2418939 +1478539 +1085621 +2538818 +770698 +430282 +2397098 +1573871 +2701209 +1043023 +1835597 +2660562 +1573855 +97313 +889630 +1880632 +2194666 +67169 +1017385 +972990 +2538867 +1963550 +1573842 +481551 +1639890 +1639837 +973030 +1573782 +2194740 +281233 +1435971 +889562 +1573977 +1504813 +2660625 +2042920 +2602485 +2602499 +2660689 +1189496 +1485526 +344922 +634001 +1963570 +1880689 +1573898 +2091874 +2270173 +1436019 +2602373 +2194641 +2337155 +2602228 +2337186 +761744 +2397149 +20324 +2421932 +926065 +2602374 +412113 +807041 +2194862 +548166 +367491 +973050 +2397142 +1880644 +2091845 +634047 +2303647 +2712730 +1224816 +2602436 +1880651 +1713816 +2748639 +1333074 +2194912 +973020 +2602231 +179679 +2420707 +210792 +2072094 +2712741 +2194670 +1639853 +1639887 +1706061 +1805920 +1436012 +2194791 +889609 +633983 +20359 +20374 +2660530 +2602236 +2602431 +2194890 +633991 +179668 +770701 +2194759 +2602479 +1017369 +2091887 +2336974 +1820514 +2091817 +770713 +20340 +2310109 +2538877 +889563 +2538826 +1846588 +2397197 +1333052 +199069 +973016 +2660522 +1279122 +2194705 +199078 +2602372 +889604 +481561 +973012 +2194804 +179661 +2602362 +1835613 +1573828 +1922570 +97312 +2757520 +481570 +2337041 +2337073 +633970 +1963576 +1573789 +1504808 +1436013 +2660650 +1085642 +2660523 +973015 +2421933 +633995 +2194645 +2397199 +430273 +1189497 +1991027 +179704 +179735 +2337045 +2602265 +2712724 +2701195 +199066 +2091812 +2660582 +2194932 +1880698 +179670 +806981 +97314 +20393 +2626400 +2194948 +548124 +1573894 +1279113 +2660678 +889613 +2538853 +761755 +2091829 +2418948 +1435938 +2602360 +2497325 +1573832 +1573964 +1504770 +67189 +1017352 +2497269 +2337124 +67176 +1017351 +2397170 +1043025 +2602414 +1649020 +344923 +2194882 +2270202 +179658 +2337145 +2337100 +634041 +1639845 +2538857 +2397174 +1696060 +973041 +367500 +1963566 +1639899 +634042 +973002 +2441256 +2194829 +210788 +1017403 +452268 +2194672 +695809 +1358151 +296021 +889620 +2660670 +2337120 +761750 +2602488 +2337002 +20365 +1573811 +2602420 +2397204 +2194661 +2602454 +2091834 +807000 +761745 +889676 +1573807 +2337172 +2602340 +2194825 +2337092 +2602291 +2418935 +807029 +2760315 +1835610 +2418960 +2421934 +1639855 +1639872 +1127909 +1246735 +1880714 +889570 +1880718 +2660507 +367486 +179671 +1043029 +1644899 +2337176 +1805915 +1721011 +2194803 +2091856 +2602335 +2194771 +2497312 +2538910 +2497313 +452245 +2426726 +1435993 +1706063 +199091 +1017354 +1963582 +20335 +179683 +2194696 +210793 +1573955 +1504811 +889610 +1835572 +1905782 +179725 +2538840 +1085630 +244749 +1246732 +2602377 +2337031 +1880720 +199099 +179747 +2303646 +452254 +2194629 +2397205 +770696 +2337038 +2337116 +179711 +481545 +1573990 +2724129 +946510 +2538931 +1304682 +2337230 +2441340 +1943156 +2397494 +2092154 +2538994 +1436067 +2092129 +2337377 +2603159 +2539491 +695923 +1835715 +2008961 +973199 +2539459 +2195757 +1678018 +2042993 +2092282 +548315 +2661100 +2860273 +2195144 +97443 +2539500 +2660879 +199154 +1115089 +2195015 +548346 +2539246 +2497704 +2603126 +2602684 +179765 +2538997 +2018967 +1835712 +2337400 +2602847 +2337473 +2092294 +2539092 +548437 +2603619 +973194 +2757539 +2603025 +2602871 +548366 +1333212 +2603107 +2092272 +2497465 +1963682 +1835734 +973211 +1806067 +1574208 +1806117 +2603176 +2603263 +2603909 +179803 +2497921 +695889 +2539147 +2362724 +1880820 +1297107 +2091911 +2603842 +2092233 +2603433 +361172 +1436155 +2539148 +2602658 +2070291 +2808766 +199152 +738996 +20535 +1963699 +1963689 +2043073 +2603045 +2757541 +1504844 +2538975 +2043044 +2092017 +2602559 +973259 +2195721 +2303676 +2441334 +2195502 +97565 +223728 +2602841 +2497387 +2195856 +2539205 +2497891 +199127 +1279185 +2602918 +2603686 +1806101 +1922631 +1737688 +1943165 +634083 +2043045 +2737132 +2337533 +1436086 +1189607 +1963618 +223682 +1333239 +2008960 +2860323 +2092305 +1737796 +2860339 +634076 +367535 +20621 +2660901 +2195888 +1279143 +179757 +2397555 +2497493 +2009016 +548586 +2539577 +548391 +2043069 +2539429 +1737698 +2195173 +2195057 +2603828 +20612 +2195135 +695855 +1436039 +2397635 +2092157 +470828 +1737695 +1737815 +2661381 +2661283 +926128 +2092362 +2362734 +2860436 +695830 +1758226 +2362745 +2337407 +2195063 +2712801 +20624 +2303686 +1095575 +2065905 +1333246 +2603904 +2497655 +738982 +1224901 +2397607 +2441359 +1835622 +2539115 +199102 +2602718 +2397372 +20413 +2604053 +2195429 +1963603 +2441353 +695836 +2603707 +2603639 +2603685 +1835681 +1115152 +2105167 +2757577 +2397507 +2337189 +2701232 +2303737 +2497793 +2844220 +1436029 +2602774 +2602583 +1023873 +2860301 +2284267 +926130 +2337574 +452393 +1758244 +1820530 +179813 +2397341 +2539359 +2603259 +2660886 +1639945 +973180 +2362827 +1358203 +654638 +97517 +2602758 +2603830 +2441325 +1574110 +2603064 +2497876 +2602714 +2603918 +2603947 +199122 +2337356 +2195621 +1115141 +1806006 +2602870 +2196274 +20554 +807156 +1358172 +1436073 +199173 +2757529 +973167 +2538942 +1504939 +761772 +2497434 +1756032 +973115 +2196016 +2310115 +2661133 +1805961 +2195719 +2539109 +2397327 +1737744 +1224931 +2757546 +2701289 +2515699 +2195916 +2397512 +2497635 +1963670 +2195898 +2660995 +20461 +2539062 +2603565 +2337573 +199193 +1922808 +2603572 +2604057 +2337481 +2092236 +1758196 +2661188 +1333162 +2602920 +1805966 +2397571 +2860378 +548636 +1696155 +1835727 +634059 +2195646 +2195604 +1333170 +1189624 +1806013 +2362730 +1504935 +2860232 +223691 +2195205 +1574029 +1991038 +1737706 +1436184 +2539057 +548254 +548440 +2497361 +2661425 +2539212 +1478590 +1806062 +2397356 +2397273 +1963686 +2539100 +2603878 +2603642 +548408 +1922582 +199215 +2362735 +2602655 +2603564 +2195935 +199198 +2497394 +2362766 +2701220 +2538987 +223675 +2497755 +1504924 +2303800 +2497631 +2539550 +1333146 +2195598 +1677992 +2397322 +1963709 +2195148 +1696149 +2602590 +2497660 +2660789 +1224923 +2604055 +548634 +548405 +738974 +1922584 +2196028 +2397233 +1478574 +2397600 +2661226 +2397401 +2497952 +1758176 +1880776 +2196017 +2303808 +2603867 +2661235 +2337452 +2362762 +2661050 +2337271 +1835637 +2008999 +1031151 +2603697 +2757562 +2397480 +548432 +2337576 +2497473 +2603483 +2337559 +1758133 +2497637 +1106001 +973155 +1095567 +1574167 +973099 +2602780 +2419006 +1880915 +2195589 +1436042 +2362705 +2860329 +2092318 +2497708 +2497920 +1279207 +1246738 +548609 +2724137 +1696087 +2194993 +1922626 +2603258 +2604075 +1436119 +367545 +1402717 +2757579 +2692627 +2539036 +1504901 +2517739 +2195145 +2701244 +2661370 +2196233 +2092162 +2539397 +2092369 +2539220 +2397399 +548350 +2092270 +2195466 +548459 +2603641 +2092105 +2603762 +1574277 +2397263 +2337566 +2497802 +2303738 +2497791 +2337374 +2092021 +2276278 +2860326 +2844222 +223722 +2740581 +2008984 +1436099 +1706101 +2660725 +2337306 +2337339 +2603468 +1504916 +2602913 +2603150 +1224950 +2661118 +20454 +2195519 +2043109 +926114 +2043042 +1758227 +1781175 +2397578 +2337347 +2860343 +355769 +2603143 +634116 +2682860 +2497659 +548269 +2603911 +2196082 +2517744 +2539315 +199146 +2195618 +2195825 +2337332 +1678005 +548474 +2603201 +2397330 +2539342 +2539493 +2661007 +2397352 +2070309 +2092346 +199116 +2196257 +1023866 +20428 +1963663 +2362668 +2195056 +2712747 +1678013 +452352 +2284251 +1696095 +2660983 +2660775 +1478569 +2661231 +1139893 +2195748 +2070339 +2337548 +2195882 +2195867 +367508 +2497344 +2195097 +2603643 +1706091 +452322 +1880837 +1224891 +2539555 +1224864 +973250 +2603957 +1204372 +1333133 +2860404 +2195022 +1095592 +367540 +1436183 +1068747 +2661391 +2397485 +2337429 +2603249 +2661105 +1224877 +2602568 +452282 +1880761 +1922593 +1402716 +179789 +1031150 +2661041 +926177 +2661241 +2685636 +1358196 +548228 +2539193 +2303743 +2092048 +1574219 +548524 +1963622 +1758178 +2860449 +2604044 +548588 +2661253 +1639955 +2497622 +2196097 +2604058 +2337308 +2757589 +2538984 +2195745 +695921 +1880833 +548582 +973118 +2426741 +1402724 +2195192 +2808768 +2195082 +1922712 +1333126 +2603522 +1880960 +2092061 +452368 +2602589 +1189515 +2539336 +2195390 +2712805 +1706105 +2661214 +1023882 +2712774 +634075 +738993 +2337387 +2497958 +2362811 +2604078 +1678034 +2284276 +2661194 +2195112 +2027254 +1696161 +2070347 +2603781 +2860237 +2337355 +223679 +1436173 +2303746 +1043049 +548374 +2602743 +2397451 +2397574 +2497612 +2661300 +2195490 +2602983 +2337483 +2602942 +2195252 +2661225 +2195975 +20675 +1963636 +2860236 +2539580 +2538944 +2602606 +1806135 +2497804 +2043057 +2195937 +2712800 +2661019 +695936 +1504824 +1095566 +2065890 +1922778 +1696128 +2724136 +926085 +1189552 +2602730 +2194985 +2539248 +367547 +2602619 +926144 +1574086 +1963659 +2195272 +2602628 +738969 +1204367 +2337229 +695869 +452372 +2661416 +2603511 +1835728 +2602607 +1922701 +2195498 +2397397 +367525 +97513 +2397331 +2397228 +2337409 +2844239 +2195555 +2497664 +223670 +2397562 +2337350 +97417 +2602907 +2661020 +2284279 +1922649 +2603890 +2860413 +1095530 +2539281 +2603610 +2603121 +695903 +548511 +1436178 +1758211 +367561 +1805939 +2092374 +1922635 +2092212 +926129 +1880816 +2497833 +2444859 +1696151 +2685625 +2602890 +2043089 +2602633 +20603 +2660838 +1574220 +2603790 +2195764 +2196058 +2270221 +1654410 +2661047 +2626418 +2092136 +1922728 +2603034 +2603385 +2337250 +1806090 +2701284 +1922583 +2661269 +1639946 +1023865 +2603212 +20501 +2603234 +2757547 +2043058 +1880951 +2195388 +2303739 +2337432 +2602963 +2660903 +2602721 +2092041 +2539140 +2092127 +1696226 +2604000 +2603166 +1402706 +1279137 +20481 +2070337 +2539453 +1696233 +2362642 +1922784 +807047 +2661201 +2362801 +2497531 +2195201 +2397427 +2196133 +1806093 +2602556 +2497864 +1279188 +2497524 +807167 +2539474 +2603246 +2337304 +2008951 +2808791 +2397593 +2539368 +2661090 +1574137 +2497693 +97380 +452336 +2008953 +2497555 +2603327 +2497737 +20606 +2397378 +695832 +2661284 +1706096 +2337221 +1504868 +2497934 +1402709 +2603487 +2337386 +2603290 +2070321 +2603179 +2860408 +2362797 +1756027 +2603599 +2497741 +367526 +2092203 +2603190 +1649026 +1224953 +2748655 +2195127 +2397598 +1880946 +1806133 +2092101 +2603194 +973094 +1758213 +2701278 +548578 +2497379 +452328 +1806073 +2278949 +926172 +2603177 +2808788 +2092145 +1436040 +2070313 +2603965 +2724145 +2602987 +2860444 +926125 +2337467 +1224934 +2661191 +1706125 +2860376 +2602614 +2303774 +2195594 +361183 +2196123 +807045 +2195138 +2539441 +2092060 +1376595 +1835733 +2660716 +2397250 +634134 +2603962 +2603673 +2397377 +2337325 +2682868 +1922646 +2195386 +2092286 +807112 +1737720 +380176 +2194998 +2692626 +634119 +1696247 +2539371 +1189616 +2602751 +2757530 +2195048 +1436027 +1922738 +807147 +97401 +20431 +2539582 +2195797 +2539485 +2397425 +2195324 +1436122 +1574296 +2091929 +2195804 +2092053 +1358205 +2660865 +2196055 +2337503 +2303748 +2497919 +97464 +2604009 +2685620 +2808787 +2539064 +20631 +2661212 +179799 +2092104 +2497417 +1204381 +548518 +2497963 +1224873 +1574058 +2043072 +2362761 +210796 +67218 +2196205 +2602722 +2042942 +2497775 +2497720 +2337348 +2195425 +1922810 +2284244 +2195362 +1504857 +2497581 +1758120 +807117 +807125 +548637 +2284248 +2397517 +2195550 +2195795 +2860341 +2497937 +973200 +1504820 +1758171 +2497538 +97412 +1436087 +2497971 +2397575 +2195491 +2303761 +2602575 +2195163 +2539245 +2092133 +761770 +2397332 +2660704 +1504880 +2195756 +1922632 +2195906 +2042966 +926166 +2603100 +2024435 +2397403 +2660815 +2337440 +452314 +2539445 +2092147 +2603020 +2397368 +2539038 +2362673 +2539041 +2196189 +2196276 +807058 +2196266 +1574095 +210795 +548411 +1758254 +2497906 +1436097 +548526 +1574153 +1189517 +1758146 +2602905 +926092 +2603647 +2539084 +2660859 +1806125 +1436121 +20411 +1758185 +2092047 +1880858 +361169 +2602698 +367555 +2362773 +2195951 +2091934 +1696124 +2195273 +2603145 +1963700 +2091987 +1696115 +2808763 +1922638 +548553 +2270232 +2092130 +1189555 +1333211 +889724 +2362688 +1189550 +1835659 +20721 +1805935 +2860401 +2195501 +725706 +1806002 +2092045 +2860333 +2441323 +2195016 +2844213 +2729281 +2397497 +1574292 +2196051 +2091982 +1696075 +973208 +2195004 +548475 +1436132 +1880927 +2195977 +634129 +1163810 +2539306 +2092224 +2497898 +2701306 +2660941 +1922604 +2092350 +2539395 +2602938 +2602594 +223687 +1880846 +2092304 +2539264 +2337463 +2660960 +1095526 +654645 +367516 +2337329 +2539310 +548231 +634138 +2362759 +2603996 +2195699 +1805976 +2092356 +2043018 +1574136 +2497969 +2195183 +2602618 +1963613 +1806028 +1639933 +2539365 +2539566 +1436124 +1922581 +2397402 +2603727 +20542 +2195715 +2196070 +2337579 +2418997 +1737819 +1333143 +2604021 +1574024 +2092344 +2603705 +2195536 +1922791 +2195238 +2603239 +1504816 +2091975 +2603517 +2092110 +2362747 +1922723 +1713827 +20711 +2194988 +548329 +20498 +2602796 +2538988 +2712799 +2091996 +1922637 +2860286 +1758175 +926100 +2043101 +2602922 +1436045 +2539425 +2860291 +2603861 +2539332 +355772 +2397518 +97543 +2661254 +1189524 +2712765 +2539573 +2043002 +2195813 +2497421 +2092072 +2497578 +2337526 +2497874 +1279151 +2444860 +2337239 +1963641 +2701303 +2195302 +2009967 +1737773 +452345 +2195963 +2418992 +2661450 +1204368 +1706120 +2602581 +2195126 +2195090 +179793 +2195012 +2660839 +2497688 +2195603 +300908 +2603271 +1189543 +1978917 +2497432 +2195705 +1835706 +2195608 +2337366 +2712791 +1696198 +2603510 +1189533 +2092222 +2712777 +2603669 +1806077 +2539144 +2008996 +2092215 +2539536 +973156 +1333243 +548457 +1023883 +2602831 +97481 +199200 +2660953 +2441281 +2092284 +2276285 +2603087 +2092028 +2604037 +1436077 +2284242 +2604033 +223704 +2195504 +2603055 +2661268 +2196077 +1706116 +1880961 +1574028 +2603513 +2539275 +973111 +1115120 +2195925 +1095558 +2539320 +1574083 +20523 +1436114 +2497511 +889704 +1737780 +2195725 +1922597 +2603209 +1696104 +1333149 +2660937 +2196038 +1358185 +2538995 +2661306 +2018960 +2844195 +1835721 +2539014 +2602961 +2661457 +1436059 +1189596 +2397224 +2072099 +2497768 +2539249 +1189601 +2603374 +2092315 +2337498 +2660979 +761791 +2397370 +2604022 +2539016 +2497950 +548595 +2303813 +1880948 +973101 +300911 +2362696 +2539398 +2539516 +946518 +2397508 +1224919 +1756026 +1805994 +1696192 +1880926 +1880939 +807151 +1574221 +2860440 +2196170 +2042970 +1189537 +2539126 +1922669 +1880893 +199124 +2043068 +2539206 +2748647 +548276 +2603793 +1806102 +20429 +1297110 +20673 +2660892 +548263 +2397371 +2397546 +2195726 +2105165 +199133 +1574197 +2362729 +1696142 +97488 +2070303 +2091991 +2603067 +548327 +2337412 +2397554 +2660981 +973218 +2757543 +2497505 +2008969 +1963627 +2303829 +2661138 +20412 +2724139 +2195643 +725703 +2660961 +2539513 +761789 +973253 +2497699 +2748663 +2757573 +1835638 +1806033 +2603408 +1880834 +2603093 +2660764 +20578 +2043100 +2660851 +2661401 +2539236 +695868 +2497834 +355784 +2539462 +548383 +2712809 +2660820 +2303744 +1835620 +20537 +2362830 +1639935 +2602861 +2337358 +1279149 +2196281 +2337568 +2539194 +2195307 +2278948 +2337438 +807091 +367520 +97431 +2362675 +1163833 +2603620 +2539312 +2337336 +2661018 +1017423 +1758131 +2602845 +2196273 +20574 +1574254 +2497370 +2539430 +2195805 +1758220 +2303822 +1880796 +548361 +2497470 +2603972 +1835687 +2195364 +2497771 +1224854 +2701243 +2602615 +2195908 +1963677 +2196023 +2092263 +2337359 +97389 +1706100 +2337342 +2539576 +1963643 +2092055 +2009012 +1880888 +548227 +20513 +2603887 +1835661 +1963680 +2009014 +2337540 +2337260 +20722 +2497560 +1805982 +2497682 +97430 +2397223 +2661316 +199123 +2092352 +97357 +2604035 +2362665 +1806128 +2092218 +2497554 +2284252 +1255900 +1574073 +2091919 +926134 +2092163 +2603514 +2660809 +2860381 +2603282 +2195853 +1713866 +634169 +2860513 +1333278 +1737831 +2604519 +807349 +2043138 +1881010 +1737874 +2604358 +2196431 +2743589 +2604406 +2604521 +97593 +1881037 +2539816 +1051066 +1333287 +1333357 +1737854 +1224979 +548957 +1835774 +1835880 +1881012 +1881014 +1737848 +2732269 +2539712 +973269 +1943197 +2604325 +761806 +1951988 +1139899 +2539782 +2196709 +2604415 +2092471 +2279911 +1758255 +807369 +1436301 +2604125 +2001488 +973284 +1436234 +2661545 +1115178 +807301 +1737863 +1835927 +1978954 +2337669 +20725 +2196715 +1504958 +1963734 +1436237 +761798 +2441395 +1279215 +1574358 +1835776 +1835758 +1737880 +973298 +1696296 +2830831 +2303875 +2661528 +2012859 +2196662 +2604450 +548911 +548799 +1835966 +973294 +1737894 +1835845 +1189731 +2604196 +1333500 +1963718 +1835777 +2860539 +2724155 +97580 +97612 +1963783 +548952 +1922812 +548725 +2539590 +2604129 +1991056 +1737871 +2397664 +2196722 +2196374 +654667 +2092502 +2661479 +1737923 +1969594 +2732295 +2337612 +2019004 +2019037 +1574382 +1881072 +1574310 +548942 +2012849 +548972 +1881050 +1835962 +1881020 +973268 +1225009 +2397700 +2732257 +1881150 +2539676 +1031185 +2196355 +548839 +1333303 +926186 +2830830 +2001460 +2196648 +2303876 +1835815 +367570 +2337617 +1835822 +1436216 +1881124 +1881041 +548905 +2860530 +695979 +2604377 +2604439 +1189681 +654707 +1095639 +1333284 +2604153 +1951973 +548724 +1922819 +973291 +1943189 +2196383 +430288 +2497988 +1678067 +1696282 +2196438 +2604142 +1963724 +548714 +1574394 +2604481 +1713892 +2661478 +1963768 +2441401 +2043167 +1737910 +1478596 +2284321 +1574306 +2830834 +2604326 +2604420 +1991079 +1781180 +2604409 +2092451 +1333376 +2830819 +807194 +1189664 +742402 +1574336 +2661475 +1333495 +2397739 +725722 +2604327 +2604431 +2196594 +2019034 +696005 +2712859 +1367814 +2604430 +725734 +1504985 +2724159 +1115161 +2092439 +2604351 +1333407 +2604294 +2539615 +654690 +1163838 +2092462 +2539751 +1881049 +97589 +654677 +1963723 +2441391 +97585 +2092433 +1663484 +2426765 +1978964 +1835878 +1333343 +1333370 +1835808 +1333392 +2441392 +1297117 +1963733 +2362900 +1095597 +2397670 +392643 +481573 +548830 +2043122 +1737873 +1255911 +2604466 +2397674 +2732229 +2012828 +2070367 +1737852 +1663481 +548893 +2539668 +1574325 +2604205 +2196495 +2001534 +1436295 +1713893 +2539715 +1189717 +807380 +654683 +2043212 +2092545 +1189678 +1333344 +1881130 +2604492 +1737917 +2092510 +2441384 +2712844 +1978979 +696040 +1056549 +2732223 +1978970 +1333501 +2604353 +1835754 +2043235 +199236 +1713858 +2604452 +2604252 +2539663 +2604151 +2661562 +2043159 +695975 +1436298 +20735 +1333271 +1189697 +2196649 +2012843 +2043217 +2757616 +2043220 +1881066 +1978993 +1189707 +2001504 +1333452 +2018982 +2001539 +1881015 +548744 +2362918 +2337670 +1881078 +807355 +1095646 +1068772 +2196610 +1835823 +904739 +1678066 +2604203 +807306 +548808 +2001526 +2337685 +1963721 +973266 +1881055 +2001496 +1835809 +2303882 +807212 +2196574 +739009 +1963746 +2685650 +1115180 +1436241 +1737864 +1943204 +807284 +2397760 +2196430 +2661506 +2539720 +1436281 +2740588 +2196359 +1095622 +1713889 +761810 +2604548 +2362885 +1574436 +2196737 +2397719 +1758257 +2001479 +2604148 +1372426 +1835931 +2196504 +1678044 +2441388 +2701373 +1436258 +548665 +1333355 +2712869 +2743569 +2808811 +2604219 +548752 +438613 +1345171 +807341 +97597 +2808836 +1835869 +548961 +1881135 +2498047 +2661499 +1372449 +1881089 +2860528 +1881154 +2303883 +1189729 +1224980 +926215 +2661520 +2303887 +2337636 +1189770 +1504984 +481572 +1333396 +548716 +1881056 +1436231 +2539706 +2196708 +1835917 +2808850 +1881002 +2498024 +2604348 +2604318 +807368 +1189691 +2196635 +2808831 +179832 +2661476 +973293 +2397675 +2001509 +2196454 +2196489 +1574312 +2196340 +20727 +1835753 +2732256 +2732225 +2012851 +2196526 +1943213 +2743588 +2001485 +2070358 +548762 +1436208 +2539743 +2712860 +2196600 +1978965 +2539793 +1737877 +548674 +2397692 +2701320 +2808810 +1172838 +973304 +2724186 +2303879 +1574428 +1835839 +1225006 +2284293 +1835846 +2092528 +2196462 +548692 +1767675 +1255924 +2661573 +548706 +1095637 +2729289 +2732262 +654681 +1172836 +1663480 +2337680 +742418 +2303881 +1963757 +97610 +1189674 +2498033 +548967 +2539708 +1758259 +1333354 +1835955 +1737841 +1333391 +2604511 +2441377 +807198 +807223 +2604119 +2860471 +807359 +716292 +2712886 +1991086 +1051065 +2661511 +2196321 +1279228 +1189688 +2043219 +2012864 +807381 +1663490 +1333484 +2860497 +1943200 +2092542 +2539604 +1951984 +1991061 +2397718 +1991075 +1333404 +1951985 +2498016 +97572 +725724 +1881019 +1574364 +2830805 +2701392 +1115177 +1224986 +1835757 +2279909 +2019024 +2732299 +2539721 +1951969 +2604320 +1781181 +1767685 +2604306 +2196570 +548966 +2001493 +2362921 +1963779 +2539788 +2009032 +2830824 +2196576 +2661522 +1678060 +2732250 +2012816 +1333270 +2539725 +2724148 +2196656 +1358222 +1835936 +2196732 +20730 +1963778 +2498039 +1372418 +2092392 +1835769 +2196621 +2724175 +2712865 +2732268 +807331 +1574409 +2743574 +2092456 +1963755 +2604340 +1696291 +1663486 +548681 +1189726 +2732237 +1737887 +2757617 +654702 +2196328 +2732272 +2397771 +2757615 +2539790 +695984 +548682 +2844243 +1333508 +2196629 +2362860 +2441404 +2729284 +1835799 +2426766 +2498025 +2362865 +742398 +1279212 +179831 +2701344 +807325 +2604186 +1379377 +2196615 +2732263 +2539589 +2196725 +1172941 +1696311 +1333537 +1737978 +2197205 +1133710 +2701444 +549256 +2303968 +1836379 +1172905 +1505163 +1836369 +1663581 +355797 +1714044 +747239 +2712904 +2701506 +549170 +1574810 +1979015 +2043440 +1963832 +2196864 +2604934 +1095673 +807648 +1922845 +1696300 +904808 +1963854 +1056579 +1922891 +2661636 +2092612 +973373 +1079988 +1574627 +1836382 +2498177 +1943246 +430354 +761823 +1574540 +2604713 +1333817 +2604894 +2197216 +1836330 +2604862 +1436478 +2043419 +1678068 +361194 +1505245 +2540319 +2540124 +2196768 +2043480 +1436387 +2540184 +1835975 +1485622 +696228 +549181 +1963964 +973406 +1963934 +1881413 +1574502 +1333741 +1979030 +2398030 +2043314 +1574508 +549020 +2304025 +1574754 +2604940 +1095795 +2043366 +2397883 +1738017 +807509 +1056583 +2498105 +2540556 +97636 +1714035 +2540224 +2701478 +2197202 +973393 +725753 +2701451 +1737986 +2743611 +1189822 +2197071 +2092737 +1881440 +2701424 +2397917 +2397811 +696279 +2604880 +2661697 +1060746 +1836065 +973401 +20747 +452481 +1086695 +549295 +747240 +1333857 +1836547 +1358257 +1031224 +1737938 +2701509 +97711 +1836322 +742429 +1574466 +1115186 +1678103 +1485612 +761883 +2092716 +1505194 +223764 +2043267 +1190009 +2070417 +1943258 +2661723 +1574585 +1767706 +2337723 +1189989 +1505303 +1505179 +1707247 +1505046 +430458 +67257 +1333825 +807692 +2001563 +696139 +1333866 +1963899 +2661755 +223748 +761825 +2304044 +1707233 +1836552 +2043447 +1836257 +1881208 +1574653 +2661675 +2441442 +1505132 +1663536 +2540306 +2092656 +2539861 +747246 +2540340 +1574581 +1881501 +2362968 +430460 +973391 +2540507 +1505105 +97674 +2398024 +1881359 +2604958 +1922842 +1714052 +2540052 +2743635 +1574676 +452452 +1806170 +2304029 +1095712 +2540029 +807559 +2661590 +1574525 +2197060 +1086697 +2498072 +2604957 +1881555 +926307 +2604946 +1663517 +1189838 +1485645 +696283 +1115249 +1836533 +1505020 +2540259 +1881171 +2043353 +1881566 +889738 +1436329 +367609 +2498145 +430411 +2043444 +549145 +1051078 +1969597 +1189886 +1781187 +1051068 +1574531 +1836281 +1505019 +1574642 +1246750 +1835984 +1574551 +1758260 +2196760 +2043359 +2197203 +2397864 +2196996 +1279305 +926329 +742443 +2540436 +2701498 +2070419 +2661614 +1574748 +1836253 +2540408 +2196977 +2197058 +1505156 +1189854 +1436372 +2685662 +2604873 +1395956 +1963848 +2092847 +97772 +1696321 +1436455 +549311 +1333874 +2337708 +1225108 +430415 +2540498 +1436331 +1056615 +2196982 +1714093 +1881471 +2092593 +1333559 +761851 +1574497 +1333832 +1333609 +807526 +2605101 +2398012 +2362931 +1836231 +2196963 +2540264 +199284 +1836574 +2092574 +2540457 +973382 +1738119 +1485623 +1333784 +2604740 +2441411 +926351 +1836109 +2196793 +1881529 +807451 +1574576 +1738072 +696056 +1836196 +2070467 +807676 +2539885 +1820547 +2092576 +926244 +2701504 +725773 +1505250 +2397925 +1836010 +2197008 +2092564 +367627 +2604622 +2604644 +2196894 +807563 +1056610 +2303952 +2196959 +1189794 +807519 +2701528 +1574577 +1881355 +2685659 +2001542 +2196780 +2605114 +1574699 +1781195 +1707256 +696115 +2197049 +430305 +1189827 +1713926 +2661681 +696207 +1574539 +2539887 +1133712 +1767697 +1781202 +1663578 +926260 +2539883 +452454 +1333873 +1820582 +2604757 +199261 +2604672 +1737946 +2605031 +1881444 +2092750 +1836416 +2397921 +807483 +1881415 +2604687 +2605076 +1436439 +2337712 +2196750 +430397 +1068795 +2540394 +244769 +1392415 +2426798 +2426816 +696108 +904798 +716303 +2284380 +1358255 +549107 +2303977 +2043380 +2540474 +1881495 +926328 +2197268 +1095773 +2605052 +385404 +2196979 +1737958 +253991 +253992 +696215 +1714026 +2092728 +2732359 +1713928 +1881496 +1056600 +2701454 +549108 +320542 +2426833 +2197004 +1279293 +1190066 +1333581 +2363057 +2712920 +1333712 +2540420 +696158 +2701418 +452563 +2441437 +807649 +2441446 +2743634 +1714121 +1836279 +926347 +1333782 +549131 +1678134 +2397908 +1881203 +2196806 +2540190 +654734 +2284368 +199304 +2604626 +210831 +2196858 +548999 +807499 +1297121 +2398036 +2757634 +1436370 +1836348 +548981 +2540180 +1836193 +2304009 +1836517 +1172935 +1068810 +2539926 +1767719 +1663542 +2605016 +1115221 +2604791 +2539844 +2605006 +1574786 +2092681 +1095771 +2540558 +2284365 +1767694 +1836345 +2604621 +2426802 +2092725 +1836132 +2661682 +1333746 +1836474 +2197106 +2540166 +2304011 +1836194 +2363042 +452447 +549106 +807556 +2197027 +926337 +2604655 +1737933 +2604668 +20818 +1707259 +1678107 +1031221 +2070383 +1505093 +1881534 +2604633 +1372464 +2362997 +1836551 +452540 +1713901 +1056604 +807396 +1738069 +1881603 +926315 +549139 +1505200 +654735 +1043052 +1279357 +2197177 +549164 +430335 +2196978 +2303930 +1436398 +1505129 +1505048 +1943225 +97669 +1095786 +328311 +1678083 +2337763 +2498167 +2363066 +1189967 +1574694 +2540485 +1031210 +1189815 +2284353 +2397947 +1133702 +1436484 +2540164 +1696310 +1835998 +1881341 +1881188 +2197117 +1836251 +2540117 +1806169 +1996786 +2419049 +1767687 +1836366 +2604949 +2398014 +1707212 +1820579 +1333577 +2196984 +67252 +1979036 +2540043 +2284346 +747249 +1696299 +1095689 +1115230 +1189931 +1696308 +1190119 +199267 +1436334 +2661665 +1991092 +430408 +2196829 +2540083 +2732331 +1881523 +696242 +2701557 +696138 +2043418 +1190059 +1574666 +1574722 +1204391 +2092673 +2540318 +1068816 +325939 +1836576 +1767718 +1678096 +2701415 +1836486 +1881302 +452502 +430318 +1189951 +2196855 +2043292 +2540465 +1017452 +1820581 +1436381 +1485559 +2397794 +1574556 +1836179 +1663596 +2540296 +1056594 +2605085 +2604639 +1478599 +1225098 +438618 +549291 +2197006 +2540091 +2626445 +2414789 +2196974 +1738007 +2540118 +807501 +696171 +1649069 +2498079 +904802 +2540341 +1836051 +2661721 +300946 +634222 +1485574 +1714081 +2712912 +1881588 +2398033 +1881186 +904774 +1068784 +1963876 +1663555 +2712896 +430452 +1115188 +1881387 +1189800 +430373 +1017455 +2197010 +1279276 +1086711 +1333616 +807750 +2304017 +973412 +2363080 +2397846 +1835999 +2397781 +1172872 +1663523 +2661627 +761839 +2197111 +2092821 +1881612 +1189970 +761845 +973320 +1163849 +20741 +1836402 +1836064 +2701439 +1963880 +549280 +2043370 +1713947 +2196846 +1758263 +2661591 +2196917 +1881284 +1881174 +1737953 +1051086 +1574597 +973370 +430381 +1714102 +367596 +2196928 +210827 +452522 +2043350 +2197095 +2661596 +1095671 +2604648 +549093 +2043335 +2661734 +1279343 +2498096 +2539935 +742440 +1485579 +1190098 +1881567 +2539915 +1190069 +1574592 +807722 +1767710 +1115258 +1836492 +1991094 +549259 +2540478 +1836535 +1189842 +807591 +1505239 +1713991 +2701555 +807752 +549120 +1836298 +1485596 +1836062 +2337777 +807655 +926295 +2604811 +1279316 +2397942 +2284379 +2701421 +1881462 +1095719 +1881589 +1738089 +2043277 +1574701 +807525 +1190126 +696085 +1713975 +904756 +2092732 +2092788 +2604893 +1095831 +1836456 +1881289 +1505169 +2604762 +2043501 +2685661 +634191 +2604598 +1189880 +97668 +1836479 +807716 +2701480 +2540462 +1678124 +1172906 +807568 +973366 +2362966 +1767688 +2539947 +549074 +1574790 +2540551 +2604739 +549224 +97763 +2092805 +1051084 +1836557 +2337726 +1881411 +2604885 +430396 +2540320 +807414 +2397961 +2362947 +2605125 +1358253 +199317 +2043262 +1115253 +1767699 +1836130 +2397923 +223738 +2540475 +367615 +2605023 +1836406 +1279275 +2363040 +1663512 +1225114 +2397980 +1367818 +1333868 +2397902 +1505010 +1979040 +807773 +1436376 +2397890 +1279379 +1678118 +2070447 +549252 +1436365 +2337752 +2397821 +430468 +1696320 +696253 +1574578 +716299 +1133703 +1836449 +807437 +1333539 +1836018 +2092787 +1663572 +2284389 +2701401 +807567 +1836385 +2304050 +1707227 +1707254 +367610 +1881553 +807709 +1836538 +807592 +1836216 +2540334 +1436374 +2197192 +430348 +2070463 +1574560 +1714013 +1345191 +1190064 +1333823 +1678113 +696167 +1189899 +2498091 +1505114 +2661710 +807668 +1225090 +210821 +2540308 +2604723 +1333770 +2743605 +2604674 +761864 +1574660 +20790 +2043468 +2197112 +2197168 +1189958 +452465 +1436447 +2661615 +1333751 +2397957 +2604861 +2197119 +1836095 +2304019 +2701414 +696128 +1738103 +904758 +1943235 +1836446 +2398040 +1922849 +1574784 +1714019 +1478604 +761852 +807512 +725764 +549246 +1714078 +1836092 +2540545 +2303949 +2740604 +2604581 +2397839 +2701512 +2043492 +2604912 +2539897 +1836271 +1056571 +1115282 +1115271 +2701395 +696216 +2092559 +1151711 +2303967 +67261 +1836291 +549216 +634182 +2605062 +1190031 +1738116 +97732 +1574761 +1574634 +1881225 +2540415 +549150 +1485592 +2701520 +1714090 +2337749 +1095806 +549221 +2337746 +1436461 +2540479 +1133714 +1189985 +1333669 +2197234 +2540330 +1836103 +210823 +1820569 +430369 +1372465 +420399 +1943217 +2743640 +761872 +1836480 +2540336 +1255938 +2196948 +904782 +1678076 +1836532 +2197057 +253996 +904788 +973387 +2304057 +548998 +1835974 +1333838 +2196887 +2197171 +1820576 +2397941 +452506 +2092658 +1943231 +1806156 +2539928 +2197118 +1836434 +2043394 +549232 +889736 +1505168 +430322 +2012887 +1881613 +1836099 +2701538 +1881533 +2019043 +2284400 +1881317 +2304047 +2732325 +2362981 +2701511 +2661622 +2397835 +1836399 +367583 +1881344 +549086 +2092664 +2092736 +973360 +2540373 +1345194 +549059 +807614 +1738057 +1836523 +1190035 +1881491 +1095718 +2196994 +549203 +2604606 +1963913 +430388 +807721 +97733 +973404 +2498155 +2196808 +2196950 +452433 +1095828 +430393 +807660 +1279285 +1189867 +2540026 +973408 +2540523 +549091 +1836307 +2604587 +2398048 +2498135 +761873 +1943241 +1189969 +2540175 +2397849 +2362989 +1095672 +926269 +2604853 +1333632 +2304055 +2092660 +452438 +2661602 +1068802 +2043386 +1881590 +2092835 +2196860 +2604993 +2043328 +1881528 +807710 +1836506 +549036 +1304701 +807394 +1738124 +1095819 +1881202 +2540086 +1436359 +2310120 +1095758 +1836043 +2197072 +1333776 +253997 +1190105 +807761 +2303921 +2304082 +2539892 +696193 +2196849 +1678109 +654712 +2001547 +2604777 +2092647 +1678130 +2604618 +1436470 +1963956 +2701499 +1881461 +1714017 +1127941 +2043320 +2540476 +696114 +2540359 +2540045 +2661664 +1115250 +20794 +1713937 +2043244 +1963928 +696183 +1189896 +1881303 +549133 +430410 +1678137 +1836305 +2397953 +549033 +2043269 +1297122 +1505066 +1836086 +696125 +1304704 +2070458 +1963954 +1189777 +1713905 +751100 +2043478 +1737970 +696275 +1835988 +2363038 +1737949 +2604553 +1505290 +430466 +904759 +1714055 +1881286 +1922852 +179841 +2661722 +1922886 +1505056 +761880 +2092785 +1678084 +2604914 +2540331 +1190007 +1881268 +97651 +1663545 +2661699 +2284385 +549310 +807487 +2092808 +549069 +1881207 +452558 +1485571 +452548 +1767724 +1255935 +1172909 +1400025 +367716 +1225193 +2197392 +739031 +438657 +1095863 +452627 +1881673 +634285 +1204405 +367678 +1333957 +1190314 +2304143 +97908 +2844254 +1333960 +2197402 +1836759 +67287 +328328 +2844343 +2043523 +1836774 +1678146 +2304096 +2363168 +2844346 +549394 +634247 +2070498 +1046905 +1881654 +2197366 +1574890 +1172974 +430518 +973457 +385447 +1190239 +97786 +1963976 +328329 +2844319 +549372 +807847 +254022 +1333933 +1574866 +634282 +1190219 +430483 +1820616 +2092868 +747265 +1922894 +1836678 +1836726 +1115290 +2498191 +2605242 +1738168 +1279404 +2540622 +926424 +1963991 +634249 +1574973 +494498 +254033 +481598 +320552 +1836717 +549413 +97843 +1806183 +1991095 +320547 +1996799 +179867 +2605184 +2284481 +20825 +2419051 +2363119 +2540602 +1922908 +392657 +1963979 +1190328 +2605192 +2284426 +1820617 +807816 +2284482 +430474 +1881757 +2304112 +223833 +2441478 +430485 +1781212 +1095867 +97826 +1190261 +2398126 +2337811 +420404 +1821894 +1663638 +470859 +1333976 +2304116 +1204397 +296039 +1721040 +1574838 +438639 +1881681 +1574971 +1190308 +1663627 +1225239 +1836734 +2540631 +67283 +1881753 +2844303 +1095868 +325940 +2092916 +1836730 +223793 +549348 +481600 +634306 +2661786 +1172946 +1881717 +2284473 +244786 +1190253 +2398083 +549339 +2092948 +1574889 +367694 +1836651 +1963999 +2498235 +634258 +430540 +67278 +385414 +926439 +1190156 +1881803 +1246772 +2070485 +494507 +1392427 +2540666 +438647 +1095845 +1881713 +1246758 +2844312 +1806186 +2605217 +1043058 +904829 +244789 +2337787 +385416 +2605194 +430529 +2001580 +430517 +2304090 +452682 +380194 +2363184 +1333922 +2398105 +1574916 +2304110 +367729 +2661791 +1190276 +2197345 +2540654 +549371 +2363174 +328339 +97780 +2070492 +1163865 +1738127 +1139954 +2498212 +1963973 +2661776 +1333980 +1379381 +1820611 +1881732 +807870 +1836766 +1436509 +223810 +452685 +1836760 +1392425 +244803 +1345207 +1767730 +223790 +1922907 +179874 +367711 +2092976 +1820673 +1246770 +1075752 +2605252 +1574935 +1139959 +807834 +1836740 +179877 +2197374 +2426856 +1846609 +430480 +1172976 +2284453 +2363176 +904821 +1820644 +2197394 +2304091 +1190431 +2398100 +1836721 +1173008 +1115295 +926382 +1133728 +300971 +1172972 +2626454 +1190401 +2197385 +2414792 +97795 +2844325 +1821912 +97810 +1574963 +1190277 +1176478 +2197296 +1333920 +2605235 +367709 +926380 +430530 +926400 +1190377 +452642 +926436 +1225278 +1767745 +1139939 +2441467 +1505316 +1225137 +1963998 +1255959 +179883 +2844347 +2363087 +1836773 +1115296 +549358 +300972 +1400022 +1115292 +2661792 +1836809 +2414791 +2540645 +328323 +2540606 +1436518 +2844268 +2024457 +1190146 +1820686 +1095842 +1836801 +97825 +20843 +97796 +696332 +385421 +430500 +438666 +2844294 +1821898 +1836765 +367663 +2092870 +1139946 +300978 +1176486 +199340 +1979042 +740095 +355804 +179889 +1031229 +1881715 +199374 +1088182 +1204399 +97903 +392668 +1574878 +2284467 +1190203 +430551 +67282 +807825 +2304135 +2661761 +2540632 +481609 +634307 +1225274 +973442 +973436 +2092960 +807843 +2540568 +2605231 +1922899 +2304106 +281294 +2092970 +199342 +438632 +1881678 +1225218 +2398061 +1881668 +1639975 +1574845 +1190195 +286355 +20848 +1190305 +1714142 +1574839 +1952004 +2284438 +549405 +1821891 +1436504 +2398067 +367725 +807802 +1139936 +1836601 +361199 +549352 +494509 +1190408 +452621 +331768 +2398086 +2043519 +1836767 +430560 +2092872 +1781218 +2197323 +2363150 +2844348 +97896 +716309 +1836784 +740096 +1190249 +742451 +2284417 +2092875 +1881785 +2661782 +1190283 +2092968 +2844267 +199343 +761906 +1333890 +2304137 +470860 +2197320 +2701580 +926415 +1333955 +494496 +2197334 +1190263 +2605150 +973444 +1836600 +1820632 +179891 +1836790 +1714136 +97888 +1169818 +481642 +385420 +1333906 +420405 +1574933 +549389 +1297128 +1836737 +1922920 +673153 +481632 +1225238 +1190200 +2197290 +1767740 +452650 +761911 +1836722 +1881836 +1505356 +807863 +1756040 +1255956 +1079990 +549397 +481601 +254041 +1345209 +1333946 +481638 +2043516 +494505 +97882 +97874 +2398136 +1333947 +1333936 +1820608 +1943285 +1905793 +1345203 +97818 +286357 +2304130 +1279396 +393955 +1151720 +300973 +361207 +320553 +1345202 +1478612 +2197399 +807868 +2019060 +2363162 +549354 +1922893 +807893 +1172954 +973438 +1190341 +1574885 +634305 +549407 +1836581 +430567 +1836682 +1996800 +1836589 +807864 +1806178 +1086718 +2605227 +2092915 +2363151 +2363124 +1279398 +634261 +1738144 +199360 +438648 +1297126 +1821906 +2092963 +1190149 +67299 +430481 +2363105 +430503 +1127947 +2540610 +2304126 +2304089 +1436528 +2197284 +1031227 +1173004 +2284440 +807874 +1225200 +807865 +2284466 +1836758 +367695 +696334 +1190152 +1190338 +2284456 +1095859 +1279394 +1738146 +2712932 +2092874 +1204411 +2661769 +2605222 +1505385 +1575076 +1922951 +2197445 +1505389 +67324 +97922 +2605343 +1575043 +1882040 +2605328 +1905796 +1436534 +1056686 +199406 +1781251 +452719 +1190589 +1255991 +1881913 +549455 +367749 +20876 +452715 +97936 +2661825 +1575000 +1781225 +1575104 +1575120 +2426861 +1115352 +1836813 +2426875 +1806207 +2197479 +2093011 +1190527 +973511 +761918 +2605440 +430578 +1190553 +2498274 +696423 +549508 +2498320 +2197497 +2605311 +973477 +1836902 +2540681 +1575121 +1575125 +1922974 +328349 +807925 +2012904 +254050 +696405 +1095917 +430605 +549499 +696368 +1575025 +1225350 +2337879 +1056657 +2441502 +634320 +1575020 +430573 +452765 +2498326 +973488 +494518 +2661832 +807946 +1836892 +2498341 +2605268 +1255997 +1505439 +549526 +1190522 +1696343 +199377 +1979059 +1836939 +1151733 +1836929 +549434 +1056649 +2337816 +1173012 +1836944 +2540726 +1836948 +1505417 +2498248 +430603 +1031253 +1334018 +2540754 +2197528 +2019078 +1575063 +926495 +1279407 +1225394 +1678188 +2540690 +2605341 +1836817 +549435 +2712934 +1190530 +1163876 +2337861 +1225379 +1979064 +1881939 +452727 +2093037 +452732 +1881961 +2398172 +1882017 +1575006 +1436584 +2019076 +1881930 +2197456 +2304241 +1882075 +973502 +1256000 +2441521 +1881888 +2605315 +2304242 +1882066 +1696357 +1943293 +2540712 +1575014 +1836918 +1115334 +2304202 +1881941 +634325 +2605430 +1696354 +696377 +1204424 +2540702 +1436531 +807947 +1881982 +2197531 +549454 +2498307 +2304239 +2093015 +1095872 +1882045 +1139970 +549517 +2093027 +452743 +2605464 +807909 +20890 +1881960 +2197503 +2304232 +2605414 +2426874 +549444 +1505370 +739043 +2871104 +2337838 +634333 +2498338 +1767762 +696379 +20900 +1781228 +2304166 +328344 +452716 +1190561 +654768 +1649079 +2605325 +1696370 +328356 +2441501 +1505363 +1225319 +199417 +2441522 +2605357 +1806221 +1696337 +1358274 +973496 +20863 +1696364 +1056669 +2498283 +742461 +452775 +199394 +1575108 +452761 +1505388 +452755 +1575030 +1922967 +696415 +1836839 +725802 +807930 +2498291 +1068874 +97928 +2398189 +1836826 +634321 +300997 +761923 +1678193 +1051099 +20869 +2093016 +1881859 +1225302 +1964002 +1068858 +2441482 +889769 +1505448 +2441507 +1068854 +20946 +223844 +1881944 +549503 +1139965 +2605337 +2757638 +1881885 +973508 +1836887 +2605456 +2540716 +1806240 +1225382 +1881999 +1505421 +1115310 +1881846 +2605421 +1151737 +1225359 +301002 +20901 +1922942 +1767775 +2661860 +430602 +1738191 +1678186 +1115332 +1836861 +1881949 +2540697 +1781226 +2441519 +2441499 +1696360 +1881953 +747275 +1781240 +2019075 +1836866 +1882024 +926513 +1575138 +1151742 +807936 +97931 +2304204 +1505379 +1505458 +1781259 +1678185 +1836919 +2197431 +1436540 +1881991 +926450 +1575102 +1738184 +2605273 +254053 +1225351 +2498287 +2398146 +1079998 +1056666 +20878 +1225395 +2498279 +1575097 +430597 +807903 +1882077 +739046 +1922989 +973471 +2540673 +2498278 +1922977 +1922978 +97932 +2197469 +1436578 +1190633 +549424 +807975 +1163868 +1079999 +2605276 +20921 +1836889 +1979055 +430572 +696396 +807945 +1882044 +452773 +1190508 +973482 +2426860 +1505415 +430577 +367759 +1836908 +1881915 +430625 +904835 +1225343 +2093018 +2498261 +1922983 +696390 +1056685 +2093028 +2661842 +973461 +1575050 +1996802 +2605329 +20923 +1056688 +2197545 +696393 +725798 +696362 +1836954 +1881987 +1575001 +1881857 +1436570 +1190554 +20919 +2441525 +2337833 +549518 +385459 +2197512 +2337854 +1095871 +1882060 +1190592 +1575029 +2337853 +97915 +1505426 +2304224 +807955 +1738197 +481680 +1882019 +1139973 +1436575 +1767761 +1714153 +1333987 +1190611 +1139994 +452739 +549482 +452712 +1836818 +1836895 +1707271 +1836947 +1225356 +2043538 +1522404 +725809 +2197596 +1505464 +1979068 +67335 +2605465 +2093047 +2540785 +1436597 +210866 +2605474 +634377 +634351 +549562 +1190674 +808014 +1781262 +1969610 +716321 +889782 +210875 +1095929 +2661867 +179909 +1575161 +1345225 +1639979 +807988 +199426 +301007 +2304251 +1056701 +634362 +1436618 +889781 +740104 +2197594 +634339 +1190655 +549574 +2605482 +1279422 +2540776 +1345222 +1505487 +438688 +2028913 +2093080 +808000 +20951 +716318 +2197623 +2105180 +438689 +210881 +1964019 +1505517 +1436623 +2028910 +1056702 +1756043 +210865 +20958 +67366 +1905799 +1979076 +2498345 +1522399 +716325 +1056695 +1943307 +889794 +1225402 +696447 +2093043 +1190673 +1127952 +889784 +889788 +634346 +889789 +1068898 +2304258 +2105194 +634344 +210872 +210869 +1436622 +808024 +328363 +1279418 +2001588 +634402 +634411 +1436629 +2093073 +1279420 +807998 +1345239 +1127951 +2540793 +1095931 +1639986 +1818167 +740103 +549556 +67375 +20956 +1345238 +1505473 +2093078 +808017 +1190683 +67377 +1056706 +2105193 +1246778 +1279427 +1086722 +1505498 +1176489 +244834 +1279417 +244814 +1173025 +179914 +325945 +549558 +179915 +210868 +808006 +494519 +1173026 +2028914 +1334033 +67358 +808038 +716334 +1505491 +1345216 +1367844 +2426885 +1836963 +1522419 +2197619 +1979078 +740102 +2685682 +1345213 +244817 +673155 +733448 +2712937 +1818168 +179926 +1969604 +634354 +2197599 +1979069 +244822 +1478631 +1080003 +716331 +1943322 +67369 +2498351 +2605477 +1505488 +2414796 +210889 +1575168 +1176488 +808045 +889783 +1522403 +1943315 +1313814 +1575242 +98029 +1334053 +1095973 +2093084 +1882200 +2540823 +2808941 +889813 +254112 +2605612 +2605498 +1575186 +1575287 +1225416 +904845 +2398231 +2605550 +2661972 +2441536 +2197730 +1923052 +199460 +179978 +973524 +904856 +97993 +199441 +1882181 +67434 +355824 +1334074 +2605517 +1046908 +1738220 +2043571 +1190714 +20993 +1905800 +2808888 +98097 +1696428 +2540802 +2441541 +1923028 +481694 +634427 +67396 +926617 +1837026 +1190741 +2070550 +1696448 +2070548 +2093114 +2197719 +1505541 +973642 +1505547 +67383 +926546 +2605619 +199436 +1436638 +98083 +67433 +286360 +179937 +1095951 +367818 +2808946 +926556 +2498375 +1017489 +1882152 +1190753 +2605624 +808081 +223870 +1017478 +2661879 +634415 +1575314 +1882231 +1575249 +367783 +1696407 +2337895 +973531 +2304264 +1086727 +2661880 +1738280 +2605541 +973579 +210899 +1738260 +2661943 +973620 +1696438 +2398228 +67436 +1663671 +1505566 +2605575 +739054 +244847 +2498405 +2043554 +1882254 +2605626 +1882174 +430631 +1173036 +549579 +808055 +254102 +2304288 +2605586 +2808900 +2498367 +904847 +1190693 +2043564 +1882244 +634418 +430655 +1575260 +2605563 +20982 +1678239 +1738228 +1190739 +2661882 +223886 +210896 +1575195 +385470 +1190689 +1575332 +1837002 +973545 +2605625 +1225445 +2498434 +1505529 +2498456 +2808915 +2808934 +98001 +1714177 +481693 +2398217 +67401 +385490 +1696424 +452841 +179991 +2337917 +67452 +2197636 +1882237 +1882228 +1190796 +1190749 +549612 +98059 +1836972 +1575338 +2661953 +1056716 +1225418 +904849 +1836983 +1190786 +20979 +973665 +367800 +973621 +452803 +430662 +1738283 +1837006 +2605591 +1190717 +2498453 +438692 +1575253 +973575 +2279915 +1505563 +1678253 +254072 +1882205 +2605608 +98054 +385486 +1017483 +904841 +2498478 +1882127 +1882255 +1115402 +1639990 +926578 +1575176 +2661980 +808085 +452818 +328376 +1505521 +325948 +1837001 +1505553 +494521 +1173041 +2043548 +481727 +808100 +367782 +2197649 +1696425 +2498392 +1806250 +2197675 +1923048 +1836992 +430665 +2498423 +2605513 +1505558 +328370 +98032 +2279922 +1225467 +549590 +481706 +223871 +2197650 +1225442 +1505530 +98012 +1820719 +2043552 +2808930 +889807 +367781 +2398210 +1696422 +1882124 +2605597 +973580 +1738219 +67393 +1358285 +179930 +1163897 +634438 +1882207 +1190712 +2398206 +98013 +1173029 +2398215 +1738241 +696477 +2093119 +1714182 +2337912 +1575350 +1882165 +2304267 +973637 +470869 +1225474 +1190771 +67418 +2070538 +2093103 +1046907 +2197707 +2701597 +67422 +1190705 +20996 +1836964 +2605562 +926622 +2661894 +1836997 +1882122 +2498390 +1575255 +2661984 +1575315 +67439 +20987 +1095943 +1575187 +1334067 +634437 +2363196 +1923027 +1738258 +549671 +2001591 +1575394 +2304297 +1575379 +1837042 +1575409 +725816 +21027 +1225486 +2419060 +1639995 +1837040 +696500 +1190811 +1095978 +1358297 +1358296 +1056733 +634478 +98119 +634480 +926634 +1190826 +2398254 +2001594 +2337939 +2398245 +1738306 +634475 +696498 +2197767 +367823 +2498500 +2398243 +1095979 +1140021 +549655 +1115416 +1225494 +1882265 +1806288 +549630 +2024470 +1190809 +1882273 +98109 +926639 +1056730 +549664 +452844 +2605631 +2337930 +367822 +696489 +1372498 +973684 +808152 +2197770 +1115404 +1190842 +1190821 +244849 +1115417 +549628 +808149 +1837039 +1056735 +549650 +2304296 +2197784 +2197799 +2757645 +1151753 +1575358 +1837045 +2304307 +1575367 +1225492 +926638 +1806290 +2197755 +1190848 +21007 +2498501 +223888 +2197783 +67472 +286362 +808223 +452870 +2605687 +2197838 +1678272 +1696486 +1696498 +1696467 +1837060 +1436670 +808181 +1882296 +199484 +1225526 +1575421 +2662035 +21039 +2498507 +2662078 +1575422 +1575423 +1806296 +2498534 +1781277 +1256046 +367836 +98151 +2605678 +1923152 +2197835 +1923113 +2498509 +367825 +1923114 +1882318 +1575449 +808205 +1923107 +2304312 +2197824 +1256051 +2197927 +2662014 +2197906 +2043578 +761962 +1505606 +2662050 +1334106 +2197830 +1436663 +98154 +286363 +452863 +2662015 +1714197 +1882333 +1882288 +1806307 +1225540 +1256033 +808234 +973703 +2701601 +1696499 +2662051 +2662023 +1436658 +367838 +2701600 +2498562 +926658 +1279438 +1225522 +1923106 +2662049 +1923174 +1882287 +2498522 +430684 +1923170 +1923167 +98153 +2304319 +1225538 +1256027 +1225528 +2498552 +199472 +367827 +1190850 +2740611 +1575438 +98146 +2662054 +1436662 +2605651 +2363201 +1115420 +808225 +2197844 +2337951 +973716 +761954 +904870 +1575442 +2498551 +452855 +98161 +2043581 +904876 +1436674 +1575433 +1436666 +1837061 +1334104 +21100 +2540869 +2498635 +430711 +2304351 +1837168 +98209 +1225626 +1334152 +1051123 +1707279 +1256066 +1837165 +2498618 +2197952 +2662136 +2605758 +2304369 +2093192 +2605956 +21063 +1882446 +808298 +2605871 +2498586 +2498602 +1696645 +1923222 +2662123 +2498589 +1696633 +2662223 +2304357 +1696538 +2605755 +1334123 +2498607 +2441569 +762002 +1436678 +21060 +1882383 +1436679 +1575831 +1923207 +2517764 +1190865 +1837161 +1190919 +973755 +761993 +2198066 +1882510 +1837167 +1225606 +2662179 +1575599 +2498737 +1696627 +2605721 +2398337 +2043604 +1663691 +1806332 +1837091 +1051119 +430734 +1806328 +1173130 +973736 +1190945 +98218 +2197995 +808242 +808359 +1225577 +1575624 +2662230 +1575833 +1575533 +21117 +2419072 +2198072 +2198081 +1837089 +1696647 +430730 +1115436 +1806362 +2197996 +2517771 +1943329 +1225668 +2605915 +1575645 +2662196 +1575776 +2605884 +2093150 +2540899 +549686 +2498757 +1096038 +1575619 +1575840 +1190955 +1068939 +98163 +2605776 +2398292 +808363 +1678291 +1436718 +2662194 +1190903 +2540901 +2498754 +904895 +2498648 +2605804 +2304340 +2605761 +1575620 +1225641 +1575742 +1923230 +2662183 +926731 +1575671 +2757652 +2498681 +1056751 +549690 +2398327 +2284496 +926668 +1696635 +1115448 +2198041 +2540890 +2498652 +1190868 +1923236 +2662213 +1678285 +1115455 +2304353 +1334145 +2517776 +1943337 +1882453 +1882518 +2043619 +2540841 +1738346 +808254 +761991 +2197946 +1173086 +904896 +2093145 +223899 +808288 +926694 +2498775 +2338044 +1837193 +2498770 +1190941 +2605724 +2605832 +1837102 +2338050 +2363210 +2398319 +2605710 +2093147 +1031288 +1738386 +2498620 +2540868 +1882441 +2662140 +2662219 +1575693 +1127963 +1882406 +2441583 +1485674 +1923260 +2441586 +2498742 +2093163 +2363216 +808270 +761967 +2498568 +2304338 +2605896 +2605750 +1575642 +328386 +1837225 +761975 +2540861 +367845 +1031296 +2605798 +973749 +1837174 +2540870 +1190901 +2662164 +2197970 +2662275 +1837224 +1115431 +452877 +2605794 +1031297 +1837215 +2338027 +1738393 +2662139 +2198075 +98239 +1173057 +1882440 +2662180 +481772 +1882345 +808244 +1225566 +1696577 +452889 +1837088 +2662112 +2605757 +1738365 +1882487 +2197943 +1837166 +1068941 +2398310 +21099 +2093189 +2498659 +1173106 +549689 +1882490 +1882509 +1837148 +1678310 +1943327 +2605824 +98197 +199493 +1575816 +430787 +2605953 +2662114 +2498732 +2605855 +452891 +2498712 +1086735 +2498583 +761995 +1837132 +1575490 +926723 +2605727 +1096000 +2605872 +1923267 +926681 +1738341 +1334132 +430756 +2498726 +2498617 +1575700 +1190949 +549731 +98177 +2398331 +1882475 +2662227 +1068944 +2093136 +2605898 +1068958 +808281 +1837188 +1837105 +2605753 +2498749 +762000 +244851 +2498654 +1678293 +2540889 +808331 +1837210 +2662254 +98237 +926667 +2498740 +481768 +1696592 +1678319 +2304356 +254123 +2498694 +2197984 +808282 +1575834 +2498704 +1806360 +2605902 +926760 +1767796 +1225630 +808346 +1714203 +1190986 +1882378 +1575643 +973727 +926685 +1575691 +1714200 +2337997 +973748 +2498584 +2304324 +2662170 +2517782 +98206 +1923275 +1837090 +452873 +1575825 +2197989 +1096028 +1837220 +2498709 +481757 +1334122 +1696567 +21058 +2540886 +2093135 +1485682 +1943330 +1190966 +740106 +2498699 +1225625 +2605821 +452878 +2605733 +2605903 +2498716 +1738342 +2198110 +1115454 +2398307 +1115427 +1173128 +1056757 +1837156 +1575568 +926759 +1575658 +2363203 +1575565 +2363214 +2605965 +2498579 +1923201 +1738340 +1173109 +2363215 +21120 +1575625 +1943334 +2605930 +2198054 +2398325 +1806349 +2198036 +1678279 +2498772 +1575567 +1575598 +1738348 +1334159 +2197951 +1190969 +1436690 +1837080 +926671 +2662102 +1882497 +1882397 +2197967 +2338071 +1017495 +420446 +2338061 +1106022 +1837266 +2065924 +1225762 +926810 +1696653 +2606164 +634502 +808417 +2860659 +973771 +1576104 +926786 +2304395 +1575898 +2662355 +1279465 +2626472 +1225807 +1882712 +1696715 +1923503 +1923383 +2279999 +1056777 +1575880 +2499094 +2043674 +1334179 +1923492 +2498791 +2338144 +2498815 +2284500 +2606156 +2499020 +2662569 +2498856 +1225804 +2662344 +2279973 +425497 +1882621 +1678337 +1088191 +2662539 +1706135 +180016 +1576002 +2662570 +1837265 +21139 +2860596 +2338120 +1640003 +1923485 +2498958 +1678322 +2606059 +1575924 +1882690 +1225786 +2198405 +2860660 +1882714 +1085655 +1575869 +1075773 +210931 +926800 +180000 +393968 +2606125 +1505709 +1505687 +1923486 +2338095 +549756 +1225784 +2426906 +420461 +1191033 +1096065 +1837303 +1256141 +1436796 +2338103 +1140040 +1436748 +1923392 +2662554 +2198211 +1923305 +180020 +1649104 +2198228 +21135 +1191015 +2662466 +2662289 +1225692 +1923516 +2662578 +2338059 +1678348 +973841 +1714219 +2338169 +2338146 +2338111 +1505654 +2499124 +2662501 +762008 +904955 +2662545 +762011 +1505753 +1256147 +1068960 +2499057 +1191019 +2498904 +1696698 +1031312 +1575863 +1575944 +393963 +420437 +2398382 +1575996 +696547 +223914 +452913 +2499101 +926801 +1436745 +1923379 +2198387 +1505668 +2498887 +1964036 +926763 +2499043 +2304381 +904924 +1485725 +1256086 +2198264 +1575958 +1806387 +2198233 +2279953 +210934 +2605996 +2662475 +2662559 +1575892 +1191043 +1279460 +1115483 +1225802 +2860592 +2540919 +1225751 +2540920 +2198383 +1882724 +199550 +1096077 +1575853 +1576027 +1649103 +1575936 +2043646 +1358307 +328393 +1225792 +1882627 +2498860 +420422 +1191040 +1714238 +2198261 +1436763 +1576060 +2498890 +2662564 +1031313 +2498805 +420429 +1882599 +1882535 +2605983 +1225730 +2662496 +1576049 +2606150 +1225816 +1923311 +2605970 +926807 +2662437 +67503 +1225798 +1256116 +1436789 +2740616 +1576017 +1923340 +2499061 +2198153 +2662450 +1478646 +2662302 +1191058 +1334211 +2662315 +2606029 +2498945 +2398390 +973804 +2540930 +1964033 +2398393 +67498 +2198417 +1256144 +2540912 +904943 +2662384 +1575917 +2198305 +1882565 +2499002 +1767805 +1334203 +1707296 +2338175 +2662518 +2498800 +1923387 +2498804 +1882617 +2304378 +2198327 +1923408 +1714221 +1806435 +2338163 +1576076 +2662589 +1576026 +1738461 +634521 +2662480 +2338143 +2662603 +2498952 +1806462 +199532 +301035 +1678346 +1115457 +1151775 +2398392 +1806452 +549754 +1115456 +1256097 +1127971 +1031323 +1964042 +1837261 +367856 +67523 +1738459 +2043660 +1575931 +1225693 +1923417 +762022 +21133 +1696678 +1882706 +2499008 +1225742 +2398381 +1225768 +1882616 +2499090 +808433 +1738429 +2662576 +1714228 +1767803 +904945 +2198410 +926797 +2605977 +2426905 +889819 +1707286 +1256173 +1256139 +1837241 +1334196 +1225722 +1882708 +2662461 +2498814 +1191012 +2498938 +2498848 +2605989 +98304 +2499037 +355832 +1575979 +1334201 +1334206 +2279980 +2043682 +1696703 +1923437 +1738481 +420412 +2198341 +1436758 +1923421 +1806437 +808447 +2398368 +1806391 +1085651 +1575884 +2338097 +1663697 +1923405 +1964043 +2498989 +1781301 +2198240 +2860576 +2724215 +2606054 +1505675 +1052053 +1163970 +1696662 +808489 +2499081 +2498821 +2498997 +2606071 +973836 +808409 +420456 +1191049 +1882537 +973770 +2606145 +2540953 +889836 +1738449 +889842 +2662499 +2398353 +2338093 +2662432 +1575893 +1923483 +2499007 +1575883 +2662310 +1151767 +1781306 +2198423 +1707289 +2606015 +1707287 +1576037 +2606024 +1191035 +420424 +1225755 +1505715 +2606066 +2499121 +2498855 +904954 +2860641 +1225723 +67506 +1882580 +2662521 +1923359 +2498937 +808484 +2499025 +1256124 +2198369 +254134 +2757660 +2498894 +2606115 +2338179 +973769 +2498980 +1696667 +2498839 +2363228 +2198163 +1115477 +67502 +1191060 +2498974 +1151774 +1806403 +904919 +1964028 +503004 +2304410 +2498992 +2662438 +1738470 +808508 +1767800 +1080009 +481797 +2198398 +2606185 +2860567 +2279947 +2662494 +1575954 +1140037 +634507 +1068973 +1806377 +1923414 +2540970 +1576058 +1837271 +973840 +223917 +926832 +2606128 +2338161 +2498793 +1256094 +2606075 +2338104 +2662317 +1923370 +1923403 +2419082 +2198359 +549766 +1075774 +1115486 +2441615 +21147 +1923350 +808502 +2757663 +1923436 +2662470 +2499118 +420425 +973798 +1663711 +2338106 +808525 +1837240 +762006 +1882613 +2498865 +2198149 +2662515 +1738473 +973819 +1882726 +1882651 +2662549 +2860578 +2606186 +926769 +2426904 +2540947 +2662524 +1256178 +1820733 +1923327 +301040 +1882662 +1882540 +21146 +2198332 +2028929 +2606194 +2606228 +1738532 +1505798 +223926 +808539 +889845 +1225831 +2729310 +1640010 +2338213 +325954 +889846 +1806484 +301054 +1225829 +1738537 +808562 +1738531 +2499164 +1806489 +98318 +452939 +1882824 +2662671 +2198536 +973894 +21170 +2662625 +549840 +98325 +392682 +1837326 +549873 +973860 +762027 +1806478 +1334222 +438694 +2606217 +696566 +1191093 +2606212 +549841 +1505805 +2198566 +2541017 +1358313 +1505796 +1191106 +1576153 +1738535 +2398425 +2662613 +481810 +1882771 +1191069 +1256200 +1505785 +1256219 +1096085 +1191099 +1115503 +2541011 +1923581 +1882840 +1088192 +1334229 +1837348 +2198499 +1140045 +1279479 +973853 +2662643 +1256201 +1225851 +2606210 +2198546 +1372514 +1485736 +2398438 +1806476 +973865 +1505800 +2338212 +1576179 +1140046 +2363246 +21159 +2499153 +2338222 +21156 +2093225 +1882759 +1096096 +634538 +2662647 +2662629 +254142 +808590 +1334216 +973888 +1576199 +2662637 +452950 +1837321 +1576189 +1923556 +696560 +1882842 +367872 +367877 +1738548 +2662610 +1923567 +1576222 +301053 +425502 +1372510 +1256195 +1882815 +2419087 +2606192 +808581 +67540 +2198437 +2662654 +808561 +1882748 +98314 +1031326 +2338227 +1031330 +1837329 +2198506 +2198520 +1882829 +1576128 +1372523 +2541005 +2198457 +1781307 +1738506 +1096100 +1756054 +1576228 +1056789 +2198575 +67547 +1191107 +1738553 +654803 +2198469 +1923576 +301049 +1806486 +367878 +1031335 +1358311 +2338189 +1334240 +549849 +21176 +21168 +2540984 +2198576 +751117 +1256197 +1882781 +281322 +254146 +2019101 +1882837 +67538 +1738547 +1576146 +1882808 +1738526 +2198496 +2198518 +1923604 +1837325 +926852 +1678366 +1096093 +634530 +1837358 +2198542 +549880 +1334254 +2499132 +808617 +1806471 +1882823 +1837342 +1576194 +2606263 +2606252 +1738512 +2043689 +2198485 +1576219 +367883 +1882774 +320581 +1882737 +2606200 +1115507 +1923580 +1882779 +1882735 +1738558 +1882801 +328400 +1923592 +2499149 +549807 +1191122 +2198468 +1882778 +1256209 +1191077 +1837364 +634556 +2499130 +244868 +1846643 +430806 +889861 +1706141 +1576324 +1204457 +2043709 +1714257 +67617 +180063 +67561 +1576238 +2280006 +1837415 +199594 +2662728 +1225862 +1106026 +2414805 +1031339 +1505830 +1173143 +67589 +1436827 +926883 +1246822 +808640 +1115518 +210945 +1191168 +1163998 +1478662 +1191156 +438698 +1882868 +254173 +325960 +367935 +325963 +1246803 +889863 +549917 +1075787 +1096141 +1882895 +98421 +1056799 +1576288 +2198591 +21240 +481829 +2871173 +1706142 +1738582 +98426 +1191189 +1478661 +1436821 +199583 +549905 +281328 +328401 +67564 +1576291 +67594 +1478664 +98385 +2499194 +2338247 +1191176 +1505849 +2606265 +808638 +210984 +1576259 +1882887 +2808968 +634584 +244875 +1505826 +926886 +367920 +320597 +1837396 +1115516 +67624 +244893 +1576278 +21241 +1436843 +1837412 +2830841 +1436844 +21198 +808668 +2662699 +1663732 +946533 +2871105 +2198625 +199593 +2338241 +367899 +199577 +2662710 +244870 +210957 +1738569 +367902 +1334259 +1738580 +2441631 +2338245 +2871133 +1225943 +2606279 +2844390 +430803 +973963 +973959 +974003 +1133771 +2499210 +21208 +1696774 +438709 +244891 +2304457 +1964052 +926893 +452955 +1246814 +2685695 +1191175 +1191191 +199598 +1225860 +98377 +2499180 +808630 +1576277 +1837431 +325965 +762039 +2198594 +210978 +2338237 +2198606 +367907 +808639 +254200 +1576263 +430799 +634566 +2198627 +889862 +430822 +808685 +2606296 +1505861 +808721 +1576321 +1436812 +281350 +67560 +1576314 +199590 +21204 +1696778 +1576280 +2398473 +1225945 +1225923 +1115512 +2198589 +1837398 +223939 +2304447 +2338250 +2662717 +889851 +98393 +1846634 +973933 +1436829 +634574 +320585 +21196 +98366 +21201 +254177 +1068991 +1225881 +210975 +452956 +2626482 +904961 +1738575 +1738589 +67599 +438706 +1846640 +2198603 +1191155 +762047 +974004 +21207 +1436850 +2304444 +1707302 +1225926 +98387 +244874 +1505817 +1821916 +1923619 +926876 +199585 +973961 +2808963 +2871120 +494533 +21213 +926928 +926906 +1905805 +1140049 +1225895 +67627 +1256224 +1031355 +973951 +301077 +2304463 +1923621 +1882905 +1576289 +1576302 +1127982 +2682887 +808706 +254167 +1837371 +367925 +2043703 +2426913 +2284522 +2517788 +180055 +973926 +254175 +2043711 +367885 +926907 +1882912 +2808952 +808679 +21227 +2398455 +808637 +301066 +320605 +1905807 +1738567 +1505819 +2517794 +2310138 +199579 +1096137 +494531 +199570 +210953 +1075781 +973976 +21217 +733470 +808625 +1738583 +481828 +223952 +244864 +2808965 +1225919 +2871146 +320604 +1151779 +430823 +2541031 +361219 +392689 +1696762 +1505814 +430798 +1096130 +808628 +223966 +2808966 +2662715 +2284521 +889874 +1056814 +904973 +1923644 +1225955 +21273 +2070578 +1096155 +21260 +67643 +470902 +452976 +808745 +2809103 +1246838 +926977 +2198661 +2809027 +1225996 +1905810 +470903 +2732390 +1505883 +808733 +808735 +926968 +223969 +2662751 +199606 +1576344 +438742 +1478680 +2809109 +67634 +1031368 +1576427 +1882988 +2809046 +2737140 +926983 +453000 +2662770 +1225950 +244932 +67638 +1478673 +1576367 +481874 +1923643 +67685 +1096169 +211003 +67640 +889892 +1964058 +2198667 +1576430 +974010 +1882962 +889896 +549920 +1576343 +470920 +1576393 +1882965 +1225975 +470922 +1522431 +974014 +946539 +2398495 +908937 +1658412 +1128014 +481880 +725847 +673166 +1115542 +1938435 +2198679 +2198671 +716358 +1923631 +2809097 +1191199 +1505903 +549927 +1576373 +67677 +2809016 +1478675 +2499232 +2270240 +1436866 +1996816 +1334267 +1806504 +1923647 +1191228 +1225974 +2809034 +2809100 +1191208 +244917 +2198663 +380268 +1576401 +1191216 +2701617 +1140064 +974049 +1684321 +281383 +199610 +367943 +1882973 +223983 +2363259 +2809098 +452974 +1576439 +1979102 +1478676 +452991 +481875 +2809008 +2276293 +1818180 +21258 +1115540 +1478681 +1069020 +926954 +438749 +974044 +67641 +1806499 +808739 +1576434 +1576336 +481852 +1069011 +2808995 +1191205 +1069010 +296066 +2363283 +494552 +180069 +1191235 +1256243 +2809022 +1882955 +328408 +494548 +380251 +481858 +244911 +1576377 +2198684 +1052058 +2662760 +2809091 +1246833 +452978 +1505876 +2732392 +2198677 +549937 +180132 +1905814 +67652 +974048 +481845 +1173150 +21248 +494564 +1923640 +1576403 +549922 +1115539 +67671 +67672 +1837438 +2662761 +380258 +1151787 +1043077 +2662763 +1191215 +400546 +2363278 +180138 +1225961 +244936 +1225954 +2284541 +1127993 +1576361 +1226006 +1658413 +481844 +67649 +281362 +725846 +1707926 +926981 +770722 +549926 +1225989 +2809032 +1115551 +808730 +904974 +946546 +98454 +2093282 +1576388 +470930 +1738593 +1576356 +1485747 +98463 +1818184 +1106039 +1478682 +634632 +180167 +634657 +2515729 +494591 +946552 +2013583 +716362 +438772 +1017586 +1818186 +2270266 +211009 +1345281 +244963 +380281 +1246895 +1905846 +2515734 +380300 +361248 +320647 +392715 +1204500 +67724 +1882999 +1256246 +392723 +380279 +808757 +2270248 +2198692 +1297151 +180149 +1128015 +1106057 +946550 +1151807 +244948 +2013614 +2013600 +1128033 +438761 +1106053 +281394 +494592 +180163 +2093300 +281414 +392713 +1706184 +1522441 +1246886 +634638 +1522438 +180147 +380290 +2499262 +320641 +1640040 +1905836 +2515747 +244942 +1706169 +808756 +67711 +2270254 +2499257 +1204493 +889938 +1052062 +380286 +494581 +2355103 +1640042 +673173 +2355112 +1017602 +296069 +2198685 +494603 +244941 +211017 +67712 +296072 +2515735 +1665654 +1017620 +470970 +1246859 +1785359 +1128036 +1279492 +1706183 +2270250 +1106061 +1246867 +549948 +1017626 +380303 +2422241 +1128035 +361251 +2515727 +380321 +2515730 +1400057 +889908 +634670 +380323 +1017612 +889926 +1128021 +889904 +2019114 +1128044 +1640055 +1522439 +2662780 +634620 +341691 +470972 +1017632 +244957 +2013607 +751125 +180199 +2499300 +1576462 +1226052 +1883034 +2662784 +224003 +1640070 +974146 +1781343 +1017687 +244983 +1191279 +733491 +1806525 +1069036 +199616 +634683 +2662789 +747300 +361260 +2606345 +549959 +974089 +1478696 +1818202 +2732401 +438775 +453039 +301091 +98481 +974139 +725852 +1017671 +1436882 +1781342 +453028 +199615 +927021 +1846658 +927004 +2606358 +2701623 +549982 +21296 +1696798 +1436893 +1923660 +1017690 +180215 +430841 +430843 +2737143 +634687 +98479 +974094 +889954 +1505920 +889948 +1334278 +1151810 +974078 +2499280 +549983 +336449 +2093308 +1785362 +1883047 +244985 +2499271 +98485 +2284554 +331806 +180203 +494616 +1684344 +2093304 +1738601 +1837453 +286375 +2398501 +2441647 +1684336 +1096181 +180196 +1663734 +1883014 +1806516 +1806518 +1923670 +1069027 +1246926 +380360 +1191262 +2093322 +550011 +1164007 +367963 +1706187 +1334280 +2606326 +1191272 +438784 +927015 +2198702 +244994 +2515757 +1738604 +1883045 +98492 +2662810 +1696796 +1818198 +1115572 +927010 +408143 +494614 +927025 +696616 +549998 +180200 +1096176 +696610 +974141 +1334282 +1905851 +2606343 +974100 +725856 +549962 +1923658 +1576496 +1883023 +549991 +1576494 +1246916 +889947 +223994 +2441640 +1031373 +1756070 +1505915 +1576457 +2662787 +1106063 +1017676 +281432 +1436879 +549961 +1017695 +1256247 +974160 +550005 +1576458 +1226036 +549963 +1191276 +2198733 +974142 +1226030 +301087 +549988 +742485 +1191273 +1151809 +1017680 +673176 +634692 +1923674 +1191275 +751123 +494611 +21283 +1576503 +2198773 +550035 +2338280 +2662881 +1923733 +739069 +2198758 +2499348 +1883111 +739070 +550057 +696671 +1979115 +1389112 +1140079 +1115607 +1883098 +2606372 +1576516 +1696811 +224004 +550060 +1781353 +927036 +1400074 +1576511 +1115581 +1173157 +974182 +1883069 +224007 +1304740 +2338278 +2662875 +1256256 +927052 +1069041 +747303 +1226077 +98535 +725861 +1883067 +2662891 +1576526 +696638 +654834 +696663 +747305 +1069053 +453062 +1358348 +2024504 +1678415 +1358350 +1923738 +2499305 +2198767 +1883083 +550023 +1279499 +2499316 +1923688 +974198 +2198781 +2662876 +1883057 +550013 +2499323 +550045 +1806538 +1389106 +2198738 +550022 +2338259 +550034 +1383839 +2499333 +1883089 +2198769 +1389109 +550027 +1883099 +1923689 +1191283 +1133778 +1226059 +1191302 +2499336 +1151830 +1115602 +355850 +1334310 +550041 +1576529 +808825 +654839 +1400070 +2499349 +725878 +2499335 +1115598 +1226105 +974180 +2198779 +453055 +725864 +1806544 +2024498 +1191292 +1191287 +1164010 +550014 +927034 +98528 +2198778 +696670 +1191299 +2198766 +1883088 +927042 +453051 +1923703 +1485760 +1115596 +1781357 +21304 +2662892 +2198787 +1806547 +453047 +1128076 +1923772 +1226139 +1738638 +296158 +1031399 +286383 +180238 +1043202 +1923800 +2398562 +770730 +1043225 +296222 +634709 +634707 +1043136 +1043344 +808865 +392746 +1226146 +1883132 +1436923 +634697 +1756108 +1756110 +2606504 +2606537 +1043156 +1883139 +1226132 +2606557 +1043187 +1837480 +1883204 +1043196 +1115622 +890020 +808860 +2662955 +1883252 +1043309 +1115616 +1043337 +1031395 +296201 +320758 +1923762 +1738786 +67777 +1246933 +1043195 +2414823 +1923813 +808839 +296151 +2663006 +1043194 +1478739 +1115670 +1883212 +2270286 +2398552 +320697 +320676 +1923819 +1883198 +2662935 +2276311 +1128055 +2606487 +296147 +1115641 +1410130 +320660 +1738710 +1115611 +67801 +2606538 +1031446 +320701 +1031440 +1923764 +1043258 +2606480 +1654435 +320679 +1756111 +2398554 +67780 +2606555 +320712 +296239 +1738738 +296098 +1738678 +1043135 +2606465 +2276309 +2606490 +1043274 +1043293 +770729 +1043217 +1043360 +1115637 +1043241 +1738737 +1738707 +1883239 +2398573 +1246935 +1478712 +2662913 +1478728 +1738759 +2414851 +21315 +1883186 +1128054 +2606412 +2662910 +2662980 +296082 +1031427 +1883273 +1128083 +1756114 +1043114 +1923767 +296224 +1738688 +1738793 +889979 +296246 +889986 +2809119 +1410132 +1031457 +1031445 +1043106 +550072 +1115614 +770726 +1756081 +296271 +296220 +1436931 +890019 +296260 +1043128 +1043286 +2606451 +1923820 +1043198 +1043131 +2662902 +301109 +1905864 +1043285 +1883292 +1756119 +2414834 +1923802 +2606510 +2663048 +2606486 +296122 +1043345 +296230 +1226130 +889957 +2606561 +1883275 +320775 +1043177 +1758338 +1738636 +180240 +1043296 +1738725 +1883280 +2363293 +2606415 +296173 +2662993 +890013 +1738701 +2606514 +1043140 +1031430 +1043369 +392759 +296281 +1204519 +320687 +1043319 +1043244 +320763 +1043311 +1226114 +1436909 +2414843 +1923793 +2606533 +1043251 +1738646 +1043240 +2663022 +296148 +1738748 +890011 +1883122 +1115642 +1738755 +1043188 +296091 +2606413 +2662926 +320675 +320688 +1226152 +296192 +1115656 +320671 +2398526 +2517806 +1410125 +1883126 +2398533 +2606532 +2414848 +2276303 +1756120 +2606528 +1576538 +2662996 +2398529 +1738685 +1883266 +320768 +2662945 +2663067 +1256330 +634728 +1883340 +1883345 +301174 +1256290 +301193 +2398640 +67813 +301143 +1256274 +2663188 +2663236 +1738857 +2663174 +2276333 +2398638 +301203 +1883433 +1883335 +1226221 +1256294 +1738931 +550083 +1226181 +1738801 +2398637 +1738899 +1649151 +2398652 +1654440 +1738935 +1923878 +808871 +2398656 +2398584 +1226214 +2663181 +2398673 +286444 +2276374 +2398619 +2606576 +634731 +301126 +1738831 +1226164 +2398614 +2663097 +320805 +301208 +301111 +2398685 +2398658 +1923871 +1883343 +1649174 +1031513 +550102 +1031505 +2663182 +1883359 +2663127 +301120 +1738906 +1256308 +301149 +2276339 +2663102 +1256331 +634711 +1756141 +1923862 +320786 +1115680 +1031486 +1256305 +1226201 +180246 +1756145 +673180 +1031539 +2276371 +1226166 +1756142 +1738879 +2606571 +1115694 +2663196 +1905872 +1738861 +1923843 +296287 +2398615 +1883320 +1738836 +1883332 +1738887 +1256328 +494620 +1883417 +1923840 +1031499 +1115683 +1115684 +2398611 +301199 +1128093 +2398594 +301123 +1883372 +2606598 +2663115 +890038 +1649137 +2663130 +2663211 +2606583 +2663192 +286402 +1738925 +1883415 +1883346 +301166 +1756143 +286400 +2276359 +1883399 +550099 +296290 +2499610 +808979 +2304506 +1923914 +224028 +1226223 +2663493 +2663484 +905021 +550161 +2606738 +1781363 +1883698 +1505953 +2499428 +1714277 +2499490 +1080036 +1837536 +2499564 +2606818 +2198867 +1505954 +2606853 +1080060 +1226278 +974235 +98588 +2198899 +762104 +1437038 +2499551 +1696871 +747309 +1837548 +550170 +550228 +1164075 +2541080 +1436968 +2198962 +1576699 +2198801 +1806592 +1738956 +2441673 +2606776 +2499668 +1883673 +1505976 +2043744 +2606962 +2663376 +1883540 +2198790 +1506015 +1191338 +1400080 +98614 +696731 +1883580 +301210 +1883515 +1806644 +1164020 +98578 +2499412 +2043750 +2663451 +2338311 +1663748 +2043748 +2606645 +2338360 +2606740 +725884 +2663276 +1758356 +2663577 +2663647 +2663598 +1436960 +98575 +1226340 +1837523 +2441668 +2663439 +2398749 +2398736 +696734 +1436979 +1576643 +2499592 +1505965 +1096199 +2663545 +1226255 +2663488 +1505973 +1806564 +1806662 +2663409 +1506035 +2338417 +453077 +1505961 +2338466 +2499660 +2499429 +1883718 +2338467 +1334406 +1576687 +1505977 +974215 +1678463 +808918 +1837565 +1115713 +550187 +1437019 +1883679 +654884 +808984 +1191344 +1256342 +2606720 +1096220 +2663510 +550175 +1576692 +654865 +696810 +2663491 +1436985 +2663246 +2093356 +1696901 +1164044 +1806672 +1334346 +1714288 +725918 +2499662 +1837503 +2606660 +1031585 +1173172 +1164051 +2663351 +2663638 +1151837 +808946 +1576712 +1436954 +2198929 +1883709 +762072 +2606876 +725887 +2606717 +2606912 +1696859 +453088 +2663335 +2338337 +2663259 +1576622 +1506018 +2198856 +98563 +904990 +2363297 +1576584 +905003 +1883653 +696805 +725883 +1115705 +1115722 +1383845 +2398727 +2663366 +2419102 +1767825 +2499548 +550177 +2338458 +2663426 +1256341 +1226308 +1173169 +1758360 +2093341 +974220 +1883464 +904996 +1678449 +808925 +1576628 +1226235 +2606969 +1837487 +1714296 +2606615 +2499585 +2198908 +2606708 +1883557 +1883570 +1402732 +1031586 +1576560 +550155 +1923947 +98597 +2606807 +2663570 +2363298 +1133779 +2663404 +2499552 +927090 +2606753 +2499356 +1437024 +1437059 +1837551 +725921 +974237 +2499684 +2499441 +1923967 +1649196 +2043747 +1739040 +1739010 +1437022 +1883472 +1883654 +1806661 +2338471 +696726 +1576702 +1392459 +1883526 +2499458 +2426915 +2499555 +1576684 +1226289 +550127 +1883637 +2398712 +2198972 +1806573 +2606735 +1883582 +2606678 +1056826 +550158 +1096240 +550217 +739073 +2663421 +2606648 +1806581 +2093353 +2499365 +1923924 +1096205 +2338356 +1781365 +2499457 +2606846 +2398711 +2441670 +808892 +1924006 +2606633 +2499520 +2606693 +2499669 +1923978 +1506000 +1923980 +1923911 +1576638 +1883613 +2663290 +1505945 +2663260 +1096237 +1115708 +974243 +1738959 +808962 +1115709 +762086 +1576559 +1164043 +2663248 +1714304 +1279527 +1506037 +2606643 +1576647 +1883631 +1837510 +2606770 +1505996 +1383847 +1576677 +1086757 +2363299 +2499657 +550248 +1837568 +1402735 +2304503 +1096238 +1226227 +2198915 +808878 +2499399 +2338315 +1576686 +2338407 +2663307 +1437017 +1378634 +2663608 +2338312 +2499417 +2499425 +550151 +2499500 +2663402 +1883719 +2663585 +1883445 +2198985 +2499630 +1739006 +2606879 +1576582 +1402727 +2338396 +2338478 +1883693 +1334358 +1096255 +1191324 +2338377 +550196 +927098 +1576694 +1714280 +1837530 +2338454 +2663347 +1883635 +1151849 +1191323 +927085 +2499415 +1436952 +1191342 +1883544 +1738960 +2663513 +1334335 +1226348 +2441657 +1505988 +2606724 +1806584 +1806610 +1576651 +2606831 +1696913 +1923991 +2541069 +2663308 +1164050 +2198796 +654878 +2663311 +1806622 +2499642 +1226306 +2663288 +654876 +1400081 +1279513 +1923939 +696716 +808973 +808941 +808905 +1392455 +1576612 +1696876 +808883 +1837543 +2606664 +1837488 +1080045 +1806625 +2198935 +2043738 +1781362 +2606954 +1923975 +1883536 +1437002 +1837505 +2663371 +1080063 +2198963 +1883600 +2284562 +1096214 +98613 +2606705 +2663583 +397530 +1226305 +1707313 +1334380 +1649190 +1883530 +2663428 +1436992 +21346 +2499445 +1991121 +762108 +2606806 +1964063 +98568 +2663384 +1837516 +2043722 +1086756 +1883440 +2606928 +2663467 +1696903 +2606940 +1505971 +1505946 +1883597 +1883459 +1883486 +1437052 +2363306 +2499387 +2663316 +1226224 +2441665 +1279512 +2398706 +2363295 +927067 +2043720 +905023 +1151851 +725924 +1226266 +2541057 +1738975 +1164071 +1226303 +1806676 +550134 +2606646 +974224 +1096197 +1707310 +1837521 +2606886 +2663424 +1806642 +1226304 +1505970 +1358362 +905008 +739074 +1226317 +2198953 +1505958 +1806637 +2499367 +1883668 +2517809 +1883715 +2499486 +1883735 +2499541 +808899 +1678423 +2398713 +1051146 +1080043 +1226258 +2663266 +2398731 +550125 +2606703 +1923930 +1883473 +2499605 +1837499 +927097 +1923912 +1395981 +2198924 +2024506 +2198970 +2663337 +1678438 +2541052 +725905 +1678441 +2606721 +2198834 +1883461 +1334365 +2663547 +2499450 +1226291 +2499566 +1883725 +1279508 +1883500 +1923994 +2663562 +1883720 +725913 +1806623 +2499359 +1226261 +1402733 +1678446 +1436957 +2606829 +1334415 +2606669 +1505993 +2663637 +1576548 +2093346 +2606751 +1576577 +927080 +1837518 +1924017 +2606867 +2398708 +453074 +2499403 +550201 +1334440 +1304746 +1991125 +2515772 +1226371 +716375 +1576831 +974297 +2199042 +438789 +927110 +1437068 +974301 +634790 +2024525 +2541141 +481933 +2663653 +1169845 +380377 +2398773 +67851 +2012935 +1576825 +1358376 +2499776 +742503 +2093365 +1576801 +2663665 +1226394 +1995402 +1991127 +368011 +2276383 +67843 +974273 +453097 +1017727 +1246948 +1576812 +733497 +1522460 +2338485 +2499773 +673183 +550254 +2499726 +2607019 +380376 +1204531 +634754 +550259 +1938456 +1204525 +890073 +2024523 +2499754 +2757679 +1164096 +1883807 +1506055 +1226382 +1226351 +1056837 +2499774 +1151867 +1017736 +180261 +1191379 +634770 +368005 +1334455 +2398766 +1395982 +2199015 +453096 +673189 +2012927 +2024526 +1979144 +2748688 +1924055 +2284567 +380367 +1924058 +1938458 +1226389 +890063 +754342 +1883797 +1979126 +2019137 +634812 +725940 +716388 +1069067 +1576758 +1576770 +2363311 +1739066 +1576830 +890091 +1640080 +1017707 +2499734 +550255 +2019151 +1358371 +408149 +1576753 +1576795 +974286 +634776 +716383 +890047 +890044 +1924057 +368009 +733516 +2398785 +725938 +1358366 +1088214 +2199014 +2363308 +1883836 +696838 +634821 +1576842 +1640094 +2663750 +1995398 +890058 +1806695 +2338491 +1389133 +1883812 +696814 +1115735 +1096280 +2701625 +1883838 +1883771 +2748690 +1017713 +2663675 +634773 +696813 +2024516 +320827 +808994 +368002 +1485769 +1924061 +946575 +1140089 +2012936 +245004 +1678468 +742502 +1818215 +244998 +1334441 +1883775 +1707317 +654895 +1297159 +2024517 +2663678 +2606999 +1678467 +696820 +498862 +180287 +1389132 +1576839 +2663652 +2607002 +1640099 +1522458 +1576759 +1806683 +471015 +245003 +2276384 +1345291 +1256353 +2414868 +1706189 +2499740 +1143884 +1883820 +1576755 +974287 +2738852 +2199035 +1905878 +1115737 +1739045 +2737146 +1684357 +1905880 +2499759 +634827 +1640090 +550285 +927127 +1883764 +696840 +1096286 +1883826 +2515763 +1696919 +2398760 +1279539 +1264539 +453104 +1488258 +1739071 +1883801 +1096272 +1256365 +2093364 +1883792 +634787 +927112 +2199020 +2199030 +1576814 +2338500 +1837585 +2024510 +1043391 +2748685 +1191353 +634800 +890092 +1924067 +2499720 +2270288 +974280 +1226396 +2398763 +927119 +1246964 +634797 +1837584 +2607009 +1389128 +1069075 +1488256 +2860698 +1485775 +368015 +180324 +1684368 +1684361 +1143888 +471025 +2199096 +453110 +890101 +1191396 +2541144 +890102 +336464 +2199063 +2024528 +1883864 +281461 +927153 +2732409 +438800 +254234 +211037 +1164097 +408161 +2663756 +1151886 +341716 +2001610 +1576859 +385549 +341713 +331822 +908952 +2830874 +927143 +199640 +1837591 +974316 +245023 +927151 +1938463 +809010 +1334464 +1246979 +1151891 +2499780 +98634 +408163 +1031599 +21401 +1576868 +1846667 +361272 +67867 +890096 +245036 +1017756 +1883861 +400549 +1576885 +254231 +344935 +344936 +1678482 +2860688 +380392 +392775 +2860697 +180314 +1140105 +2860701 +1437070 +2199095 +1714311 +392774 +1488260 +2426924 +380386 +1781408 +2663759 +1191400 +438798 +21404 +2338523 +1576870 +2830867 +2499783 +2515779 +1767835 +67856 +349392 +1191384 +1204540 +380388 +245019 +2499791 +1781403 +199641 +1905894 +224037 +927165 +1883879 +2830877 +2093378 +1204549 +245056 +974334 +1164105 +1684375 +1640133 +890141 +2199117 +471052 +1640121 +890110 +1739089 +2663764 +1640118 +1334468 +1506077 +1640134 +430858 +1017773 +336475 +1818228 +2199118 +890162 +281481 +696842 +281484 +67903 +1756158 +2338537 +1506073 +809047 +453120 +1576979 +1924097 +1781432 +1017782 +2830880 +1883887 +1576920 +2860736 +946594 +1576978 +211068 +2304547 +180347 +1151897 +2499809 +2441692 +1818234 +946596 +1017761 +1576946 +224052 +1678500 +946601 +2499815 +946610 +1785374 +2860719 +1115756 +2607034 +180352 +2809143 +1133791 +1372551 +1576944 +281474 +1576959 +2499833 +1684387 +762125 +1818232 +2398788 +1256374 +1169852 +890134 +245063 +890160 +2363313 +2338535 +224051 +211064 +2860726 +946595 +809045 +2024529 +1031601 +927188 +1806716 +927187 +67915 +2809150 +1684380 +67908 +2441705 +946611 +1140122 +245040 +211060 +2284573 +1818229 +1017772 +21414 +2338539 +1576971 +2441694 +2338532 +1781423 +67925 +890116 +1781441 +634836 +1818237 +2338534 +2809135 +21429 +281485 +634835 +1640130 +1883865 +1806710 +2338554 +1576917 +438824 +481949 +2304557 +1640126 +98658 +368029 +809030 +1924098 +1938465 +2860733 +1478767 +1640119 +2499819 +224055 +1576925 +2860741 +1576901 +1088219 +2499822 +2607062 +1204550 +890119 +471050 +890112 +2732411 +1739086 +1069104 +2304563 +2093452 +301223 +696848 +1577002 +1756161 +1837600 +1640166 +1488274 +1056866 +1905911 +180413 +946637 +1106086 +927211 +438873 +1488268 +199668 +400562 +281515 +2199143 +368035 +1151916 +1478786 +245097 +1437084 +245096 +634851 +481960 +1133796 +1678523 +453138 +1684396 +1096309 +281502 +180402 +2830899 +634869 +296328 +180403 +2441710 +67985 +320862 +550323 +809106 +716397 +696851 +211078 +361289 +328427 +2398804 +890185 +1678516 +2663800 +1031603 +2199139 +355875 +67983 +1478787 +296325 +1226431 +494662 +946614 +281496 +336482 +355859 +380420 +320847 +1017824 +1191454 +301224 +634860 +245104 +180429 +1017816 +1279543 +1115762 +199663 +2541175 +380426 +380431 +1069111 +1115765 +2541178 +98665 +331839 +296320 +1506113 +344942 +1739097 +98670 +890231 +809116 +245112 +2093445 +331848 +634845 +1191458 +1345305 +1506111 +634866 +1226446 +21440 +1191423 +2541167 +1226438 +180393 +634867 +1017806 +2607110 +2093476 +1096321 +1837602 +1663779 +199680 +890229 +1056863 +245126 +634870 +716392 +320854 +1654445 +946640 +180458 +2607098 +1846675 +1075857 +245131 +908976 +180462 +1075855 +1820780 +368045 +471064 +67965 +1506107 +211137 +281494 +438832 +946649 +368046 +1246992 +2607086 +634859 +2607116 +1106084 +673195 +1173187 +716406 +281500 +180369 +368056 +809115 +1437097 +974352 +1406314 +1204572 +725954 +361308 +890175 +2607126 +1246994 +471069 +2199128 +1818244 +890217 +946641 +2070595 +430868 +974368 +2541174 +320861 +890202 +471087 +1226456 +1576987 +180468 +1115771 +1017787 +716398 +2515795 +739081 +809099 +180459 +809091 +211121 +1837596 +1739122 +2013627 +1640168 +1017807 +1478780 +1096304 +224069 +296331 +1031609 +180463 +733523 +98692 +1204567 +211139 +1739094 +1820785 +1767843 +245128 +1640169 +2013626 +1506108 +1191445 +211082 +453131 +747322 +716396 +1358382 +2663799 +1781447 +2499850 +2199133 +2093448 +331845 +286454 +2441720 +471065 +1739108 +211131 +438853 +98686 +1837626 +1678513 +1883901 +336483 +2541151 +696853 +2499856 +1115759 +2549715 +494656 +1191420 +634874 +67971 +400560 +2199129 +927213 +67946 +1739096 +380411 +430863 +481957 +1820791 +1069122 +1176499 +809071 +281503 +368047 +453173 +1226495 +2093493 +2304599 +453174 +430901 +1706203 +494668 +1140140 +1577022 +927275 +974414 +21498 +2871205 +21510 +1226489 +974409 +927305 +2441730 +1191470 +1069134 +1506135 +420474 +2441753 +1781471 +1714329 +1678557 +1506141 +1151925 +397563 +1151934 +2426942 +2199166 +1806817 +1767847 +2809157 +809148 +21487 +2199220 +430905 +2304597 +1883972 +68045 +1080129 +2304579 +1151973 +1173188 +1577129 +254244 +809180 +2499956 +397572 +2663839 +408181 +1883962 +1151981 +1781481 +1938471 +503019 +68063 +1884004 +1226473 +2499871 +199688 +1383875 +2515801 +1133806 +1151940 +2304568 +2304589 +1806816 +1577142 +2338575 +1017846 +1478797 +1052072 +974433 +2414883 +180522 +2607159 +2809171 +1837649 +1522486 +1485809 +2499899 +2663816 +1640179 +1506127 +2499932 +1806750 +890273 +1226512 +1226483 +974380 +927299 +890255 +2199199 +1151961 +1837661 +2284585 +180510 +1080120 +380433 +1883947 +2338580 +2426937 +1164118 +368064 +1080098 +927313 +350140 +1151962 +1151937 +927306 +68053 +1577143 +397560 +2499916 +1191465 +890263 +199694 +1140162 +1485812 +1247011 +98731 +2199187 +368062 +550337 +98708 +438893 +1577135 +2199201 +1781498 +481975 +471091 +180502 +2199242 +453169 +2549720 +453162 +1806769 +2499896 +1191468 +430896 +2199169 +180506 +2871202 +397571 +1437107 +1806771 +1781491 +927293 +1506138 +350143 +1905913 +2541184 +2809185 +254254 +974427 +1151970 +1663789 +68057 +1247010 +927272 +180507 +498871 +1707931 +1031612 +180517 +1577060 +2499959 +974420 +224073 +1140139 +1577148 +2199184 +2541186 +2830907 +2499880 +1806747 +397569 +1883999 +1924133 +199687 +1806818 +2199155 +2499870 +2304586 +1818251 +1226513 +1226471 +908982 +2019171 +68073 +211149 +927303 +1884009 +2398815 +1226472 +1031615 +397584 +974396 +1437120 +1781508 +750103 +2093481 +1806814 +320869 +1577081 +1151941 +1781499 +2199239 +211155 +927263 +1884006 +1151932 +68043 +2199190 +1069149 +438874 +974373 +1191477 +974381 +344943 +1883958 +438884 +180505 +2304591 +2304603 +98735 +974438 +890268 +494669 +1806774 +1226468 +1226502 +1577089 +397567 +1506117 +1191489 +1884003 +1226511 +1191474 +199689 +1080096 +361314 +2499969 +974374 +1478804 +1883994 +1577130 +1818250 +1133805 +927298 +809125 +481982 +1577054 +1485806 +1226484 +1781461 +21497 +2499913 +1806786 +211154 +1151935 +1806822 +1152004 +762148 +21519 +974515 +1226536 +974518 +1226524 +328445 +2499993 +1837673 +1485819 +2663861 +550343 +1924204 +2284586 +1924176 +453199 +1152000 +368093 +21534 +482017 +2663867 +809196 +2607194 +1577210 +453187 +1226548 +927328 +1173200 +1781529 +927348 +1884051 +725958 +2304605 +1781532 +1884041 +2500004 +1191526 +974480 +974464 +2607238 +2663857 +397585 +1884015 +1437143 +2663873 +1485817 +1837669 +1806827 +482013 +809190 +1649217 +2607221 +1884036 +2607212 +809226 +1924193 +2499996 +1924199 +2663847 +482004 +2500013 +974483 +927323 +1837665 +1924166 +224099 +1739152 +1151992 +809205 +1924172 +21531 +453206 +2426945 +453213 +927335 +1577187 +2517819 +355901 +2663844 +809228 +368081 +2809191 +328443 +254264 +2043782 +1739156 +974454 +1226543 +1191510 +1924181 +2426944 +1884048 +974507 +224101 +430923 +1191516 +1924186 +2541204 +2441777 +974457 +974509 +1152002 +2441779 +2809192 +1806834 +1837678 +905071 +1256392 +482015 +2500001 +1437139 +1884045 +301238 +453264 +1924242 +2398860 +1191540 +430942 +2607256 +1191559 +2757691 +1577238 +696877 +1506161 +2663887 +471109 +368112 +438902 +2398848 +1115797 +368119 +453244 +482072 +2737170 +1739160 +1924235 +2398862 +1884098 +1191533 +1191557 +1358393 +550370 +224120 +550375 +301243 +430945 +1191532 +2685708 +1226577 +1924221 +1837687 +2304617 +301239 +1226590 +224118 +1279546 +453270 +725962 +809236 +494685 +224133 +1924231 +385559 +2304619 +2663882 +927353 +368117 +1924244 +1577241 +1649218 +696879 +320874 +1115795 +1173205 +320871 +550348 +1115794 +2398834 +550376 +301241 +1247015 +1924243 +1226583 +2398825 +1096362 +733528 +2737165 +1226589 +301255 +482080 +2738859 +634880 +2043786 +21548 +550358 +471107 +1358392 +1226594 +1884078 +98750 +453254 +1739159 +550350 +438909 +482089 +438918 +245178 +2607260 +550390 +1684437 +320876 +471126 +1577255 +438913 +2738860 +438923 +471144 +254269 +98782 +2500066 +1115807 +1204596 +1577268 +245162 +2748717 +716413 +281532 +2607262 +98783 +2338640 +1756172 +328451 +1152021 +2304623 +1334488 +696888 +725965 +1577279 +1056899 +1096377 +180550 +224148 +361319 +1884132 +98771 +1191605 +1115810 +98784 +1096379 +696895 +1739165 +927384 +2663916 +654911 +2663902 +754349 +1696964 +1226663 +380449 +1678582 +1128125 +380443 +1133828 +1017856 +1924251 +494702 +1806862 +1226632 +1247026 +1226665 +21568 +98791 +2500048 +1226628 +890281 +1884150 +1781544 +927390 +905074 +1640184 +98765 +1017862 +2500039 +482091 +550388 +180540 +2732418 +224146 +341730 +974533 +482119 +1226650 +180558 +1884151 +2304622 +751135 +2663891 +1781543 +224149 +245177 +634888 +494704 +2663889 +336502 +482103 +453285 +21566 +2607278 +368127 +1884120 +2737173 +2441792 +98756 +2663895 +2500046 +380445 +716415 +453281 +471139 +1133826 +2515805 +68082 +1577312 +380447 +1173208 +2500028 +1400101 +482108 +180568 +320879 +696896 +2607257 +1140190 +2398871 +1884147 +1577276 +1884139 +1806866 +2199283 +1654450 +1173219 +68117 +1173220 +286466 +1781568 +2871238 +368138 +380455 +180575 +245186 +301263 +2830922 +2199297 +1017869 +368145 +385567 +2001621 +1152045 +68114 +1678588 +482126 +245180 +2871224 +2871206 +1837697 +1884174 +453317 +494715 +320892 +301259 +368148 +1684438 +890290 +1088235 +1884177 +1905928 +1938477 +2871227 +1247044 +471159 +408194 +1837707 +1226684 +68121 +890286 +1758370 +1226687 +1884164 +1056900 +1781564 +2607283 +2338648 +2043797 +68120 +1577336 +380459 +2871226 +2199276 +1485821 +2871216 +1781565 +1884178 +438932 +1478811 +380456 +471167 +1522488 +1884179 +1640194 +336509 +1924260 +2199282 +453313 +2199281 +224168 +1696974 +1837703 +471158 +2284591 +1884158 +438928 +2871237 +224167 +1884160 +453325 +68095 +453316 +1577322 +751137 +725971 +1577324 +320887 +2515808 +2414890 +211171 +245192 +1017879 +98814 +1115825 +890358 +380471 +725976 +180613 +385587 +550416 +716422 +1696987 +725977 +1191650 +890360 +2500081 +1884229 +392815 +1017876 +974568 +2500087 +2663943 +392814 +281581 +2663968 +733538 +696936 +1226705 +392854 +392804 +1884237 +385584 +946673 +1884235 +2663998 +1031652 +180617 +494717 +1884226 +890325 +1577376 +2663995 +430981 +696928 +696914 +696940 +2663984 +2809199 +2607294 +281577 +1837711 +890317 +2663952 +2199352 +890302 +1837715 +385580 +1191643 +2663962 +2398881 +1345313 +1334504 +2757698 +1191638 +211177 +634925 +180605 +430986 +1884203 +245203 +1884200 +380477 +385582 +320900 +716429 +1640205 +430982 +1905932 +320894 +180612 +634920 +1017883 +2830936 +98813 +2500094 +180647 +1884206 +1884217 +927405 +2414895 +1696977 +385583 +180635 +1256426 +1358401 +1577386 +180598 +1334502 +392833 +180600 +385570 +281565 +180622 +296357 +2398895 +380484 +1191653 +380483 +1739183 +1043437 +1191659 +1739178 +1577405 +430987 +1706215 +1140211 +908992 +1577406 +281583 +320898 +946674 +890356 +1758373 +392841 +1837712 +2043799 +180623 +1069188 +2500095 +890362 +392846 +1017887 +2012946 +809254 +809263 +21589 +1106093 +1389139 +1478820 +1437164 +1884259 +2043801 +1714340 +2043830 +438969 +1577422 +21593 +1096407 +380499 +438983 +2607341 +2284593 +1115831 +1204619 +2043813 +2363338 +1247065 +245228 +1739202 +380501 +380512 +1140212 +1176507 +453361 +2070605 +498886 +430996 +438954 +2664049 +245217 +1884309 +1884278 +2664039 +2019187 +224182 +1247073 +438945 +1226743 +725981 +482157 +2338657 +471174 +1837734 +320907 +368219 +1226810 +1884323 +2607339 +385598 +1152056 +2284594 +1678591 +974590 +740123 +1437192 +494723 +397605 +1056901 +1334511 +1226772 +1522490 +1781580 +1191695 +1884297 +1577418 +1096396 +1924279 +1204612 +2043831 +430991 +1837744 +1191690 +68163 +1226779 +974582 +320925 +1478831 +1884272 +974592 +281593 +453363 +2607335 +224177 +905087 +438968 +2441798 +286470 +974584 +2500107 +2043841 +494735 +1924281 +1247060 +1140214 +1226769 +224183 +946677 +1884280 +2043836 +1837737 +974583 +1247049 +320903 +368196 +482148 +1247052 +1115846 +2664015 +2607318 +68150 +296364 +1247088 +368217 +482156 +1820817 +453352 +1247070 +1684443 +328456 +1096388 +1043447 +245223 +2607327 +320924 +355947 +286474 +2607345 +1884298 +2607323 +1069196 +1226805 +946680 +1115839 +2664048 +1173238 +1785389 +180657 +1173244 +1017896 +199740 +2500119 +2607324 +68158 +1256444 +2070609 +1437184 +2019188 +1226758 +431011 +1247074 +180654 +2748723 +1884311 +1226731 +1846688 +368195 +21609 +1115848 +1506234 +21607 +890366 +1133839 +1226711 +2607316 +1884273 +1884316 +908993 +1173230 +1577425 +1437165 +1226715 +1043453 +199736 +1649227 +1247091 +550422 +1191696 +1905941 +1577485 +2664061 +1678600 +1017907 +890377 +431026 +1714341 +1140237 +1577464 +1226841 +1884370 +1204626 +68177 +1678601 +1256456 +245266 +1506242 +1017916 +2199356 +716435 +1884351 +1714343 +400573 +2500172 +180698 +2338693 +453397 +453385 +927460 +1140227 +890375 +927452 +336523 +1806912 +1706222 +328458 +2500139 +1706228 +1152076 +2338684 +331868 +482166 +2441838 +1905946 +809299 +98840 +1697013 +453390 +408204 +68207 +739089 +1706229 +1080159 +1133844 +1056904 +1924297 +254305 +2607355 +68200 +1506245 +2070616 +224219 +1226878 +471205 +1256455 +1069210 +1226877 +1152132 +1678610 +1191721 +380521 +1781588 +254303 +2517832 +1806911 +1577437 +68209 +211194 +809304 +431021 +68179 +1247107 +281598 +1069205 +1924295 +180692 +770747 +2338674 +2338687 +550442 +1191715 +408199 +946683 +927453 +180696 +2500162 +1173256 +1684451 +180666 +254304 +1577470 +2199361 +1884360 +1140224 +1152092 +1169864 +1577430 +1697005 +199748 +1640218 +2500147 +320930 +1164158 +2284598 +245245 +180681 +1924292 +770746 +1164164 +1577448 +2199360 +890374 +1056915 +1577433 +368227 +1884363 +1924305 +380523 +1781608 +1256454 +1115853 +2541232 +1806906 +254314 +1485824 +431024 +1577445 +224203 +471207 +453382 +550440 +1017902 +1506240 +224218 +1663802 +438992 +68215 +1080160 +331870 +180695 +2500123 +98825 +1884353 +1739237 +1820836 +1088246 +1640227 +809319 +2831017 +1106102 +1820829 +1043454 +1577490 +2830960 +2664083 +1031689 +368236 +321019 +471240 +2830945 +2831024 +321058 +1128138 +471252 +1031681 +2355142 +296456 +550457 +1031684 +1226916 +2363345 +809342 +1043471 +1247113 +1031705 +98853 +1739231 +1115861 +2363351 +1191818 +1905950 +1043566 +2019196 +2398937 +471216 +296432 +301290 +1043558 +1088248 +1043550 +1031676 +809314 +296425 +296470 +1654464 +98856 +550471 +974643 +1128141 +762174 +21641 +1096417 +1226894 +1884480 +1043546 +890422 +1577486 +1226947 +482214 +1191765 +1043498 +809318 +1837803 +1191813 +1115877 +482175 +1837771 +1820824 +1115869 +321007 +320965 +180706 +180724 +1031704 +1096429 +946687 +482203 +1884448 +296459 +2541243 +1096443 +2664109 +439019 +1739251 +2276401 +1820839 +2199382 +1226943 +550462 +1031671 +1279554 +482174 +1247118 +68254 +2414903 +296476 +2355137 +438995 +296440 +2398911 +1115870 +68239 +361353 +1115857 +453437 +1884437 +2398962 +321040 +1884495 +1837766 +224220 +634968 +1043469 +321044 +1943365 +453402 +1043537 +1204637 +1837786 +296420 +1478845 +1410152 +2607418 +1226885 +494751 +1043464 +1654456 +2199385 +1905955 +245271 +1410154 +254315 +1226883 +2664093 +1577497 +296416 +2830954 +453412 +1191759 +1884385 +321035 +2355130 +1654458 +1226893 +2398923 +1837808 +482207 +1820823 +1191824 +2664097 +320942 +361362 +68246 +321029 +1247111 +494759 +2664089 +2830995 +2398898 +320981 +2830955 +1226941 +1837757 +320992 +2363355 +1191749 +890412 +1884460 +296428 +1031688 +21654 +1031699 +1952024 +2831031 +2664131 +2363354 +1115862 +927465 +392868 +301297 +2607419 +2398959 +380536 +1334520 +2664080 +321008 +471212 +1043553 +890405 +1884438 +2541248 +68232 +1846696 +296375 +2831009 +2398990 +1649235 +2355123 +809307 +1173264 +2398979 +1837802 +1191825 +2398903 +1884404 +2664074 +2830971 +431034 +1226902 +482199 +2607448 +1820832 +2607409 +1884501 +2398945 +2664147 +199755 +908998 +286483 +2830984 +1043504 +1924308 +1031680 +1905952 +1640228 +355965 +453433 +1173267 +1884419 +1191782 +2830982 +2541236 +1043485 +180726 +2664133 +245270 +1952025 +296378 +1837800 +1884469 +550459 +1204643 +890420 +1173263 +2355136 +696962 +1739270 +2664171 +974684 +927474 +1884543 +1678624 +1739267 +974680 +2809201 +1358410 +1781652 +2515820 +1818288 +380540 +1017938 +1017945 +281634 +1806927 +751143 +1096455 +1577530 +1226956 +281645 +809356 +1640235 +1017948 +1781666 +1164183 +199756 +747355 +1905974 +1152150 +420500 +1781656 +1389143 +331876 +1756189 +1031720 +2515819 +1806942 +180743 +974649 +1069215 +482226 +1247142 +361363 +420501 +2338699 +2338712 +1152159 +673211 +2500200 +1577544 +2500203 +420519 +471271 +2500189 +1164176 +1739271 +2199397 +1884548 +331883 +673212 +420491 +2809202 +1096451 +431048 +754354 +368251 +1781645 +1096454 +754355 +281637 +1367860 +2748741 +2748738 +2664160 +68262 +1226973 +482221 +1577531 +1663814 +1152141 +1884509 +344958 +1640232 +1204665 +224221 +974673 +809350 +1781661 +2199414 +245291 +503027 +740128 +503030 +2541255 +211213 +946690 +1739263 +2024554 +927477 +1577513 +494779 +1905978 +2500205 +1924342 +1334525 +1739264 +328464 +927489 +281635 +1140260 +420510 +2441851 +21669 +361369 +1264598 +498892 +1781634 +2199410 +2757703 +1684462 +471273 +1017931 +974676 +1133862 +2607460 +2500212 +1152144 +1264597 +453449 +1884515 +1383887 +1226966 +1678626 +974665 +2748739 +1017930 +420502 +1640233 +98858 +1577509 +654928 +498895 +927485 +2199398 +2738864 +420496 +498902 +2500204 +2500188 +2500180 +1256477 +634996 +1884559 +453485 +2270357 +368257 +1924370 +494796 +1884590 +380548 +1115897 +1152192 +2732435 +1191860 +1227029 +344961 +1400127 +1884560 +1837827 +1781692 +1884574 +550498 +1227038 +1924377 +1905982 +1227050 +696970 +2607501 +1017970 +1781682 +2441866 +1191874 +439068 +1204675 +1739285 +1140282 +254334 +927491 +180801 +1924346 +1247158 +2426957 +974703 +1096468 +1191870 +439062 +471294 +1227072 +453483 +1191856 +716442 +439069 +1506266 +431082 +431067 +1191905 +321078 +482227 +1256488 +1577571 +1164201 +905108 +1152169 +1256478 +245313 +1884583 +1191865 +482247 +1227018 +1247163 +1806956 +2748747 +2732434 +1096472 +1577552 +974702 +1096460 +1227009 +739096 +453487 +1884629 +1080168 +68289 +2664175 +2664187 +180781 +2024557 +1191862 +1017962 +1227005 +890446 +1884550 +471292 +1943367 +1884627 +673213 +905099 +482252 +1884608 +1818302 +1191911 +634999 +98881 +2701671 +905101 +1577585 +1781699 +927492 +1806965 +245306 +1152185 +927503 +1096467 +385608 +1227058 +927505 +2500251 +1152177 +2664179 +634997 +809369 +380553 +1130741 +355984 +2664180 +1884582 +2441868 +2500225 +1115884 +1204676 +1227013 +431081 +1256484 +482241 +296482 +2748746 +1191850 +1506278 +98883 +550502 +1264604 +909005 +281657 +2009057 +1924375 +1164199 +380551 +2500242 +1031725 +431057 +1506264 +1256476 +1400128 +1115887 +2664195 +2607510 +1884594 +1884578 +361373 +1884555 +180787 +1884589 +328468 +1191891 +1884563 +1191868 +1256471 +1739276 +2338725 +2399005 +2728449 +1577667 +1714357 +635032 +809425 +1640248 +296498 +809404 +2760330 +1577603 +1485829 +2712964 +1739304 +301312 +1140289 +68310 +296487 +2740632 +890511 +2500256 +281671 +1204685 +890465 +2399008 +199770 +1227085 +98904 +890537 +1714359 +2728442 +1115904 +1017974 +673225 +2607520 +1884640 +1115908 +471296 +1781700 +1577606 +1577637 +380560 +1577593 +550520 +1506280 +550508 +890510 +2664240 +1924413 +1031741 +211232 +890469 +1577630 +68308 +2399010 +1334538 +1905989 +1640250 +946709 +1577612 +890506 +635023 +380558 +2664221 +199772 +1437238 +1031730 +2363367 +1818305 +1837838 +98906 +180872 +2399007 +1884659 +1697041 +1128158 +1806977 +1256492 +809390 +482305 +890524 +1577652 +2363366 +1649243 +809418 +1739305 +1128149 +2338724 +1739297 +2199480 +180823 +2607545 +1478877 +635050 +2304659 +361379 +2626489 +1334531 +392877 +736511 +361377 +716453 +2399000 +1924396 +385612 +2419133 +2199532 +1884661 +1383895 +2399013 +809438 +321083 +890530 +361386 +1739291 +321094 +2664213 +1577657 +1256496 +224251 +1115906 +180833 +890490 +1437231 +1227105 +281670 +1227093 +180843 +321093 +2199524 +1577633 +890462 +2399017 +2419131 +2199488 +696990 +2199535 +1437223 +68319 +550571 +68324 +2270397 +635072 +2541279 +2065962 +1806983 +2607609 +211235 +673232 +2065951 +1478900 +635076 +1654474 +1506285 +2043894 +890605 +2607588 +2028935 +1345340 +2607573 +762183 +180940 +1367875 +1478904 +974726 +1522519 +1924423 +1577705 +2607597 +2065939 +180914 +1313845 +1478928 +180906 +281680 +1884687 +2072100 +2426960 +2304676 +635158 +809476 +1018006 +1376614 +1372568 +180920 +1488284 +224255 +1358426 +2399048 +2270399 +2441883 +2441881 +2199582 +635172 +1640263 +2199609 +2278640 +1031747 +2199593 +1478909 +2338756 +1478935 +1506298 +2270371 +635096 +1018040 +1437244 +2607582 +1018010 +2304675 +180922 +635078 +1018012 +1437255 +1640271 +1358440 +1043607 +1478947 +1334554 +1313838 +635153 +1506296 +2728455 +1684484 +550561 +927548 +1018042 +1437247 +1697046 +2724240 +550565 +1297170 +725997 +1522505 +762182 +927540 +1018014 +2043860 +974736 +2399035 +1018023 +890594 +2065972 +974728 +2728464 +1345334 +1478937 +1979176 +180938 +2199566 +1649248 +2304663 +1106121 +1478934 +1478899 +1031744 +2270375 +1964096 +2363377 +2737188 +1043608 +635126 +1964087 +2093528 +180896 +1522516 +1995408 +890600 +890567 +635185 +1739312 +1358431 +2065981 +890572 +1506286 +1204687 +809492 +2270376 +673228 +1577718 +1577719 +2541276 +1522506 +1043603 +321106 +890588 +2065960 +1577701 +635080 +1640264 +1577734 +1697044 +68323 +1313846 +180894 +1279579 +1506299 +1367868 +2093520 +890582 +2199552 +2043893 +2065935 +2043871 +180885 +2399030 +1069247 +635171 +2065937 +890586 +1884676 +211234 +2027282 +1478918 +1678657 +1115910 +809455 +927541 +2093519 +1884669 +2712969 +716468 +890628 +2607602 +673236 +635188 +1654472 +1837844 +2441882 +1227106 +2065944 +1297172 +890551 +1367876 +1964085 +1279584 +1884667 +1313844 +1640274 +180903 +635084 +392880 +697007 +1437273 +974765 +1884691 +1437272 +809532 +503040 +1279599 +1577778 +2338774 +1334563 +181012 +890654 +1714373 +2338768 +254358 +890652 +1785405 +1577753 +1018083 +2043902 +98933 +1806992 +98944 +2399079 +809501 +1906006 +974752 +1697068 +1018075 +1846711 +739101 +2304684 +2399081 +2664270 +1884701 +2607635 +2093538 +2338778 +809519 +809526 +2093544 +498915 +180972 +809518 +181013 +2270410 +1837862 +1025088 +254344 +1884730 +368286 +2607659 +1807000 +2399073 +180976 +2399072 +211239 +1884720 +224261 +1506305 +2338789 +2399074 +321116 +1640290 +550598 +2338794 +2093539 +1837855 +1088269 +2199643 +1781708 +98938 +550596 +349419 +974764 +2199653 +1018067 +1018062 +1924442 +296502 +2541302 +2043901 +1781710 +181001 +909011 +1018094 +1478980 +1884707 +673274 +654951 +180974 +550575 +716475 +1485844 +98934 +281707 +2199634 +1043611 +2664274 +2199632 +98950 +2199642 +1437278 +2199628 +1884699 +2028945 +2541307 +809517 +498911 +224263 +909012 +550593 +974751 +2304693 +1924434 +1714385 +1697079 +1018121 +2368935 +1758413 +1069255 +2607684 +2664312 +2441901 +1884767 +890670 +1714386 +1884737 +1106125 +68359 +2712982 +2500294 +2199710 +181032 +726004 +635234 +1334580 +1173288 +809562 +890678 +2760337 +1115932 +1577838 +224267 +1781717 +2664289 +1697080 +321118 +2399108 +890680 +2363384 +2664332 +245354 +2414947 +245357 +1367893 +2682903 +1884762 +2065989 +2338809 +1964107 +1577862 +1345361 +1018102 +2724248 +1376639 +2199666 +809553 +1884760 +1697072 +181053 +2199711 +1697093 +1485846 +245356 +1043619 +1383910 +2664283 +2338813 +431084 +2399112 +1697071 +1640303 +1096500 +2093557 +2607689 +2500303 +1577793 +1706243 +927557 +21712 +245348 +1334591 +68388 +1334581 +471304 +1577812 +453505 +890691 +2338807 +2664309 +1297198 +2737201 +2607680 +2500305 +1478986 +2399100 +2199704 +1739335 +1906014 +1577879 +946736 +1106126 +2338810 +1128174 +1031752 +809571 +1697084 +2199717 +1106128 +2607693 +2500317 +1096509 +2072102 +716491 +181054 +1884764 +809540 +1345359 +1279612 +1884752 +809564 +809548 +1313848 +1506310 +2399082 +181045 +1506308 +1577825 +2664292 +1649258 +890659 +890695 +2199663 +321117 +1096501 +2043914 +1345357 +946742 +1358451 +1383909 +181055 +181034 +1115927 +1884763 +2199694 +2270421 +2199761 +726006 +635272 +380589 +927579 +380588 +1437304 +974832 +68414 +974825 +2419150 +181066 +1522526 +1739353 +635289 +380585 +1279626 +1739356 +890784 +1106132 +2541329 +927582 +739103 +1884822 +181084 +697029 +2607709 +1506313 +1758429 +1227128 +635279 +181076 +1714390 +181098 +1697103 +2199783 +1756219 +211257 +2664372 +2712991 +2199746 +98975 +1758425 +1128189 +1884824 +1247195 +635250 +2607723 +1247194 +890767 +1938510 +946761 +181096 +890745 +1031772 +673289 +635242 +550635 +770778 +321139 +1279627 +2607767 +697028 +21726 +890765 +1837868 +770772 +909016 +2338845 +68426 +1031757 +1506318 +1807016 +1227121 +1884811 +2760339 +2607724 +385614 +2419151 +181064 +2199720 +2664344 +1031766 +1043633 +2419146 +974819 +1884825 +2607735 +1807013 +2338827 +254364 +1756213 +974822 +2199727 +1115944 +1191956 +2712987 +550625 +2607715 +1031761 +1577956 +1106133 +890781 +2270431 +2199760 +1479013 +98985 +550619 +2607734 +482316 +2399128 +1204705 +2541319 +762201 +68428 +181075 +809618 +224279 +1043632 +321142 +697037 +2199741 +1884787 +2338831 +2338851 +211259 +550637 +1924457 +2199719 +2500341 +2712995 +2664370 +1697099 +809593 +2399127 +762204 +2399123 +1577892 +392882 +809578 +2338830 +2399114 +1106130 +2338878 +281716 +68408 +550643 +2664369 +1758422 +1846714 +1485849 +635258 +1577897 +2043916 +1152200 +809574 +2009063 +550629 +1031758 +1837871 +2338837 +321134 +809580 +2500337 +927588 +2712990 +2199774 +2338864 +2664367 +296511 +1756226 +2664384 +809652 +1506328 +1345372 +2270467 +946768 +2626517 +1018161 +2399143 +2419168 +2338906 +1884869 +1640358 +2664433 +21735 +1043640 +1018186 +301333 +809663 +2682923 +1739368 +1756222 +2682914 +1522538 +2199812 +2278659 +635342 +2419155 +2607815 +1807019 +1760899 +2664412 +1297216 +1577979 +2607788 +1115952 +1031774 +2419167 +1640328 +1080175 +1640329 +2199822 +2607808 +809662 +1345377 +635313 +361391 +1313851 +1721061 +1837877 +2607791 +1085674 +697043 +890824 +2626515 +1938511 +2310156 +1479061 +2682928 +1437320 +2682918 +890808 +2199839 +1697116 +1479052 +1578005 +1085673 +1479039 +1785415 +1924473 +2338927 +697040 +2199834 +635309 +1979190 +2607792 +2607787 +1479023 +809654 +2270453 +2441910 +635348 +2682920 +1479038 +974840 +1756227 +1758436 +2270463 +2270460 +1522532 +1837875 +1924478 +890837 +1506331 +1577987 +2270450 +1924470 +2682915 +2338922 +890823 +2199810 +2270488 +635318 +1018190 +1654480 +2607826 +2664424 +2199852 +550666 +2664391 +2006495 +2664460 +1640338 +2304722 +716500 +2270480 +673290 +1640327 +2338938 +2270473 +1128198 +2399151 +1096518 +1884908 +697051 +1884941 +2043935 +1678686 +498970 +1884898 +2664522 +762283 +1140297 +2500426 +1739404 +2607896 +697053 +1714413 +1837879 +2607858 +2044036 +2541348 +1578088 +1649287 +2500432 +1578097 +1884874 +1279650 +1578038 +1279643 +2338967 +1080185 +2607890 +1884945 +2607901 +2500446 +762271 +1884918 +1578078 +2043945 +1578075 +2338962 +1080204 +1506351 +498979 +2338953 +697063 +2199925 +1256505 +1256527 +1506367 +2338954 +2199957 +1884887 +927624 +2199959 +2043998 +2607905 +1578092 +1739400 +1130763 +2664588 +2338997 +2441918 +1649291 +762294 +2338950 +1884880 +1578105 +2664499 +1767878 +2338951 +1578096 +482334 +2664614 +2199974 +697059 +1578110 +1837908 +2500453 +1080180 +2043992 +1485852 +2199979 +2664583 +1739379 +2664498 +1227147 +1884893 +2664556 +762295 +2664619 +762223 +1506362 +2664564 +2070626 +498944 +2043962 +1506357 +2664572 +762263 +2043979 +2338960 +1714406 +2043930 +762266 +1837913 +2607859 +498930 +762277 +482340 +2664505 +2199917 +2500416 +2664570 +2607873 +2664550 +1884916 +1130774 +1578037 +1714437 +1884877 +1130755 +762285 +1578101 +1781729 +498940 +2001639 +2500424 +927621 +2664497 +2664500 +2607835 +1884895 +2664555 +2607889 +2664582 +2664504 +1578077 +2399166 +697065 +2043995 +1080201 +2607842 +2664469 +1663854 +2500410 +2043969 +2199985 +2664516 +498934 +1739378 +2607885 +1714436 +1678673 +1578039 +697062 +2399167 +2500442 +2500450 +2044007 +1663846 +1767877 +2200011 +1758463 +1756242 +494822 +181151 +2199990 +809672 +2607910 +1697166 +2664726 +1781738 +1756239 +1739440 +1578163 +181141 +1678701 +181158 +2339041 +2399181 +1884996 +2200103 +1884980 +181182 +281724 +809689 +1578175 +2339052 +1885001 +2500517 +2006500 +2339008 +1191964 +1906052 +1313854 +770798 +2664639 +1173290 +2270520 +2664633 +98995 +2399175 +1697150 +1884969 +905135 +1884999 +1578208 +733565 +2664669 +2500556 +1334631 +1739424 +1578147 +2701692 +2500497 +2607951 +1578212 +2728472 +1128214 +890927 +1506390 +2200036 +1376654 +2831044 +2339048 +2270507 +68465 +890843 +1986301 +1334623 +809667 +2200113 +2831042 +635369 +181188 +1884997 +1663863 +1678687 +1640373 +2339055 +2831046 +1884956 +281734 +1133873 +2200031 +890932 +2354512 +181167 +2200030 +2200046 +2664718 +2200061 +2200072 +2070652 +890918 +1023904 +471311 +2500509 +1684496 +1128216 +1649305 +2500552 +1640387 +909024 +1885003 +1578186 +1018215 +1807023 +2664691 +1906046 +181226 +1706254 +321157 +2200028 +1739453 +1025100 +1781736 +181206 +2399171 +1578141 +2270527 +809686 +1578192 +890940 +2270505 +1739430 +1164239 +2607937 +1164235 +2664732 +2664663 +68476 +1697161 +2072108 +1173291 +890955 +1739444 +1758455 +2500537 +2607925 +1697121 +2339037 +2607926 +2200081 +2006499 +2070644 +1031784 +2200016 +1781740 +1714444 +245372 +2270501 +181179 +673302 +2200033 +2500512 +2664758 +550669 +1018209 +2339015 +1758439 +321152 +890857 +2093610 +1578204 +1649307 +2664759 +890861 +2093608 +2270535 +770806 +2607919 +1697140 +762309 +2664642 +2664667 +2607935 +2270512 +1018213 +1697163 +1018221 +2500543 +1043654 +1578190 +635366 +1979197 +181185 +2500495 +2339043 +2500485 +635356 +1191966 +1578199 +1739438 +68478 +2664644 +2200076 +1884971 +2270528 +1640370 +1739417 +1578139 +2006498 +254389 +1760910 +1128219 +809668 +1479075 +2200178 +1906057 +368304 +2200135 +2809226 +1756252 +550672 +2200138 +471312 +2441936 +1578237 +1924522 +635397 +1164248 +1334633 +1506406 +1924526 +2607961 +974864 +1979206 +2339080 +2664776 +380601 +1578242 +1256553 +550688 +68494 +1649310 +1334649 +2019243 +726015 +1807040 +1096532 +2399197 +1227160 +2399184 +1924514 +224302 +1924511 +1979204 +1437339 +2500567 +1401654 +254392 +1018244 +742515 +1376655 +2500578 +99000 +181265 +1885037 +1885030 +181233 +974905 +1096534 +2354516 +635410 +482348 +2664785 +380599 +974867 +21745 +809697 +2200127 +99003 +2860759 +1227167 +2006505 +1906055 +1264621 +1031788 +1023906 +1906056 +1924505 +1678704 +1885015 +1924517 +1130778 +1949127 +368299 +927652 +1018234 +550684 +1506403 +635407 +1279678 +2500572 +974881 +2200153 +1506405 +453522 +1227171 +635403 +1678702 +726016 +697087 +1578232 +974862 +697081 +1115968 +1031790 +1697186 +2664783 +1964142 +974887 +2701696 +1697192 +890967 +1697187 +2664936 +2399217 +1924593 +68502 +301350 +296575 +1756284 +1043729 +321212 +2664857 +1479119 +1130843 +1313856 +1758496 +1924642 +1046973 +2399202 +1479170 +2414987 +1739517 +2665004 +2665167 +2665201 +324190 +324187 +1885110 +1297253 +1756274 +1924685 +2399218 +2665074 +2665086 +1046989 +2200206 +1479135 +891050 +770818 +296541 +181283 +770819 +1043671 +1018259 +181303 +2044057 +301353 +68540 +1578322 +1924575 +1758484 +1031836 +1924648 +2665299 +2044050 +1025131 +2339088 +1256575 +2419292 +891056 +2500585 +2664997 +2664810 +2665182 +1116003 +2665009 +1924585 +2419252 +673308 +891057 +2419275 +2665284 +1031832 +1885047 +635442 +2665042 +1885060 +1227187 +1739524 +326003 +2664915 +1479148 +1115983 +181286 +68530 +2419208 +2665005 +1756259 +1885068 +2665073 +1031805 +2664841 +2665247 +1046984 +1924690 +2339086 +2419194 +891028 +1578282 +1018246 +2664989 +68539 +321225 +2664949 +1479155 +68523 +2419240 +2665092 +1043719 +1479130 +1043758 +2809243 +550698 +1376658 +68542 +1924621 +1924564 +1128245 +891008 +1758498 +296577 +1739484 +326018 +1739483 +891048 +1031839 +1046937 +2665137 +1046994 +1023919 +974925 +2608010 +2664858 +1758488 +181270 +1043713 +2728478 +891044 +1640424 +1227183 +68527 +2665189 +1128254 +2665081 +1949128 +2419233 +1023935 +1023929 +1279689 +1885116 +2270540 +1479158 +1649315 +1578359 +1578332 +2200235 +2419254 +2664937 +1640409 +2608012 +635445 +2664932 +2399222 +1025102 +891021 +2270557 +673311 +1043679 +1046963 +2664821 +2664944 +2270551 +1649336 +1649340 +1885094 +326020 +2414990 +1130805 +2419256 +1479096 +1128236 +2664918 +1739479 +1256568 +2419224 +1885076 +2664911 +1031823 +1938530 +1756280 +1885072 +1649326 +1924610 +1046991 +2607994 +1043749 +2664807 +2665039 +2665121 +1924547 +1739486 +1924715 +2665306 +321191 +2665143 +2665287 +635496 +181271 +1043768 +1739490 +1758486 +1479099 +1924714 +891052 +2682963 +1924618 +891067 +1924704 +1649354 +2665036 +1578390 +2665111 +2006509 +321170 +635448 +1952045 +1128261 +1130801 +2607983 +1043707 +1043714 +1479114 +2399235 +1130828 +635411 +2665058 +2665271 +1578285 +325999 +1640417 +1128248 +1654501 +2664969 +1885075 +2664842 +2066025 +2419257 +1739537 +1116013 +1924641 +2665170 +2665266 +1578376 +181268 +2200256 +2664814 +1479095 +2665152 +2664886 +2664954 +1043733 +1031841 +321192 +1043709 +21749 +2665072 +1128226 +1128231 +635482 +2399254 +68521 +2665135 +1885049 +2664835 +1739552 +321178 +635456 +2665065 +1924568 +2044056 +321219 +1924591 +2200199 +635484 +1043699 +2399224 +1924559 +2399203 +1043668 +2419286 +1479103 +1479087 +1025132 +181269 +321171 +1885098 +1758499 +1758482 +2419202 +1924612 +2399206 +68531 +1128239 +1479145 +2270549 +1025115 +2665212 +1115987 +324180 +2665108 +325989 +635446 +321197 +326021 +1885124 +1756262 +1392479 +2200300 +2665324 +2724271 +1885142 +1080223 +224315 +2500628 +1056946 +344964 +1227223 +2665316 +482394 +431086 +1578401 +2809252 +762327 +1578478 +349426 +1837938 +809785 +2608015 +453542 +1578476 +453524 +726020 +2500610 +385621 +482382 +809750 +181311 +2200287 +809747 +2757752 +1191990 +336547 +1885164 +482387 +1031855 +254426 +2608031 +1924721 +2200295 +2500607 +1807071 +2093617 +1116026 +482373 +2500642 +809820 +1191988 +349432 +1051154 +550727 +224349 +2500625 +471314 +809780 +1578404 +1785419 +1739576 +809783 +2608027 +809764 +2441947 +1227211 +397654 +1116028 +2339111 +99058 +1152227 +1924717 +224339 +431102 +1578450 +974943 +328483 +2304748 +2019245 +1128279 +1191985 +809819 +2500589 +1885140 +482375 +1031851 +2665321 +1924736 +809807 +1885175 +974945 +482368 +1578419 +1678715 +2665312 +1069275 +1256589 +1437366 +99018 +1739584 +2500641 +2500627 +1152220 +2665331 +99059 +482366 +739107 +905142 +809749 +439078 +1678719 +281747 +927698 +199807 +380606 +2665340 +809818 +2500598 +735829 +1192008 +1227202 +254429 +2608020 +21759 +1437372 +1885146 +1379397 +1837941 +68543 +482381 +199813 +482396 +762328 +2200278 +1781751 +356013 +1578437 +99046 +1578482 +809763 +2500590 +909027 +927685 +1837935 +482362 +809758 +697090 +1279695 +1152226 +2665310 +762324 +1885167 +1204722 +199808 +809805 +1334653 +397646 +397650 +99030 +1069269 +753001 +1578489 +2809753 +1479224 +2809748 +1106150 +891180 +891178 +321259 +2809720 +494834 +296627 +2415004 +296617 +321272 +2809581 +2809575 +99062 +2809691 +891118 +1649361 +809823 +2066034 +2809564 +2809680 +1018288 +809842 +1025149 +2809297 +296611 +2809371 +1578496 +946790 +2270573 +2310163 +2419303 +2809399 +1128295 +2608061 +286525 +2278691 +2809627 +181360 +1043775 +286531 +809861 +321277 +2809553 +321232 +2809353 +321289 +2809447 +2066030 +1756319 +1739602 +1345401 +2809634 +2809330 +2270576 +321244 +1479217 +1437377 +635516 +2809587 +809837 +1578494 +2626531 +762334 +770832 +891161 +286534 +946788 +2809423 +1025144 +281756 +2809307 +2809474 +1654505 +2200330 +1023939 +2809731 +453552 +2809550 +482405 +891111 +2809306 +1479198 +296647 +2809410 +891082 +2809527 +2419297 +2809499 +1043778 +2809609 +1885201 +181353 +2809395 +21783 +891162 +1247215 +1437373 +2809319 +2809304 +2809380 +181332 +2809406 +1043780 +286532 +296637 +1297255 +762333 +482406 +2809366 +1479190 +1479208 +2339131 +1885200 +2809427 +2809285 +809862 +2354533 +809856 +697103 +494841 +1837950 +2200303 +1437374 +301368 +891164 +2200304 +635504 +2809534 +1031863 +809840 +2809611 +1256600 +296645 +809822 +392898 +1479191 +2809461 +635505 +181355 +1043771 +2809326 +21780 +68568 +296628 +211282 +809855 +2809673 +296633 +2809655 +1756324 +2809602 +2809740 +2066035 +1938537 +2809387 +927702 +380613 +2809434 +1654509 +2809502 +326027 +891101 +301366 +1247211 +1152229 +181320 +2809557 +1437387 +431114 +224361 +2200341 +1846723 +2270586 +2728479 +431132 +1658453 +380629 +439088 +1227267 +1714464 +2399313 +1096551 +296662 +1152235 +245386 +1785421 +1345403 +635541 +453559 +2310165 +1837958 +1192021 +2399304 +431116 +550741 +1106152 +1116041 +1506425 +2415018 +1437389 +1018299 +927721 +2399314 +21788 +1885210 +946810 +1714474 +1578531 +762342 +68622 +471343 +1192036 +431119 +1479231 +1227262 +1345406 +809876 +1023942 +2304763 +1018308 +482418 +224364 +1043803 +891206 +349436 +281763 +1714471 +1807103 +281762 +1088289 +927710 +2500646 +368312 +1401655 +635531 +1721071 +181398 +1578501 +1837962 +361412 +909031 +1578518 +1345407 +482420 +2001646 +2399303 +1578545 +1663882 +68591 +321306 +99068 +1256605 +1031870 +635539 +245391 +1479233 +439082 +1649377 +891193 +2200338 +321316 +1227249 +946803 +2399316 +1227265 +1578510 +946808 +1714479 +809878 +974977 +2310164 +1714468 +181386 +321405 +2270654 +1906088 +2028946 +211301 +635645 +635561 +281774 +1479241 +380661 +245452 +68684 +321349 +245426 +321414 +68698 +891244 +296676 +635644 +635796 +181465 +380672 +2728483 +471355 +1906092 +891242 +2270610 +321337 +1106159 +245447 +181459 +296689 +181430 +1938555 +635761 +181476 +2270655 +281770 +1479240 +635557 +1204740 +635672 +1043810 +635549 +635585 +891243 +471361 +891248 +673333 +2270588 +946825 +1938559 +321325 +1204750 +321319 +1143906 +733579 +380645 +2270635 +716532 +321351 +321358 +635699 +1204756 +673322 +673329 +1106163 +2270650 +68656 +1106175 +891218 +1018322 +2270599 +68669 +2270652 +1128324 +68715 +891238 +635701 +361426 +380678 +1938557 +380650 +2270651 +1204784 +733576 +635732 +2728493 +380642 +211299 +635583 +245432 +181490 +891226 +736525 +321352 +1818325 +211294 +635794 +716576 +635637 +296674 +1522564 +321410 +321408 +321336 +2270611 +281775 +1760928 +1706268 +68641 +891222 +635710 +321374 +1938546 +1106160 +1247236 +1128330 +181448 +380647 +1018317 +1247232 +68664 +245424 +181433 +321326 +635621 +245443 +1949139 +1479259 +635685 +321384 +296665 +68717 +321327 +68712 +321383 +716552 +181458 +321350 +635657 +891223 +2270645 +68706 +1128326 +1785424 +1088294 +2665361 +550749 +1227275 +550755 +1756348 +1952049 +324202 +286537 +1204796 +453597 +281785 +635812 +550760 +1227272 +1173320 +2200358 +1578579 +673335 +1756347 +1952062 +1885221 +2500659 +1279718 +1906104 +1578589 +891270 +2724290 +2728510 +1256616 +1279708 +1437396 +550767 +1885230 +673346 +1952059 +181531 +471382 +809883 +733582 +254461 +1204790 +1578577 +2093628 +1758506 +2713009 +1991158 +1906096 +635833 +1096557 +494855 +1906106 +392912 +1578563 +1334673 +1578583 +1334665 +2728516 +2200366 +1578559 +361445 +1376670 +809888 +417931 +673341 +1986307 +2713010 +1906097 +1128351 +716584 +1578569 +1304762 +1018344 +1578578 +281780 +1697207 +1128343 +1952048 +181505 +2757767 +349442 +891278 +946833 +927728 +2019257 +1697201 +891250 +697114 +1479263 +550748 +211310 +1389154 +1952051 +2006515 +1031879 +891264 +697120 +1758508 +211307 +1479266 +2500660 +697109 +1096555 +809924 +1018330 +1192049 +1313866 +635827 +301382 +1204792 +946835 +809901 +2500658 +2724285 +2737232 +1304763 +301381 +2724288 +809932 +68730 +1578554 +1389153 +1952054 +21825 +224386 +1943401 +2012965 +1116064 +1395991 +1578596 +697145 +2200389 +742520 +1649381 +1116070 +697144 +1227304 +1264641 +1358486 +1116062 +2009080 +1116058 +697133 +2200382 +21824 +224397 +2399344 +1116060 +453600 +1096568 +1739618 +1943403 +1697217 +1018349 +245475 +1885258 +224412 +1578598 +550799 +1924791 +356019 +2608079 +224403 +1395990 +1383925 +550787 +1264643 +2310174 +1152253 +2399341 +927753 +927755 +762352 +1506433 +1578597 +2310173 +1192057 +321444 +336551 +181558 +1506436 +1164287 +482433 +281804 +654974 +99111 +301394 +2500674 +927746 +550808 +1152252 +1714486 +199832 +385631 +1846736 +2019263 +2200380 +1247254 +254505 +975029 +254483 +2626533 +2399343 +550795 +99121 +224402 +1334674 +697128 +453616 +254482 +1204803 +1096570 +1247258 +1924786 +1885244 +431143 +1697215 +1227309 +1758513 +1837992 +301388 +224395 +697147 +385629 +1192073 +1697220 +697137 +1885245 +224416 +336553 +927756 +697126 +2500661 +2665372 +301392 +1578610 +2001650 +224421 +1256624 +224394 +742519 +1256630 +1116065 +1924793 +2304779 +368320 +975054 +2304782 +1578656 +368331 +1578665 +739125 +2200422 +1924819 +1116082 +1739627 +1578633 +1227319 +1924824 +1152257 +21837 +1578687 +1279729 +1334688 +726052 +1096579 +762359 +1334695 +1578673 +1116087 +809981 +1389158 +1578686 +1781773 +21835 +697172 +1334687 +21861 +301397 +482445 +344989 +99153 +2399366 +697162 +975095 +1885286 +1256639 +550839 +1578680 +1096577 +344987 +181570 +1256638 +1578639 +1227323 +975048 +810003 +1334686 +21844 +1506442 +2724296 +927781 +1152256 +301407 +975081 +550825 +99195 +301400 +1164291 +2304789 +1227312 +1714488 +1192080 +2399367 +809998 +224442 +99181 +99175 +550844 +99135 +927759 +1578683 +739124 +356021 +1578670 +1116104 +810024 +697156 +99147 +99138 +99139 +21833 +1227336 +550849 +245477 +1739626 +550818 +1479269 +975093 +1807135 +2399359 +927762 +550857 +550810 +68744 +1924822 +1164295 +1678736 +1578669 +1578651 +550838 +1043836 +99187 +1116080 +1578675 +1578657 +1069311 +99203 +975071 +1924812 +1924805 +2200420 +1096580 +1116099 +2517851 +1031891 +2626535 +1578729 +1578732 +1578706 +1279743 +1649386 +2665412 +1663905 +1578731 +1663901 +301414 +1358519 +254522 +1767901 +1885291 +927817 +1279742 +1164298 +2001655 +1279744 +697187 +1116110 +1192102 +453632 +1227355 +1164299 +1069317 +550873 +697185 +2093629 +2871244 +1506451 +482448 +1885312 +99221 +21880 +99210 +1192094 +810041 +1506453 +1334698 +2500700 +1758518 +2200461 +2608096 +550898 +21871 +1714491 +21879 +181577 +2200459 +2844430 +2304803 +2399383 +1678741 +1714496 +2871258 +1192101 +1885308 +1885295 +1885311 +1578703 +1358504 +99222 +810038 +1578697 +1506448 +2608101 +380701 +1838006 +1885310 +2304808 +2500709 +68745 +1578699 +1807153 +1578714 +2871256 +550908 +471409 +697213 +1192109 +2399442 +2665433 +2093650 +1906121 +1367918 +2871284 +2019275 +550937 +1279754 +2541377 +336563 +1227377 +2304829 +2441961 +2200497 +2500722 +927860 +1358526 +550929 +550909 +2304819 +810089 +2871300 +635892 +810093 +2200481 +1116117 +21886 +726084 +439122 +1192106 +1247276 +754373 +2093630 +453642 +68747 +1018359 +1479275 +1649393 +1649396 +2608123 +1401662 +224476 +1714521 +1156670 +2713022 +2500713 +635902 +1964155 +927836 +2339145 +753005 +810097 +471415 +349450 +1924843 +2724299 +726068 +1106193 +810092 +1043839 +2608124 +1192104 +1156671 +1358531 +99229 +1256651 +181579 +1192105 +2304813 +927848 +697202 +1924847 +2608110 +1031912 +1885359 +1358520 +68751 +975134 +1663910 +1506474 +2871272 +742530 +1684517 +927834 +1334735 +1334730 +1654522 +635886 +1979253 +2500724 +2304835 +1506466 +498980 +673360 +2608126 +1485866 +716601 +2399400 +1401661 +2399408 +1964152 +1376677 +550964 +697198 +1714534 +770850 +891310 +1096607 +2399426 +2426991 +1952069 +810076 +1506472 +975126 +891307 +1885354 +1031911 +1838022 +1358534 +891303 +2871285 +754368 +1204816 +1578776 +224478 +1358528 +810081 +2093646 +1506469 +550933 +321450 +550931 +1227379 +810096 +99228 +2200503 +2399398 +1767904 +2871288 +1227369 +2713020 +1578736 +494874 +2200477 +1401663 +1389164 +635893 +1192108 +716598 +550958 +2304824 +1885338 +99232 +635860 +1714540 +726063 +1437417 +2871319 +2500723 +1807163 +471427 +1152267 +1358524 +181578 +1578765 +754374 +1979240 +1663917 +2093638 +2665540 +2399488 +1885412 +2737254 +2757793 +1678750 +1885396 +2093656 +697247 +975136 +1506493 +1924865 +1116128 +181632 +635970 +2665485 +697232 +1885424 +1885369 +1152276 +810145 +1018392 +1739678 +1943410 +1578852 +673364 +181608 +1578815 +1204833 +1964173 +1964171 +1714542 +2500783 +1885385 +1739690 +697238 +2665451 +2339171 +550981 +181630 +2701705 +1204832 +1506497 +2665457 +2012969 +810136 +1739686 +635975 +736531 +2757798 +673379 +301423 +254536 +1096612 +726090 +2339198 +1018401 +1031916 +2665542 +281811 +2608149 +1721079 +2339165 +2200561 +1767906 +1334775 +1279764 +1506512 +368357 +2009085 +1906127 +810165 +1116127 +635912 +975191 +697257 +635960 +810156 +2339161 +2665545 +2732469 +2415035 +550999 +2304850 +1522583 +2399460 +1522579 +2399473 +494881 +1358561 +697229 +810107 +301422 +551031 +736530 +2665473 +1227396 +1578790 +1279784 +1358557 +1192119 +1358559 +733591 +1986312 +1334768 +2339192 +1739655 +1885389 +1128374 +2399447 +1578843 +697256 +1279786 +733590 +697246 +2200573 +635927 +1885416 +1885398 +744991 +1979273 +1714541 +2200595 +1578820 +2665499 +1885367 +810127 +1714553 +1807175 +2737255 +482471 +1739688 +2339180 +946858 +654996 +245488 +1924866 +1663933 +1392484 +2757786 +2200517 +1678754 +1964162 +1247284 +1964164 +1192127 +810126 +181625 +68755 +482468 +498988 +503056 +975137 +181627 +2757792 +551020 +2692650 +1400139 +1697239 +181615 +716609 +810115 +453657 +2200587 +2757795 +1479285 +1739681 +1334764 +975196 +2665466 +1279767 +1396002 +810150 +2399478 +453663 +1204834 +1376693 +891328 +1578804 +1334754 +1969623 +1128373 +1506486 +1018396 +1979254 +2066040 +726094 +927887 +1345429 +2760368 +891339 +2093661 +2200607 +635918 +1279789 +1578796 +1964167 +2665464 +1506495 +2608143 +736534 +2339207 +1192129 +810143 +2310182 +2608157 +1885381 +2200559 +2608144 +2200572 +1986313 +1204831 +1376690 +673380 +927902 +927922 +551121 +927899 +810197 +1227443 +1979281 +2500821 +1885463 +927924 +453668 +551125 +482480 +2441982 +975222 +975236 +453677 +1807197 +1781798 +697275 +99282 +1031924 +2500822 +1678778 +697272 +2608195 +1767909 +927895 +1256663 +2608208 +1979279 +1885472 +21919 +1964184 +551083 +2809794 +21909 +2757803 +1885464 +2740653 +1069328 +2860782 +349454 +99302 +1578872 +224505 +21917 +1807200 +810179 +1739710 +99259 +551122 +99260 +762374 +2363411 +1069329 +697270 +21901 +551117 +927916 +1192141 +1885461 +1031921 +21898 +1192137 +453666 +2019292 +975260 +1678768 +1227424 +1678769 +1807198 +1358563 +975256 +21911 +21921 +975280 +1885440 +551076 +1227429 +975227 +2809788 +1227435 +2713050 +1080241 +975244 +1578890 +1227441 +927912 +1227422 +1128378 +655013 +2608212 +99263 +2608203 +1227421 +2339215 +1838041 +2276424 +1164307 +1334787 +551112 +1578874 +697287 +2426997 +21915 +482475 +635976 +99281 +1152281 +99258 +1164303 +1767911 +1924894 +726102 +1164308 +697283 +2860778 +1885477 +1383963 +2093682 +2541391 +551119 +99261 +1697258 +975225 +99267 +1069327 +2713057 +975249 +1116152 +1807188 +2860795 +2001669 +551053 +2809801 +2713058 +368366 +2339214 +385653 +1400145 +1140339 +1152289 +1358575 +1979276 +1358573 +1578897 +1578917 +726116 +551141 +975290 +2421952 +2608231 +2517857 +349455 +1401667 +1578958 +1227474 +99312 +1056974 +21936 +1018421 +1578955 +1758531 +21950 +1056972 +1152295 +1130852 +21948 +397682 +2518568 +551171 +927941 +739151 +1924895 +1924901 +181648 +1437453 +927930 +2541402 +453689 +1192167 +1885498 +2665571 +21955 +1116159 +635986 +739145 +891357 +2541404 +2006549 +1807211 +2665568 +1506528 +946861 +1256668 +453712 +1227462 +21957 +1383967 +697306 +551137 +2500839 +1818337 +927945 +254559 +1820860 +1247296 +2421954 +1192172 +1334795 +356027 +21949 +453699 +224518 +224534 +1096655 +810200 +1096628 +1578947 +551166 +927943 +810212 +1056977 +482486 +742557 +1578945 +2200629 +1578964 +1578932 +551161 +1885489 +2399495 +224529 +927934 +2500835 +810215 +2665569 +1578957 +2009087 +2809813 +1080248 +2200634 +551143 +336571 +336574 +2200630 +551130 +1578918 +1096647 +975315 +2304869 +551149 +810199 +1192157 +453710 +810207 +946863 +739146 +301438 +1096632 +453687 +697302 +1678787 +1031943 +551198 +2441990 +2665581 +927991 +1649418 +1192181 +1697285 +99345 +927971 +1437462 +2737273 +2200636 +2665603 +453715 +453713 +2665592 +301445 +2608248 +810268 +2500857 +1579023 +2500850 +1031950 +2608242 +453716 +928005 +2608249 +1838075 +1807215 +1885529 +1885507 +810270 +810269 +551227 +385667 +1739733 +1781809 +2339223 +99361 +2200667 +810294 +810279 +635991 +1579038 +927969 +1130856 +2724314 +1758542 +1031937 +927964 +1579000 +1678794 +1279803 +2608254 +1192174 +1697281 +551197 +2500858 +2006557 +499014 +551216 +2608246 +21969 +1192186 +810271 +1506538 +1116169 +1264651 +810272 +99367 +2200652 +975336 +1885504 +1579041 +1714567 +735848 +2200651 +551191 +975352 +1979294 +99359 +1943416 +1152301 +21987 +1023945 +1838074 +2399533 +2200668 +1964198 +1739744 +1334813 +927996 +810288 +635988 +2665593 +281828 +2665591 +2200641 +21977 +1227492 +1952082 +1760937 +551246 +99354 +551233 +1334815 +975330 +810323 +1256670 +810336 +1924928 +2809820 +1169899 +1756362 +2419315 +1506565 +1247321 +1579053 +326051 +810334 +551267 +1906145 +254610 +726127 +356034 +482511 +1192209 +380733 +281843 +380736 +655028 +1739763 +181706 +2200698 +1684528 +1739759 +2760376 +2441992 +328506 +2692657 +697340 +1979305 +2200705 +1088304 +1579062 +1807223 +2024605 +1924939 +439136 +928019 +551285 +946866 +2682988 +928022 +1227532 +2200690 +321480 +810351 +1714574 +946869 +2200684 +224553 +1247311 +2044095 +417939 +1358612 +482520 +361455 +1031973 +1714577 +1128383 +2608270 +1247314 +1678799 +2665610 +21999 +655027 +1043854 +1227527 +1204855 +431173 +1506551 +361459 +400591 +99388 +68786 +181679 +181661 +891380 +2608272 +975358 +1173338 +453719 +1818339 +2500862 +697324 +99398 +891360 +810341 +1479300 +735850 +181669 +482515 +1096664 +254616 +1256685 +2665611 +1204851 +181704 +810349 +361460 +2399539 +1739768 +716626 +21994 +68789 +1400152 +1227537 +281834 +739155 +1164320 +2757815 +1227538 +1031966 +1169898 +1256696 +181673 +1156680 +1227523 +716627 +1714576 +1080261 +946867 +810337 +2743650 +1043855 +1924937 +321469 +1678797 +1018442 +431179 +254611 +1379401 +2270678 +1739776 +2665605 +2200683 +1684529 +1649433 +2200700 +1756360 +1116183 +494891 +321487 +321489 +494899 +2724320 +2200728 +301463 +946881 +975420 +1579108 +975409 +1943420 +22012 +181717 +22011 +368401 +1018456 +1579074 +181762 +928035 +1943421 +99431 +471450 +471458 +1031985 +99404 +975424 +321492 +2028963 +1128394 +1247328 +2399569 +1367933 +380761 +1649445 +975435 +439147 +2200731 +1227552 +810374 +1739782 +1579075 +1579076 +551296 +22015 +975423 +975384 +1579091 +181713 +99427 +482526 +99403 +1579103 +1943427 +431181 +68815 +349462 +1943419 +321505 +368397 +1767921 +2363419 +181711 +946882 +99412 +392939 +1684531 +439143 +431186 +1018469 +181746 +1756378 +1838093 +2399559 +2024607 +1018464 +99418 +551308 +1227548 +1297274 +891391 +1018463 +975421 +1169900 +1031976 +482527 +1227547 +281851 +1264661 +224575 +1579094 +181756 +296699 +1579102 +1345440 +254622 +68816 +1358618 +1807234 +181773 +1838089 +551306 +1924944 +499021 +1031986 +281861 +928056 +1204865 +1697300 +99443 +1846760 +1964208 +439155 +321519 +1906155 +928052 +1640497 +810428 +2200756 +2278711 +1640501 +321538 +1938591 +1379402 +1579152 +2200769 +1247365 +1018554 +2685749 +321542 +1096681 +1756385 +1192216 +946897 +1192220 +1018506 +181876 +1297278 +1756388 +1345443 +181849 +1176526 +2006567 +636073 +1334831 +1964206 +1018510 +1714581 +928060 +1885561 +1247352 +494909 +181836 +1714584 +810434 +99438 +810404 +891445 +810446 +928064 +1116208 +380774 +1096679 +181853 +1247360 +181800 +321533 +1297275 +551323 +1025154 +245532 +336580 +1018531 +1173351 +891447 +762397 +2028967 +736539 +296708 +946890 +891414 +321525 +810413 +762396 +22037 +1758556 +636056 +1846758 +1096678 +762394 +975450 +975442 +2608287 +281859 +2626549 +1106210 +1640506 +891432 +673396 +471470 +810412 +380777 +1204885 +1678811 +1297277 +551322 +68826 +762395 +417940 +1739804 +946904 +296706 +99437 +946889 +810444 +408238 +245535 +551329 +281876 +439159 +2608283 +1192226 +1130863 +891428 +2200752 +380773 +281858 +1358622 +1579157 +1579112 +503066 +281862 +1401671 +2276425 +891455 +181869 +99449 +891448 +1739801 +181908 +392947 +1640538 +1522601 +1640529 +68859 +1345447 +2683017 +2665620 +1756404 +471476 +1756395 +891509 +975464 +716645 +1488296 +1018614 +281884 +1204913 +1192228 +380789 +1247396 +1488295 +1156692 +2368945 +909046 +2683015 +1906166 +1649455 +946916 +1838103 +245555 +1756391 +1706288 +471480 +68875 +1522604 +2200782 +1247409 +1579168 +1279844 +1297279 +1128417 +1376710 +1247405 +946917 +1376708 +2682993 +754388 +1156700 +361496 +482533 +946908 +181885 +1018610 +1697308 +1018583 +2019309 +1106217 +1176527 +68882 +1018586 +1247380 +2200778 +1758558 +494925 +2441995 +1479329 +2310190 +1640535 +181888 +1297280 +1807243 +254636 +321559 +946911 +68865 +417941 +636078 +439160 +1345448 +361490 +946923 +1697321 +1758566 +1164325 +181930 +181927 +2200786 +2500880 +1264667 +99469 +1080273 +1085683 +1807251 +1256714 +2500879 +1818350 +2665639 +1924987 +636100 +2339239 +22041 +975471 +99470 +1807252 +1579180 +1018629 +1018635 +1169903 +1697318 +2665634 +1256718 +326060 +1579183 +2665642 +1697320 +551367 +1925044 +1130878 +1256741 +1807311 +2665670 +810456 +1925024 +551360 +1925036 +2665682 +1925026 +1164351 +1579230 +2860828 +22051 +2421961 +1807306 +1069351 +2339262 +2608295 +224597 +739170 +1256735 +1579241 +2500963 +254655 +1256757 +2009095 +1579190 +551339 +928074 +2665663 +1807267 +1152320 +1579202 +1758570 +1678814 +2024623 +22054 +1697334 +1807312 +1506591 +1925059 +551350 +1807294 +2500955 +697347 +1069355 +99478 +1758571 +2500912 +2665673 +2419322 +810458 +1227601 +1579200 +928083 +1164356 +1925004 +2500962 +1130875 +2500945 +1885579 +762406 +1256740 +2500910 +2665664 +1925052 +1906180 +1579247 +1885578 +2665702 +1925010 +1256764 +22050 +1164360 +22065 +551362 +254646 +1256747 +1739826 +2541423 +2339277 +1256722 +1164337 +1116216 +2860844 +1256770 +2665727 +810487 +1925068 +1164347 +2093696 +2339273 +482536 +2665732 +551355 +1164363 +1069356 +735857 +1979321 +1579244 +1164346 +254651 +1256726 +2024626 +1579216 +1256752 +2665665 +928107 +1227612 +697371 +1885627 +22079 +975512 +482570 +2871346 +762424 +1192241 +1051164 +2608337 +762421 +1579274 +2665753 +2441999 +810497 +22073 +2871354 +2500997 +2284620 +2844449 +2844454 +1678828 +1767925 +1334841 +551405 +1807341 +2363433 +1437493 +1485890 +810525 +1885606 +1096693 +1838115 +1885617 +2093702 +1140357 +1807331 +1579277 +1096692 +1885596 +2608322 +655036 +2665781 +1056989 +2501060 +199867 +1663968 +697387 +2844445 +2501003 +1925081 +2304916 +2200808 +1140369 +551404 +697373 +1192252 +726148 +2012977 +254664 +2421966 +2608321 +2844455 +975531 +2501053 +1485888 +1678827 +739174 +753023 +810532 +2501059 +482557 +1096694 +2363426 +2500996 +2665774 +2006575 +1579263 +482549 +453756 +1767935 +1279850 +1192257 +975529 +2871340 +753016 +1838124 +1056987 +1579283 +1152335 +1818352 +1781832 +1767928 +1334843 +2665763 +453746 +1767927 +1579266 +2871348 +1506604 +551402 +2665756 +810529 +1192275 +1579288 +1192262 +1227644 +1678829 +22078 +1579292 +551374 +2871327 +2501067 +1885648 +2665770 +1925076 +762420 +1820863 +1506617 +2665755 +697386 +2442009 +2871363 +1925097 +453739 +2304920 +453761 +482561 +1807340 +975537 +1192250 +1579290 +1485887 +810508 +2442003 +2501029 +697374 +1096701 +2093705 +1227610 +975527 +1156703 +2304915 +905171 +1781837 +551412 +2363430 +2871335 +1579299 +2501058 +810526 +1885605 +2304925 +726149 +1056990 +2200790 +1678824 +439167 +1069357 +2500975 +2501023 +2304918 +22075 +99480 +697356 +1192245 +636137 +321573 +928111 +1018656 +2399615 +726152 +1579314 +636172 +1579323 +1649464 +636147 +636116 +636117 +891527 +482574 +1406336 +224611 +673413 +321568 +697405 +380807 +636114 +636112 +2363436 +636261 +1807356 +2093713 +224623 +1043910 +1376720 +2665798 +245563 +636222 +1018658 +636122 +2200834 +636182 +636270 +1979331 +754390 +1018650 +181993 +182003 +2831078 +1378662 +636136 +762429 +321581 +891518 +636208 +1367944 +975540 +1479345 +636124 +551417 +810548 +181941 +211354 +361500 +1116238 +1018657 +2415060 +551436 +1297287 +1479342 +2093719 +636267 +636252 +636154 +636211 +673415 +673430 +471489 +1506627 +336585 +551437 +673421 +2399616 +1506625 +551430 +726156 +946935 +2665792 +716664 +673405 +1376714 +68903 +361499 +301481 +2665793 +810547 +99493 +245560 +697393 +1739854 +1437504 +99503 +1018640 +716656 +1334857 +453767 +810533 +739181 +636132 +181948 +736542 +1406335 +1106222 +1192302 +1192303 +1032013 +810645 +551457 +453783 +1358638 +551453 +224652 +453788 +182035 +1885699 +22098 +551445 +1964229 +2399652 +22091 +1938610 +1906188 +1579380 +891555 +551508 +321610 +380817 +1096717 +1739881 +762434 +1758579 +928155 +1279864 +810570 +1372611 +2871365 +2368947 +1402767 +1204924 +551507 +224631 +810582 +697412 +1964236 +2501099 +1080293 +1807365 +2399636 +245588 +697421 +1885672 +551482 +1579372 +2200837 +1018671 +975590 +928163 +655065 +1256778 +2665831 +1128453 +2200942 +726177 +810630 +1334895 +2200924 +697439 +380818 +301503 +1176529 +928166 +1140376 +1678841 +810595 +551473 +1925102 +99560 +1069371 +2442019 +810634 +1116251 +2304943 +1227697 +1116254 +321599 +1885667 +2501097 +1069370 +2200879 +482583 +99540 +810621 +1096723 +1885671 +2019331 +2200863 +1964228 +928170 +726174 +655057 +1925115 +697441 +2200903 +1579376 +2665834 +928181 +655044 +928160 +1579351 +99524 +733614 +1106227 +182054 +810564 +1192311 +551506 +810603 +1023958 +975577 +1227667 +431198 +2200949 +2701718 +2399653 +1684548 +1297291 +2399639 +1227700 +2363445 +726185 +1925108 +1192319 +673444 +1018680 +2442024 +928141 +810622 +1192312 +1885720 +697432 +2200864 +2399630 +99541 +2200882 +281916 +1279878 +397695 +810586 +68930 +2399634 +99538 +99506 +1334899 +1885730 +1018676 +928178 +2399629 +697417 +891556 +697430 +1116253 +2200872 +551523 +697411 +99537 +99590 +2200851 +1060774 +2304937 +1906185 +2200957 +2608384 +1396023 +1579365 +453794 +810624 +2608396 +301506 +810620 +810652 +636290 +1406344 +1402768 +1885670 +909049 +1358640 +810648 +2399644 +471496 +2310195 +1358642 +975579 +1739891 +1279869 +1096724 +726180 +1781850 +1227684 +2363440 +905177 +182055 +1018674 +2608377 +1334872 +2200847 +636280 +1906183 +1697359 +1579378 +1785448 +1192308 +928175 +1885712 +1758581 +1739868 +810555 +636273 +697424 +2737282 +810641 +245598 +1697362 +1807361 +1334884 +975592 +1378663 +453795 +2871505 +2415087 +2871546 +716699 +1640595 +1128482 +1279889 +673451 +2871601 +1506661 +1906197 +2871380 +1964249 +1938617 +182084 +1247448 +1128493 +2871439 +1043918 +1043928 +1818358 +726191 +341756 +1846773 +2871461 +1479368 +636385 +1938612 +2310209 +2200973 +1367954 +2608400 +1785455 +1164379 +1247472 +928183 +2066057 +296727 +891591 +2066060 +1969632 +182113 +2871478 +1106258 +1018727 +2871423 +1018729 +810660 +2809908 +1938615 +2760379 +1885746 +2683050 +636362 +1128457 +810655 +1018681 +2871614 +1204948 +1964248 +1906207 +2871580 +1756423 +494937 +2871618 +891571 +1018696 +68955 +224679 +2871511 +2871485 +349477 +1479357 +2871695 +2871637 +636319 +417946 +2399662 +2310210 +281918 +2200982 +1367953 +2339315 +2339312 +471523 +2044108 +1756450 +321640 +1018691 +2871630 +2368951 +182079 +2871456 +1756429 +2415101 +2028974 +2871640 +503102 +417947 +2871472 +1885757 +636304 +321642 +2608423 +2044107 +2270727 +636360 +1756451 +1128495 +2871646 +245636 +1018720 +1986333 +1756454 +946974 +636375 +1156714 +1640592 +1297295 +1227714 +2683051 +321632 +471524 +636384 +1721098 +2013644 +2415085 +380833 +891604 +733626 +1128463 +2368950 +716716 +321643 +182096 +2871494 +1506659 +245649 +1106251 +1969635 +1522636 +2871599 +909050 +2871575 +551534 +2339316 +1995446 +1106256 +1128492 +1949156 +1522633 +946955 +1204944 +1721094 +2665853 +2871374 +1506660 +636368 +946981 +1085695 +1640563 +1938621 +1018687 +2626562 +1128486 +891623 +2871496 +1479356 +1579388 +1106255 +1807369 +494936 +2871533 +1684557 +2871544 +1522648 +2368952 +1018725 +182091 +2860847 +1345479 +2871634 +328512 +636308 +1885741 +2871396 +2860857 +2006590 +2871569 +2024639 +1060776 +1986322 +1986331 +2012980 +2871704 +2860852 +636364 +636324 +636371 +2665847 +1885745 +946979 +1640574 +1758584 +211375 +1739914 +1663982 +1256790 +453850 +1739899 +2501166 +1227779 +1807418 +697457 +1227773 +636407 +1345483 +2871742 +2339321 +2701725 +891625 +2201018 +431208 +2626578 +1192363 +1885814 +439180 +1376731 +1392491 +453833 +1279898 +1069384 +1133899 +2683060 +1173369 +1227757 +1256797 +453824 +1227723 +1579414 +810674 +2339330 +2665883 +2501196 +199879 +1781857 +1649480 +1227724 +1256792 +1128498 +697459 +1758585 +397698 +182117 +2442032 +1152366 +1697375 +1785461 +2501181 +2070684 +1227789 +2757833 +1256798 +1384011 +199881 +2541435 +636405 +1069382 +99601 +494944 +697463 +1579426 +1807378 +503117 +99603 +928209 +99599 +1069376 +2665912 +697462 +1227747 +1579415 +2871737 +471528 +2665885 +2608454 +2201001 +2442044 +2501184 +2019345 +482597 +2501189 +1256801 +2665902 +754395 +551547 +1396030 +1663980 +1807421 +2201007 +453851 +2871726 +810664 +946990 +2399669 +1579445 +1781876 +1192328 +1227740 +1906227 +2419327 +1739905 +1579477 +1069380 +551571 +810672 +975610 +1479371 +2009101 +1018742 +2608470 +747401 +471529 +2871735 +182129 +499059 +471530 +739188 +2201004 +482602 +1807435 +1579449 +482608 +1654543 +380848 +22114 +2200988 +1358657 +1156717 +2339328 +2201006 +2339336 +1204964 +2019349 +1925160 +1579455 +975621 +281934 +2399674 +482599 +224708 +1739912 +928214 +636399 +254693 +1522651 +636402 +1807399 +345018 +1838161 +482604 +1885801 +1678871 +2541433 +1964253 +2844484 +2339325 +946992 +2399670 +1739913 +2399675 +2501152 +199882 +368432 +810679 +1152396 +1579429 +68988 +1739901 +1437569 +1358667 +1767950 +1885862 +1334950 +1739930 +2757839 +1739949 +2757838 +2201049 +1579536 +1885874 +1739941 +810692 +2501266 +1227825 +1979359 +2666016 +453869 +1256827 +1334946 +975642 +2501260 +1739936 +1885903 +2339360 +928234 +1579485 +1838181 +1579558 +1925212 +1885907 +2666000 +1152403 +2501211 +1227796 +2399691 +1807441 +1781881 +1164420 +1885857 +1678881 +1807462 +1925245 +2024647 +2304976 +2724338 +2501259 +2399679 +2608495 +2399697 +1116292 +2501217 +2399683 +2501209 +1925190 +2399688 +2501245 +2665985 +2501203 +1838176 +2093721 +2732495 +2019356 +975643 +2501272 +551623 +1256848 +1885861 +2399686 +1678879 +975654 +2666015 +1925242 +1334952 +1739945 +1334945 +2201060 +1279903 +1579504 +2844485 +1579530 +1227830 +655081 +1885889 +975626 +2339361 +1807463 +1227822 +1885891 +810693 +810698 +1885911 +2339355 +1678876 +2201048 +2339362 +1820869 +2501240 +453879 +739193 +1579486 +1334921 +1579514 +2399695 +1506686 +810717 +1925202 +1807461 +1334951 +655078 +1192370 +1069402 +975651 +1227823 +1807444 +2304972 +1116302 +99644 +453888 +1807467 +1807491 +1762739 +1579481 +1925192 +1885878 +1069394 +1227815 +1925252 +1885885 +22135 +1116289 +1227813 +810707 +1807468 +1925229 +1579508 +551625 +2501215 +1506675 +99641 +1885899 +551580 +1384015 +2665921 +2740655 +453874 +1579529 +2201033 +99637 +551610 +1256844 +1925254 +551612 +1678884 +1925175 +1925249 +1334937 +739196 +1925197 +1069393 +928232 +2270803 +1885927 +2683064 +1169924 +1479434 +1522665 +1264709 +1088325 +471556 +2201160 +636439 +2310230 +1096778 +1018803 +1479392 +1579632 +1979361 +2608524 +2339469 +1885949 +1264705 +1925338 +2666222 +69032 +2608515 +2304992 +1938648 +770901 +2399747 +2501355 +2270801 +1684587 +1264714 +2666097 +2339472 +1204981 +2541449 +2501411 +1697422 +2501373 +2339455 +891683 +2608566 +1579610 +2809924 +2757872 +1785463 +2666245 +1018795 +2666151 +716736 +2270814 +716726 +1838187 +69046 +2683089 +1739969 +69040 +1821932 +716762 +1169917 +182178 +2666192 +1437591 +1906243 +1479389 +636424 +2737293 +2608550 +1479423 +697524 +1579617 +2201096 +321661 +2608558 +673458 +1760965 +182170 +2608544 +296731 +2270826 +2201081 +2013650 +1739967 +1885963 +1080316 +1640617 +1885936 +1018745 +1579594 +2666116 +975668 +2419334 +1807545 +636490 +1739953 +1758595 +2399720 +1264704 +1264696 +1437581 +1925264 +1128503 +2501323 +636468 +1479405 +182144 +2608520 +1247489 +1885967 +1925358 +99655 +1714625 +2541445 +1479393 +1906248 +1818376 +380859 +1133901 +551631 +891667 +281942 +636426 +2666109 +1721104 +2270807 +1522676 +182175 +2501309 +1116334 +1979364 +2732498 +2608563 +1640619 +69028 +1279909 +1018790 +1649498 +1345497 +182131 +733628 +1256879 +2541459 +1264712 +1479403 +2363462 +1756474 +2666050 +1522654 +2501370 +1756475 +2608532 +2339488 +2201084 +928255 +2683101 +2501361 +551654 +2666240 +2728542 +2019359 +1807540 +1522661 +2666241 +1818368 +891676 +1739960 +326067 +2339409 +2666233 +1925352 +1906237 +716755 +1579578 +1256886 +1838193 +810732 +1640620 +1256888 +2666120 +2201108 +2608549 +2809925 +2757846 +471549 +1925282 +2666087 +1938650 +1128518 +1579569 +891696 +770911 +1579659 +1479397 +1479399 +1479395 +245667 +2339423 +733629 +1820872 +2442054 +1018819 +2270824 +2732510 +1018824 +1579655 +2270792 +2608531 +636497 +2541443 +2201127 +2608519 +2666043 +99652 +2270819 +636420 +1925334 +1025160 +2713088 +2304997 +2201109 +2683107 +636443 +1781895 +2666054 +1820874 +1714622 +1649496 +368442 +1938636 +551649 +2093752 +2304994 +716748 +1807548 +1018783 +2284630 +1807513 +1684586 +1838198 +1654545 +2666060 +2339491 +1018777 +1085702 +2608513 +2415121 +1640604 +947004 +636465 +2270832 +2093726 +1821937 +2201165 +636442 +1885984 +2728557 +1479428 +2339419 +1640611 +380857 +891666 +2501413 +1018746 +1697430 +2399723 +1156722 +2201124 +182142 +2501346 +2399705 +1164463 +2339407 +2760401 +2339492 +1938633 +1256874 +1256875 +2666057 +2666110 +1706305 +1697414 +2201182 +1025162 +69036 +1164455 +1807538 +2860866 +2270784 +2683082 +2501296 +1579583 +1807528 +1128508 +2666124 +1345499 +182146 +2310233 +1758597 +2666193 +1938629 +2201155 +1579585 +1649497 +2728546 +2093730 +182163 +2732497 +636498 +2066079 +2339422 +891699 +891654 +2304978 +2501300 +1739954 +2757853 +1043941 +1756471 +551648 +733631 +2608555 +2809934 +2419333 +2415111 +1506702 +891646 +636456 +69035 +1506698 +400602 +2724344 +2415110 +636446 +2201153 +1885958 +1885950 +1678899 +2760394 +891657 +810739 +2093748 +2666144 +2608502 +1437588 +1256920 +636410 +1739972 +2666075 +2270788 +1204971 +2501397 +1684581 +2666114 +2201072 +2541446 +1885937 +1995450 +2757858 +1640613 +2399703 +2666178 +1173391 +1437666 +1925372 +22186 +1886145 +1758614 +2501419 +2501507 +1886121 +1506740 +1714640 +2666443 +1256953 +2399769 +2201413 +2666296 +2666426 +810792 +2666490 +22196 +2501485 +1820887 +1740095 +2608725 +2666338 +431225 +1057015 +1279916 +1437646 +99671 +1697519 +1838221 +2201408 +2608616 +368446 +905199 +2666291 +2666483 +1080320 +1740031 +2608615 +1740014 +2201414 +2501425 +1697497 +1080330 +2608652 +1256952 +1579683 +1057017 +1925381 +551684 +1334967 +1886108 +1023973 +1925419 +22178 +810868 +1807574 +1838234 +2399760 +1925427 +2501475 +1437606 +2201290 +1227906 +2201287 +1256957 +2541484 +99689 +1086821 +2201330 +2517888 +1838228 +810785 +1758622 +2666367 +99713 +2501468 +1838215 +22157 +810810 +2666252 +1579720 +2666428 +1886138 +2201403 +1506728 +2201263 +975730 +199898 +2666302 +697551 +1886058 +2666328 +1096818 +1925432 +1714657 +2608686 +22181 +1392494 +1579722 +1173378 +2201239 +2608628 +2541465 +1133907 +1740060 +22174 +2608630 +286574 +1437620 +762469 +810755 +1649505 +1384021 +1925376 +2608637 +1697444 +2608573 +2201262 +810827 +1697484 +1164471 +1579790 +1579682 +1838209 +928284 +2666434 +1485915 +1925439 +22198 +1886072 +2666437 +1925424 +1697528 +1925442 +975684 +1678917 +1579796 +1886092 +99669 +1579690 +2305008 +1697477 +2608613 +2608603 +1740058 +2501516 +2666442 +2666314 +1579789 +431224 +2201423 +99700 +1886118 +810758 +2541467 +810838 +2501493 +1256942 +1678906 +1886041 +2201340 +1714667 +1807565 +975712 +810879 +2201421 +1678914 +2666485 +1925370 +810756 +1886047 +1886130 +2201333 +2608593 +2363477 +905208 +551671 +199892 +1096821 +810820 +1227855 +224728 +810821 +2608676 +1925426 +1740003 +286567 +1032064 +1227852 +2608714 +2501434 +1579775 +2501440 +1697460 +1925390 +1886056 +2666420 +1133904 +22167 +1080321 +1227879 +1925431 +1886161 +1579721 +99699 +2666389 +22158 +1886004 +1057019 +2666449 +2284633 +1758621 +2201311 +1886127 +975732 +1964263 +99708 +1740019 +1886156 +2024662 +2666282 +2666329 +1579803 +1334965 +2517885 +1506756 +1485906 +1886101 +1740016 +551657 +810840 +2201291 +1579827 +1437613 +1758617 +1649503 +2070691 +1579717 +1256937 +1579818 +2201225 +1579675 +2501503 +2501451 +1192436 +1173387 +810762 +1886063 +1506770 +1227891 +2501473 +2666413 +1886136 +551702 +1886045 +1579816 +1437595 +1740059 +2501479 +1096793 +1740035 +2421976 +1437603 +1886061 +1807583 +1192444 +1506729 +697559 +1925438 +2399766 +1925447 +22171 +2093761 +1579680 +905194 +199901 +1579684 +301532 +2666479 +2608707 +2501472 +431217 +22149 +2201387 +1740037 +2019365 +1925391 +2541511 +22190 +2421981 +2666348 +1032060 +2363483 +2666422 +810791 +1227886 +1886153 +1886054 +2608728 +22207 +1925434 +810752 +2201247 +1838227 +2024663 +551688 +1506764 +2608675 +1057014 +22212 +1925436 +697549 +286573 +2608741 +810958 +2724391 +1964287 +1740111 +2541563 +1740105 +1697554 +551711 +2701742 +1979388 +1579880 +2608842 +1714709 +2608869 +2339519 +2666535 +1838277 +1925460 +810937 +551723 +1714694 +2009114 +1579987 +1740135 +1714710 +1714688 +1335032 +2501571 +1335012 +2201594 +2305019 +2501577 +482652 +1579942 +1964273 +1437689 +1485925 +810993 +2608789 +453941 +2666560 +1096829 +1279932 +2024665 +2685762 +2442086 +453980 +1579968 +1714691 +697570 +2339571 +99775 +1579920 +2339547 +636511 +1279947 +1740124 +301547 +1925462 +1714700 +1227913 +1979389 +1192470 +1886213 +975759 +2009974 +2339552 +2666539 +1227917 +482648 +2339570 +2419347 +2201607 +2541592 +1697565 +1057020 +551789 +1697540 +1304782 +975768 +2501544 +2608761 +2608773 +2666577 +1335019 +810989 +471560 +2201623 +1991192 +551742 +2501588 +810974 +1437729 +1697558 +2201658 +975756 +1579852 +1886174 +2701751 +551754 +697565 +975782 +2666613 +2201648 +2666609 +1925459 +1279938 +1714703 +2541564 +551782 +928305 +2608835 +2501589 +1579977 +2541581 +2399807 +1925475 +928302 +2608787 +1838264 +2419346 +22233 +975806 +2399856 +2608892 +2305044 +2093801 +2093785 +551763 +2683110 +636512 +1579941 +2019367 +2201532 +2608900 +1579975 +1335028 +1227912 +2666612 +2666499 +975784 +2201512 +1697530 +2541551 +1506811 +2608852 +1964294 +2501528 +1579946 +1886201 +2006613 +1506799 +2748755 +2305039 +1579837 +324232 +1697570 +1838258 +2354538 +810940 +99763 +254713 +2666559 +1485924 +1335046 +1032077 +2305033 +2093794 +1579897 +551772 +1579889 +810961 +2666541 +2093804 +1580002 +2608792 +1227926 +1886198 +1579840 +2666580 +2608850 +385696 +1384022 +2713104 +810935 +2666563 +1943477 +2608864 +2339495 +551722 +453947 +2201525 +2541512 +975779 +2608891 +2666621 +2093822 +2201585 +2541545 +2608810 +551785 +1838271 +453922 +2608774 +2701747 +2501614 +2608829 +2737298 +1437715 +2685772 +1579885 +2608834 +811005 +1579961 +2608817 +1807588 +891703 +551770 +1964289 +697585 +551732 +2608805 +1886185 +2093807 +2201481 +2666665 +1697529 +1116365 +1678934 +2201518 +1714714 +1925476 +392962 +810994 +1506813 +2093786 +551786 +2201513 +2305028 +2201508 +810947 +1714689 +471561 +281952 +1714708 +2201471 +811003 +2399825 +2685764 +296733 +1297305 +2501540 +368466 +2339531 +2201499 +254706 +1886239 +1964270 +1714711 +1820891 +2201653 +1227938 +2427028 +2339567 +2339557 +1740113 +2201498 +1818377 +2201601 +2608920 +655088 +975757 +2201500 +2541591 +2608820 +551713 +2724360 +453940 +1979386 +1116368 +1096832 +2501569 +2541572 +1740102 +1925478 +1437685 +1714715 +2608753 +2201539 +1697585 +810954 +2399885 +1279966 +1943506 +2363494 +1257024 +254717 +1192492 +199934 +811038 +655109 +1580101 +2666717 +1032078 +1886306 +1580122 +928316 +2501626 +1580061 +905231 +1886315 +69052 +2201685 +1886314 +1506852 +22237 +1506854 +1740157 +2666737 +1192496 +905238 +1506850 +2305048 +1279970 +2724394 +1506861 +2608977 +1925491 +482659 +1257007 +99781 +1838304 +1080377 +2757887 +1485927 +2609012 +811080 +1678943 +811036 +2399899 +1580092 +551815 +928326 +1943501 +2608960 +2666678 +1886299 +1080338 +1335072 +1096845 +301557 +1164486 +224736 +2666723 +655111 +811045 +1580143 +2608949 +1964318 +1437775 +99823 +1580026 +811067 +2748763 +2666681 +1485930 +1740149 +2666690 +1335065 +2666709 +1506847 +975813 +2666679 +1580072 +2201703 +975815 +1257004 +1580090 +1227959 +1740158 +2666695 +99812 +2305050 +99776 +1437773 +1580045 +1485929 +811094 +1886253 +1740174 +22238 +1227973 +2399878 +1580075 +99800 +551797 +1580146 +1925480 +1506867 +1886295 +551800 +1227953 +1304794 +2501662 +655113 +1506840 +2427032 +811059 +1979403 +2201713 +2757889 +1886260 +1437763 +1781922 +1096842 +1580110 +1886287 +2442095 +1437772 +2608969 +2201723 +2501656 +2541610 +1838309 +2666735 +301563 +1781921 +2666699 +1437758 +1580044 +975820 +1257001 +368478 +99811 +928328 +1506834 +1080350 +811105 +1257005 +1714733 +673463 +1080355 +2501632 +1580159 +1580081 +1023982 +2201666 +1740154 +1257027 +22239 +99805 +2732520 +1264728 +2201746 +368489 +2501671 +69057 +482662 +1192498 +1925507 +1580227 +2201761 +1925508 +99833 +1192508 +1807618 +182255 +1697626 +975833 +1740225 +1925520 +296742 +1116410 +1228001 +1169935 +2609046 +211388 +551839 +254723 +301575 +1580236 +2609035 +1018852 +2809946 +975867 +2501698 +975863 +2683113 +2093840 +199946 +69076 +1192506 +655115 +2609022 +1075890 +1228021 +182260 +182226 +1152419 +1116414 +380881 +224744 +1807626 +69068 +2666780 +1886341 +2609063 +1707328 +69092 +1580247 +1227985 +1018853 +1257043 +224748 +69058 +1152421 +1580182 +1506877 +1580199 +1580178 +380868 +1506872 +182251 +1169934 +1116416 +2201762 +1257041 +1080385 +1257053 +1169937 +1257042 +392963 +321675 +636517 +1740199 +1080404 +1247502 +551855 +697607 +286600 +636514 +431226 +1580224 +2666787 +471579 +69071 +697613 +1116419 +905245 +2024670 +2844492 +2363499 +2501695 +321674 +975864 +811130 +494956 +2201742 +1247503 +1580202 +1886336 +1069441 +2666794 +1402789 +1227982 +1228031 +1116418 +245678 +1128546 +99839 +1886347 +69053 +1228000 +1116401 +1075892 +281956 +1756486 +1818380 +716768 +1781929 +22253 +1781931 +2541613 +321673 +2683114 +975836 +1116411 +1106293 +69099 +1580209 +697623 +928343 +2501714 +1678955 +1247495 +2201747 +69102 +1228007 +2501679 +1085709 +1580171 +1096862 +2201759 +385709 +453991 +199944 +1886352 +1164491 +99851 +2609066 +471585 +182247 +1257070 +368490 +1697627 +975875 +1228029 +1925510 +286598 +1116400 +2201763 +1069445 +182223 +1925582 +1925581 +2515831 +1925546 +2501722 +1925538 +928370 +811178 +296747 +1838334 +1838356 +1506901 +2685777 +551873 +1740237 +1580276 +2666838 +1580252 +397716 +2363512 +2501738 +2201831 +2541637 +1964328 +2609078 +1205001 +2284685 +301605 +1580320 +2609190 +182305 +1580326 +2201867 +1506895 +1925540 +2609067 +2201890 +321688 +2339605 +1886394 +1358704 +1838371 +182334 +2201860 +2609087 +2201905 +1838363 +2666847 +2201885 +182282 +2609153 +182298 +2701773 +2541627 +1818387 +99878 +1740279 +1335101 +2609147 +1807633 +2399920 +1714747 +1257093 +891733 +69115 +928376 +328524 +2012984 +975913 +1767966 +928374 +1925580 +99856 +1506892 +2609118 +1758635 +2685783 +947025 +1506897 +1437799 +1437797 +1665687 +2609193 +2201768 +551868 +2609086 +224760 +1925569 +1838346 +1485948 +928354 +2609099 +99867 +328527 +2666826 +1758637 +1580258 +2609196 +1807653 +1228053 +1116437 +1678975 +2009124 +1820895 +1116448 +1018877 +2609184 +928368 +1697641 +1116436 +975893 +1580302 +2609071 +1697645 +891728 +2284677 +1580331 +1169941 +1740265 +1714754 +1173399 +1886419 +2666844 +2609116 +697636 +439203 +811144 +636542 +1228050 +2666861 +947028 +1247518 +636538 +2609173 +2683118 +1205006 +716771 +1964327 +811169 +1697639 +2399916 +2201785 +811149 +636547 +69141 +975949 +1925559 +1192517 +1925586 +356110 +2009123 +2609155 +2609122 +2044134 +1580351 +928347 +2093848 +182264 +2609143 +1069452 +199951 +2541645 +182302 +811156 +2724404 +1678968 +2666854 +431235 +2609073 +69118 +1372616 +1335104 +1228048 +1925556 +726216 +99868 +69109 +471607 +224751 +551878 +735867 +1925572 +224757 +182285 +762512 +182270 +975948 +2666824 +2201832 +1925566 +2609149 +182328 +1886436 +99865 +1096865 +891735 +2201855 +1979411 +2501752 +975881 +182268 +2427034 +356089 +1925547 +2201852 +2399929 +2501750 +2201805 +182336 +99869 +1649523 +928348 +1116430 +1838339 +2201818 +1807649 +2666807 +182297 +1116440 +975889 +471608 +439201 +2609098 +2609101 +321692 +1133915 +811157 +2006629 +1664018 +2339618 +1740228 +928375 +1228057 +2201779 +2609194 +1838344 +1925577 +69134 +1886423 +2201877 +2609083 +811152 +811151 +361517 +2093851 +1437787 +1257085 +2339621 +254734 +182301 +2201788 +2284674 +2831096 +2201794 +1886393 +1228044 +301594 +2609170 +2201915 +2683133 +2810456 +2810815 +2810294 +2810391 +2810011 +2810184 +2810180 +2810693 +2810674 +1169966 +1925607 +2810599 +1938691 +2810651 +2860881 +2810234 +182391 +2810793 +2810585 +2810000 +2666873 +1264739 +1818399 +182386 +2810159 +2810063 +2666890 +2809953 +2810342 +2810252 +1925621 +2810856 +2810343 +2810497 +2810834 +1938678 +2810287 +2810340 +1257104 +2810324 +1807659 +2810454 +2666883 +2810315 +1697662 +1085740 +2810637 +2810711 +2810511 +2810116 +2809972 +2860910 +281985 +2810052 +1018894 +1938666 +2810702 +1697673 +1264747 +2683143 +1938661 +2810464 +2810574 +1169951 +2810085 +182341 +1169958 +1169952 +2860892 +2201929 +2809955 +2810506 +2501765 +2810784 +2810272 +2810603 +2810037 +2860903 +2810302 +2810270 +281982 +2810060 +1085728 +2683147 +1018927 +2809997 +2810353 +2201925 +2810653 +2810061 +2810285 +2810660 +2666876 +1807657 +2810158 +2810042 +1697693 +281970 +2810539 +1925598 +2810688 +2810147 +2860898 +1697668 +2666895 +2810328 +2810751 +2810826 +1938677 +2810106 +2810765 +2810198 +1018907 +2666888 +1018919 +1938683 +2666877 +1257124 +2810664 +1128554 +2810379 +1938687 +1758638 +2810035 +2810043 +1818391 +2810047 +1085735 +2810561 +254737 +2810760 +296773 +482668 +2860884 +2810645 +1018914 +1807667 +2810521 +2810747 +1257130 +2810435 +1925631 +2810376 +2810821 +1018931 +2810672 +2810767 +349485 +2810518 +2810154 +2810598 +2810283 +1938671 +1257127 +99903 +2501785 +2305082 +1886511 +1886529 +2201992 +2609216 +1580391 +1820913 +1820911 +1886538 +2044138 +1152426 +551888 +1580380 +1807706 +1192559 +975977 +1740299 +928385 +482675 +1697710 +1820912 +22293 +1714761 +2201935 +1228080 +905256 +1228071 +975968 +1485954 +551884 +2666945 +2201934 +1152427 +2339636 +762526 +1925670 +1192548 +1697716 +1580387 +2541661 +2305087 +1886528 +324239 +1886545 +301606 +1057040 +1762746 +905255 +22300 +1152428 +2421986 +1886533 +22295 +1781949 +482672 +1820908 +975996 +1437833 +1096894 +2501784 +1838397 +2201954 +811203 +2339651 +22297 +811191 +1740290 +2666946 +2339637 +1335127 +1838391 +928397 +2339649 +2001709 +2501770 +1392497 +739207 +2363515 +1886479 +1506915 +2305090 +762518 +1335124 +2339645 +2201940 +1925692 +2666929 +1820901 +1116453 +1807688 +2201962 +1057038 +2339652 +905259 +482671 +1714772 +2201964 +2201938 +928382 +1032110 +1437815 +2399948 +2609215 +551899 +2501786 +1886539 +1886508 +1807675 +1714766 +2201943 +368523 +2339641 +22291 +1820899 +1580492 +2666978 +726219 +1080436 +454055 +1506941 +2202043 +1228151 +1228116 +1580398 +1152429 +1116472 +2202049 +551902 +397725 +1173408 +735870 +2666992 +1740315 +1697752 +1506939 +1838416 +482703 +1580473 +1580413 +99922 +2202050 +1886598 +254757 +431250 +2609253 +2339696 +750121 +2501822 +2339659 +2501810 +2093889 +1116477 +301611 +1437842 +224779 +2609242 +22321 +1838407 +199968 +762551 +1228159 +1580458 +2399962 +1767975 +811290 +1164518 +2683153 +431246 +2202076 +1080458 +1838423 +254778 +2339667 +2667006 +1358726 +1886595 +2666975 +254777 +976036 +99914 +1279992 +1192585 +1096901 +99910 +2399971 +254773 +1080455 +1580497 +2501843 +2399970 +928430 +1057046 +22308 +1506932 +2666986 +2501821 +1886599 +1697759 +1807724 +1886590 +1580481 +697679 +454047 +1925714 +199978 +2442133 +1580474 +551924 +762539 +1228152 +1280002 +1228135 +482693 +2609227 +1279995 +1506922 +1358731 +762547 +2609248 +199977 +301620 +1886606 +551923 +1133923 +199976 +1886574 +1781961 +1580419 +2202055 +1886592 +1781954 +1580405 +2093893 +1257147 +224769 +2009127 +199967 +1192587 +811280 +1886585 +199973 +1838415 +1886559 +1228129 +1152437 +2667007 +1057047 +482686 +2609245 +2501813 +254780 +1925758 +482696 +2202039 +1925765 +2339706 +397723 +1133929 +1838427 +1096909 +2093879 +2093902 +697673 +99921 +1697765 +1697737 +2339708 +482692 +254749 +2501842 +301630 +1580407 +1886600 +1228165 +1437857 +1437850 +551928 +2501845 +2666967 +1228112 +286616 +254756 +1886568 +551909 +1886610 +2666997 +1807714 +811274 +2609224 +1580430 +1580516 +69197 +2501858 +22350 +2705727 +2541688 +1665688 +431257 +947041 +735874 +1228203 +1192613 +655120 +2427042 +1228192 +1043972 +1886664 +2399972 +1906275 +2202117 +811316 +1925807 +2427045 +1886631 +199981 +2105198 +380891 +349486 +1096913 +928447 +2501853 +811314 +22351 +1580542 +1152444 +2105197 +22355 +2093931 +1740367 +1807794 +636565 +385739 +976065 +254792 +1580563 +1838477 +2427048 +182402 +1228206 +1886692 +2093905 +182408 +1886677 +2541691 +69181 +928461 +2609326 +1358741 +1032139 +551943 +1925799 +947046 +69175 +1886690 +2517903 +301631 +1205011 +1807783 +1580551 +321698 +636552 +392976 +1996845 +1437881 +1679010 +2501855 +1838463 +2354543 +1228202 +1684599 +1838489 +2093908 +2609289 +1152442 +211402 +1886691 +1247524 +1740360 +1740353 +282007 +69191 +2667012 +1080465 +1580533 +296783 +1580521 +281998 +1228233 +282004 +2609302 +2541683 +1057051 +1192616 +636566 +976041 +254781 +2093922 +2609295 +551942 +2667014 +1580526 +1938696 +1140409 +928476 +1228235 +1740337 +1838455 +1335137 +1192619 +2399977 +1437874 +182398 +928468 +551947 +551958 +947040 +397737 +1925802 +1925778 +947035 +1580505 +1925775 +1257206 +1358738 +636555 +928454 +1173417 +1925803 +1096923 +482718 +1679017 +1164524 +1580503 +1192617 +2667011 +2609305 +2729316 +1128556 +2093920 +1228217 +1684602 +1838458 +1838516 +636593 +2501893 +1781990 +2501894 +2006641 +1740383 +368556 +1205014 +1925821 +1838508 +2724415 +482726 +1684606 +1679032 +2202203 +2001715 +1506958 +1740377 +1714793 +551993 +1818414 +2202145 +254800 +2093946 +1257228 +1640688 +1580614 +2202137 +1740376 +976098 +1192632 +345024 +1396053 +551982 +891762 +245709 +1886731 +1075910 +1838513 +1228243 +1925823 +636606 +1886728 +2667030 +928509 +1335164 +2202205 +1018973 +811375 +976093 +471613 +1714796 +891761 +2501898 +1019001 +2001713 +2515838 +1580599 +1522685 +2202192 +69219 +2202197 +2748767 +811371 +2202188 +1192631 +905277 +976095 +716783 +811340 +976076 +1396055 +716778 +551981 +1640693 +1228263 +224786 +947054 +891787 +976090 +2202173 +909065 +1838517 +811350 +1096928 +716786 +2501887 +928492 +1838496 +1697807 +2541716 +2202143 +1506953 +2609338 +392984 +2501873 +1192633 +356131 +2202151 +1886732 +2701786 +2501908 +1964347 +211406 +928496 +182446 +2667050 +811351 +1664039 +199986 +928512 +2202178 +811331 +2093943 +182464 +2667049 +385756 +2517905 +891785 +1838502 +2501901 +380901 +1280010 +1228251 +1580608 +811367 +211407 +1781981 +1019002 +1116497 +1506955 +2202126 +697702 +1264799 +891779 +1679021 +2202160 +976106 +392990 +811349 +891790 +811391 +368558 +811403 +1019005 +2501899 +1886740 +673475 +2501885 +2501863 +551966 +1192640 +1807805 +392993 +1069497 +2202176 +1297314 +380909 +494964 +397741 +811358 +1886749 +2202219 +1075914 +2667079 +1075920 +245725 +1075929 +1205020 +400604 +2515849 +1019029 +1019031 +2501954 +740140 +636641 +1128584 +1192665 +1767995 +1522689 +1506979 +1106316 +2012988 +1156740 +552020 +1785486 +976111 +2202285 +811419 +1665693 +1297318 +69252 +1886783 +2667096 +296795 +2202343 +2667063 +1640698 +439219 +636644 +2353620 +1925831 +494976 +655127 +1152456 +1886809 +1979433 +636629 +1684632 +1684615 +182518 +2339761 +1782010 +1506984 +891815 +494977 +2501967 +182501 +891820 +1820924 +471656 +1019048 +552028 +69267 +1019013 +1996851 +211417 +1838528 +1479455 +2202224 +471632 +1075919 +947100 +2202307 +1781999 +1096934 +1756502 +2202265 +1756501 +494970 +1886812 +471684 +928532 +1096933 +1714809 +1886778 +947084 +891799 +361544 +182479 +1367970 +811439 +947073 +1906290 +1116511 +1378707 +928525 +1075928 +2202302 +909069 +1128582 +1721117 +2202275 +321713 +552019 +1019046 +2501924 +552009 +1838526 +1280017 +2667098 +2006656 +392996 +1714807 +928524 +224789 +368572 +751160 +552016 +471638 +182505 +1522697 +471661 +1106308 +1247568 +2202350 +891797 +431263 +1679058 +1886847 +1979435 +2202247 +1740412 +1684619 +2501963 +439236 +2202262 +1838525 +454091 +947089 +1684629 +1096937 +1522692 +1106318 +454092 +1192652 +1085744 +1580628 +891826 +2339788 +282029 +811429 +245715 +1192645 +1707334 +2202252 +2683166 +1069505 +1996852 +1886850 +439239 +1128573 +282024 +1740417 +1358763 +296797 +321717 +2667078 +1396056 +1580622 +1378705 +748248 +1838522 +2353632 +1345507 +1335184 +1205057 +1335175 +1807807 +2667062 +673483 +1886814 +471649 +431264 +811408 +1437890 +1128570 +99978 +909068 +1886790 +2202316 +1740408 +1437900 +1684627 +182474 +1679052 +1128576 +1838529 +1096931 +2006649 +245718 +2001725 +1140412 +1043984 +1096936 +22365 +69228 +69232 +1335179 +928522 +2202314 +2339781 +1886786 +1886894 +552035 +2541735 +1133945 +471694 +1019100 +891834 +1782026 +349503 +182571 +1280018 +2541731 +282047 +1205085 +2285989 +380982 +349501 +439244 +1156754 +1886887 +1437911 +245760 +368576 +1205069 +245740 +245768 +2501986 +69311 +2515855 +380973 +380970 +182539 +69279 +1228310 +1522705 +69282 +1019088 +697731 +380984 +1782025 +947117 +1023993 +1228306 +1247585 +2541722 +1886872 +2202370 +1019070 +282055 +22374 +2667103 +636652 +2541746 +1964356 +471711 +2549749 +2427061 +1925833 +471715 +380977 +1019095 +2541733 +454098 +1043992 +1886900 +471702 +1818425 +636653 +321735 +494984 +245745 +380981 +1143917 +393014 +1133946 +99993 +1169985 +1264802 +1707338 +1176553 +636671 +552034 +1156749 +1156758 +361570 +947123 +1769319 +1906318 +254805 +2683176 +69284 +1886892 +245755 +321738 +361567 +1205079 +1785491 +1925832 +471723 +282048 +2202359 +1152458 +2501980 +1247591 +282056 +182547 +182545 +1401692 +199992 +1019103 +482741 +740142 +182575 +636692 +947139 +1297336 +751182 +947142 +2609374 +471779 +2549764 +1679062 +2541759 +1335221 +494995 +1762751 +69321 +1096941 +22382 +321742 +636678 +397755 +1043997 +245800 +811453 +471806 +1402809 +1769322 +2202404 +2609369 +909077 +947127 +1019139 +224796 +976137 +1838562 +1192703 +1280026 +1345515 +928546 +673489 +1075959 +2609366 +2202388 +1580679 +697744 +69385 +69364 +69339 +1768005 +905291 +1335235 +2810881 +182612 +182592 +2871788 +1228327 +254814 +1057072 +1886903 +1821944 +1580709 +439264 +211435 +2609384 +1684641 +976148 +381006 +1507012 +1205089 +1205109 +1807819 +1714830 +2501997 +69374 +2284698 +1143922 +2270867 +69324 +1580689 +2871800 +1358775 +282068 +22385 +182609 +471773 +1075953 +1156762 +751173 +928539 +1192702 +1838574 +1280024 +2368965 +471763 +381024 +1664057 +811447 +716827 +2609378 +454123 +928563 +1664051 +2001740 +328536 +1838560 +2609377 +1176564 +381011 +1019150 +947138 +1358779 +716821 +439253 +2001739 +381017 +282066 +976151 +321752 +2001733 +1247603 +381041 +1335234 +361578 +1479461 +182595 +2667115 +400614 +636711 +2871782 +471758 +1906328 +1679065 +296817 +1818428 +2419367 +454114 +636675 +182615 +2284701 +69340 +1580722 +1507017 +1043996 +69345 +2286006 +381037 +69372 +1205096 +1684638 +976154 +947147 +404645 +552051 +1156766 +697736 +1664053 +400609 +947130 +1580681 +2541751 +471749 +928543 +1176572 +182580 +2810878 +1205100 +454109 +439273 +1128609 +2609387 +69329 +1580675 +2202399 +1032154 +1679060 +404644 +636699 +1721135 +976135 +471834 +1721132 +1335204 +1152460 +1664062 +1297329 +1384059 +1019118 +2515858 +2724431 +2093962 +2541781 +811473 +381052 +1818429 +1396072 +182629 +301657 +2502030 +471839 +1358789 +1782050 +1740444 +321762 +282078 +2427077 +1228350 +211451 +1192731 +471852 +905294 +740149 +2541782 +891854 +2541772 +2006663 +1176582 +1838581 +1782041 +1228346 +69406 +1925844 +1205115 +2549768 +471881 +1580761 +2541784 +1205114 +1247619 +928578 +1205137 +471845 +182642 +1886965 +811475 +1192713 +2202420 +254819 +2609398 +282077 +1756515 +1807829 +1156768 +471875 +2737311 +245818 +471885 +1192722 +182635 +811468 +245813 +385773 +1128620 +2549769 +1247628 +2305112 +1580759 +1925849 +1684646 +976159 +928572 +1023995 +400616 +2202427 +245822 +2683183 +245805 +1580752 +2844498 +1032157 +1580745 +1228343 +397765 +368597 +439292 +1069520 +1886968 +22390 +471854 +928577 +1886949 +182625 +928566 +1906333 +69399 +393036 +2541779 +1116525 +1169992 +1437917 +471873 +716836 +2502035 +1116523 +2502043 +439289 +1785518 +1080477 +1886946 +1782046 +1247625 +182622 +182628 +2502078 +1228378 +1807834 +928593 +1228391 +2667148 +1714846 +200010 +1116545 +1116528 +1838602 +1096953 +1887016 +1887013 +1437935 +1782052 +2502079 +655130 +1228397 +2339803 +1580790 +2502059 +1887030 +1257258 +482781 +697770 +22414 +2609434 +2339824 +552088 +454175 +1886995 +976168 +454179 +2541799 +905297 +1335252 +1116547 +2202437 +2609407 +1069528 +1280037 +1580817 +1580775 +1679076 +1758655 +697767 +1257262 +1116533 +1437939 +301673 +454172 +1507025 +2502070 +301681 +1580789 +1228366 +482776 +1740460 +2502077 +1116569 +454158 +1152471 +100024 +1228398 +2541793 +1116549 +1228365 +1080493 +2667185 +1838607 +1032165 +2667180 +100033 +1437923 +1437938 +2609424 +1580795 +1080489 +2339816 +1228400 +1335248 +1580781 +2442171 +2667167 +1697836 +2667183 +1580800 +2667177 +905295 +2609419 +254824 +811496 +1925852 +454156 +1257259 +1116567 +1116531 +1096949 +976175 +1096948 +1580768 +1979452 +224814 +2667187 +397766 +1580815 +697760 +2757901 +2427080 +2339808 +454155 +2667179 +1257252 +2339805 +397767 +200029 +301667 +1116544 +552090 +1080483 +100041 +1192750 +1925860 +2202446 +2667199 +431273 +301676 +1697842 +1507038 +245836 +482782 +909083 +182668 +296830 +1096956 +2685790 +1768013 +1057084 +1664070 +471887 +1964370 +1176590 +2541806 +495007 +1152473 +22430 +726228 +182659 +182662 +381068 +947164 +1769330 +69433 +1297342 +891861 +928601 +1247632 +1684652 +282088 +716838 +976192 +2541808 +2427087 +770938 +947166 +471890 +471889 +2732526 +891859 +1818438 +454186 +1684653 +891869 +211452 +1522717 +1205144 +1264806 +254840 +2690020 +1762754 +1228422 +1580864 +636749 +1335262 +1384066 +2339828 +1156780 +1019175 +301694 +1838623 +69455 +1768018 +928616 +2400002 +2810942 +2442175 +2810971 +1838621 +182699 +716839 +1507051 +2860941 +2339841 +393049 +1580856 +393052 +182685 +2667212 +2683185 +2012993 +321783 +2701800 +471900 +301691 +356141 +2810921 +1838624 +454200 +69464 +1152475 +245847 +2701794 +321775 +1192766 +1979455 +1152478 +2202461 +2502100 +1887063 +1228426 +2860922 +2860920 +1140426 +1580880 +2705729 +224836 +2748772 +1964376 +182696 +1247645 +636761 +2339831 +976207 +2810926 +2860925 +1128630 +1580846 +471913 +1714857 +1838631 +2502102 +211460 +1335263 +1964379 +928628 +1228417 +2810962 +2202466 +2810963 +245856 +245855 +1297346 +552103 +1096958 +2419370 +1205159 +2860921 +1106351 +1838628 +1257272 +2810931 +2860939 +751189 +1964381 +69437 +740151 +1906342 +1437943 +1069554 +2810886 +1964380 +1228409 +69438 +1887064 +976205 +245842 +1228411 +1782064 +2810927 +2305128 +1176610 +1044008 +1580905 +69476 +1580910 +673502 +1785532 +2363527 +400622 +1297368 +1401712 +211471 +1019192 +1943538 +1640764 +1580912 +1785524 +336619 +1019199 +1128643 +471991 +182794 +2871816 +495021 +381150 +1297354 +1522723 +182750 +1205187 +947200 +471975 +224840 +495025 +2667224 +1247656 +282097 +2860981 +2502119 +1297357 +1979466 +891926 +1019188 +673507 +1152483 +1205174 +2305139 +1170006 +1943556 +182709 +2286043 +2202509 +182713 +400626 +1247679 +1128644 +1192776 +1763573 +1887074 +947206 +2871812 +2860967 +1106352 +1406408 +245870 +69466 +1740476 +1580901 +1106372 +2502111 +2286036 +2270876 +673517 +1247655 +947201 +1507059 +2724449 +2732539 +69465 +1785537 +2368982 +182776 +2202515 +811533 +182796 +439310 +716846 +947184 +2400023 +947183 +245879 +1170003 +1205166 +1522734 +1785526 +2667225 +182793 +1247658 +1964386 +349520 +1507066 +909086 +211473 +2667217 +182746 +891930 +1384071 +976212 +1943541 +2286014 +471962 +1640779 +2667215 +2400008 +1580894 +439311 +1522732 +471939 +1205185 +2757904 +2284719 +891891 +439335 +182736 +2732538 +471979 +381129 +673501 +2860980 +400625 +891894 +2732534 +1640771 +1176612 +2202474 +2860954 +636783 +1785529 +2871801 +2368974 +1176600 +2729329 +471998 +1345521 +417969 +2515867 +1887089 +1228445 +1044012 +1580898 +381100 +2368971 +2368978 +471977 +1906367 +2871893 +2871991 +1938704 +2609465 +1782073 +2871966 +69510 +361614 +1205217 +1170017 +1247705 +1964394 +1887114 +2609466 +1335285 +1986384 +1297391 +1906393 +909092 +361603 +472035 +381191 +1756519 +1906397 +2202542 +2871837 +1176626 +697802 +1580947 +381169 +1164549 +1106382 +100055 +381182 +2093976 +750133 +69488 +2748776 +1580949 +2609477 +393077 +2871917 +1580946 +2871914 +245911 +2400026 +1679092 +1192785 +2286053 +1032176 +2609475 +1106380 +2286050 +1205215 +2024704 +1818451 +2609468 +1785549 +928644 +211479 +2724457 +811538 +2732540 +2871842 +69484 +381180 +182821 +1170007 +1076001 +1906387 +1818459 +1925875 +716853 +1887118 +697801 +1684665 +716857 +1838642 +393081 +381181 +1247724 +2363531 +495031 +2093973 +1019214 +2724459 +472042 +2202535 +1335287 +1818461 +1979471 +296863 +2871930 +1192780 +2871826 +2724483 +2202548 +1925874 +472036 +2871840 +2871899 +1247732 +182829 +495036 +1156800 +1176624 +1247729 +2871923 +1818448 +1807852 +1247716 +1247712 +1640791 +976219 +1785545 +1247708 +2871932 +1205210 +1170015 +733644 +1906383 +1170016 +1176622 +2024708 +381174 +296857 +1205228 +2609479 +2871926 +1297377 +891955 +2871987 +321822 +472012 +1176623 +100053 +1640783 +1818457 +770944 +1170010 +282111 +2871848 +947230 +1507081 +552118 +2871834 +69508 +361602 +472049 +182831 +2724481 +1247717 +381199 +2353647 +2609480 +282105 +636823 +2871945 +472029 +1938707 +1437954 +947227 +1785546 +1076007 +254851 +1257278 +905313 +1838644 +891945 +381161 +2748773 +1818454 +381185 +2006673 +1076003 +636820 +2024711 +368628 +368642 +1580991 +1192791 +2502127 +2861054 +397796 +2861023 +1887160 +1096966 +2861069 +482801 +1069567 +1740483 +1991218 +1581011 +2202564 +454223 +22441 +1192843 +2502138 +1228518 +2202555 +1580996 +735880 +1507088 +224851 +454243 +976250 +1358833 +1192812 +1192786 +2202556 +1228467 +1140431 +2006675 +2732550 +1714864 +976252 +1581014 +2502144 +1887178 +1358828 +454266 +1782077 +928667 +1714867 +1714865 +552176 +1580961 +385813 +356153 +439352 +1887129 +1768023 +1096969 +1192825 +2339856 +1192841 +336623 +454276 +1664084 +1679096 +697821 +1396099 +747418 +697806 +552139 +976257 +636826 +1887149 +100075 +1887135 +1069574 +1228517 +254867 +1887173 +1192824 +482806 +1581007 +811563 +100064 +1740505 +1192789 +2861048 +2667251 +1372618 +1807881 +2861067 +2861031 +1807880 +454229 +454218 +397793 +1116598 +2202595 +254861 +100084 +2044161 +1580984 +1192872 +385804 +2861029 +404649 +2502143 +655137 +552123 +1925891 +928665 +976242 +1335311 +1782089 +1925890 +100076 +2001753 +224845 +2502126 +385785 +811568 +1152487 +2861026 +928671 +1192809 +1887140 +2861057 +1335306 +2006680 +1580959 +2202585 +1228498 +2861040 +2667255 +2757909 +1057094 +1080503 +2724492 +1807878 +2667237 +1714861 +1192842 +1437975 +1925909 +552190 +552251 +1437972 +1032203 +2609494 +1887228 +22466 +1581073 +1192879 +811636 +1581064 +697845 +905319 +2339901 +1581035 +1437990 +1679114 +811648 +2044169 +811588 +2400049 +100110 +2419375 +2019395 +2202694 +1280066 +762604 +1807894 +928692 +2202678 +1887227 +811635 +2442186 +1581036 +2094001 +2202639 +811602 +1228531 +976288 +1096976 +2609531 +1887232 +1887240 +2202660 +2202607 +905320 +976285 +1887198 +1714878 +224854 +762607 +1925920 +2400037 +1581027 +1032196 +2667291 +2339874 +2339871 +1358838 +2609514 +697846 +1437992 +552210 +1887249 +1437984 +1964399 +1925936 +2400050 +2609491 +2400029 +2667290 +1887242 +1378731 +2701809 +2609504 +2339900 +811608 +552228 +2667266 +1096988 +2609535 +811585 +100113 +811632 +2400031 +22462 +1581058 +1032199 +1437967 +2701814 +1086851 +928706 +552219 +2713124 +1887238 +2667295 +1925915 +22454 +301720 +2502179 +1096989 +2339865 +552254 +1887229 +1581077 +2609497 +2339877 +1096977 +2609498 +905324 +2667276 +2305190 +552282 +2400141 +2202944 +1257314 +1581116 +286645 +1116659 +100137 +1887292 +454296 +1581233 +2305170 +2667494 +1032219 +655187 +1925965 +2667342 +2419393 +1192897 +2202797 +1116611 +2202729 +928750 +100169 +2400204 +1280100 +928718 +1740621 +2400138 +1581208 +655170 +2094107 +2400180 +1406416 +1257318 +1581141 +891975 +2609693 +1649547 +2541847 +2044187 +976293 +1925981 +2732556 +891964 +2872019 +2667517 +454294 +811782 +1304806 +2400177 +1581295 +1438041 +2202707 +2667389 +811683 +200064 +2541831 +2044215 +1926044 +2667512 +69514 +1116639 +2667383 +2284736 +655176 +2202805 +2339984 +976347 +811724 +495045 +2667374 +2202773 +1228586 +1438079 +2305161 +2339989 +552369 +2667435 +1679124 +368657 +2400188 +1257328 +1280120 +1192908 +1335359 +2339975 +2667375 +1979503 +655151 +1581251 +976310 +673531 +1925952 +811667 +1818466 +1096999 +2609702 +552436 +2202950 +385828 +1581146 +1507125 +928729 +1581300 +2609588 +1581156 +2203045 +1887315 +552355 +1384080 +1714895 +1069590 +2667454 +1581194 +552445 +2541838 +1304832 +1581196 +2202910 +811669 +1304812 +1257315 +655174 +1926011 +636838 +2541849 +22474 +2442187 +811762 +2203028 +811692 +100126 +1887280 +1740619 +1581316 +69517 +811702 +1740637 +368652 +552341 +1228585 +2094102 +655183 +69515 +1280111 +2202717 +2202843 +655189 +2202785 +2202947 +1438070 +2009139 +1280095 +1257301 +2724524 +2502223 +1925972 +811655 +1507163 +2667464 +2202881 +1887261 +2202879 +2305173 +254873 +2044192 +1714897 +1925961 +2667466 +2713136 +1335399 +2044228 +1887311 +1926043 +1925977 +2609685 +1943574 +1697858 +1257305 +1887334 +2724543 +811703 +2202936 +301726 +636852 +100157 +1507167 +2202978 +1581243 +2400099 +552424 +1192913 +482829 +1335416 +976328 +1280071 +2202806 +928717 +552326 +1304810 +655179 +2202834 +1697899 +2502242 +1335420 +2724537 +2541854 +1228576 +1581153 +2203007 +1437998 +1887291 +182867 +552338 +2202716 +1740572 +1581135 +2202867 +1979491 +1964411 +552407 +1438062 +976311 +1964415 +1581292 +1581286 +1581279 +1438094 +2094008 +1507147 +2609684 +1740639 +2094069 +552317 +1192909 +454291 +811740 +1581321 +2044191 +2667318 +2305184 +1228551 +636836 +2202795 +2667560 +1925960 +2502213 +2400139 +636841 +1069581 +811779 +2667407 +2667330 +2609551 +2044236 +2724529 +1581256 +1485994 +2541828 +2442191 +1116643 +2202748 +1581190 +2203022 +1740561 +1581115 +2667520 +1943592 +385869 +1335344 +2609583 +811651 +1479476 +552423 +324253 +1097018 +1926051 +2419394 +2609622 +811668 +1714894 +2044179 +1925970 +2202985 +1697874 +811760 +2400063 +552370 +2667471 +811733 +2667430 +891966 +1943598 +2683207 +1116612 +2667558 +2044206 +1335389 +2202726 +2667327 +2502209 +2339981 +385827 +2094091 +1438010 +811685 +2202778 +1228570 +1438025 +891977 +811664 +2667384 +1679120 +2502195 +1581139 +2400098 +2609618 +976322 +1943568 +1925978 +2094071 +1926060 +1581131 +552437 +2502228 +2609556 +482830 +22470 +1507110 +2400107 +655154 +2609627 +905339 +552371 +1581213 +2667559 +2006687 +552294 +811780 +552442 +1438091 +1228571 +2400197 +2203047 +1116661 +697853 +928731 +2724550 +976336 +356162 +182874 +2609593 +2202701 +1438113 +1807914 +1228566 +2203061 +1507131 +2667554 +2400194 +2203048 +2203059 +552431 +1228545 +1581179 +2419388 +2541863 +1116633 +1304833 +2202730 +2203074 +100133 +1032250 +1887298 +1280102 +2203042 +1032246 +2872018 +1887253 +1581237 +1581155 +2502210 +1581114 +1943569 +1925948 +1943567 +1740551 +1335413 +482822 +811728 +2757918 +811660 +1257350 +2094022 +100170 +2400058 +2609596 +1807918 +2667350 +1964403 +1164551 +1335435 +2667319 +324255 +182876 +552289 +2502205 +2667413 +1304835 +2713128 +1758667 +1228602 +2203155 +100281 +2203236 +1097028 +1581452 +1378735 +22540 +1032263 +100344 +1581410 +2872078 +976439 +1887443 +976430 +1057113 +2009143 +1887343 +2203132 +2872056 +1807964 +482844 +2400255 +928791 +697881 +1762758 +301746 +1406443 +2203204 +2861102 +1507171 +2502291 +1697940 +2203356 +100311 +100235 +1887415 +69549 +1887409 +1807966 +976360 +100415 +100202 +100314 +381208 +1581455 +552494 +1192940 +1507207 +976412 +1581464 +1926137 +182882 +301752 +182941 +811901 +1406455 +1714919 +2305217 +22539 +254875 +1086862 +2872061 +1697910 +1170024 +454310 +1097042 +2609734 +182987 +100397 +1838688 +1807944 +301768 +2872131 +2203197 +1164561 +1581348 +2872070 +182964 +1086859 +2667583 +200081 +2340025 +2400233 +2094137 +301737 +905386 +2203207 +2203120 +2001762 +2872059 +1581420 +1740644 +2203274 +182948 +2203135 +928764 +976382 +2203099 +947238 +1086858 +762655 +100312 +1057112 +636872 +182919 +254874 +811861 +1228593 +301762 +2203190 +2094141 +1926114 +454313 +811839 +2203312 +301734 +1438136 +2340004 +182907 +891987 +1887477 +2339993 +2400241 +100418 +100275 +1838675 +1069603 +2400270 +811846 +182929 +1926138 +100209 +182886 +1721148 +976381 +1228642 +1707344 +1679134 +100233 +2203226 +762638 +368693 +1438130 +22530 +762659 +22552 +1782115 +2203164 +321846 +368689 +2667612 +1228722 +1581423 +770952 +286669 +1335463 +381209 +301758 +1228605 +1581347 +2872128 +2400253 +2203385 +2203341 +100393 +182912 +1116701 +1782116 +1264824 +2502249 +100227 +1438124 +1926128 +552491 +1807954 +100187 +2203280 +2305232 +1335458 +321831 +1086855 +182938 +100400 +1740678 +22511 +2609753 +211488 +254877 +100195 +245938 +1887414 +2541884 +1697922 +182891 +2872048 +770948 +1714932 +1887412 +552513 +1581409 +100238 +1697954 +2609717 +2872076 +100299 +1581411 +286670 +1581402 +1479479 +1740681 +1697916 +1887380 +100342 +891990 +22493 +1581393 +1926121 +1887350 +811895 +1581352 +2667585 +1807934 +1228716 +2203279 +1486011 +552502 +100207 +811916 +2203106 +1887377 +100348 +697893 +100373 +1486016 +1406441 +2872084 +2203334 +552486 +22551 +1097055 +2203189 +1507205 +2667610 +301799 +1024019 +2203259 +762642 +2203193 +100206 +976420 +1887366 +976355 +100309 +2609764 +22519 +552480 +2305203 +811790 +2502287 +1152512 +770947 +286668 +2340015 +811902 +22500 +301757 +200097 +100188 +2861106 +182894 +2861105 +2861103 +552456 +1522747 +2044244 +1069608 +1664096 +2541880 +200087 +1740657 +1406448 +1818468 +1228712 +1679140 +1192942 +976377 +552505 +811912 +2667567 +2609723 +1486020 +1926117 +22488 +1507229 +100355 +22554 +1507194 +1507212 +673536 +2872136 +811870 +182932 +976427 +1887466 +100316 +100398 +2400267 +301744 +2203130 +22490 +69522 +2094143 +2203145 +1335470 +1887398 +1257365 +69572 +2305215 +1581481 +100231 +1926095 +2872050 +928802 +976358 +1887408 +301814 +1205235 +200079 +2872049 +2203097 +2609751 +2872041 +1581446 +655197 +976417 +1507185 +655200 +2667601 +552474 +1740650 +1335454 +100324 +2667594 +1097033 +1697951 +1057115 +2872098 +1887349 +552498 +182880 +2203273 +976375 +361617 +182976 +100266 +1024024 +2400265 +697880 +286674 +1581378 +100322 +928755 +2872062 +2305191 +1926083 +1164558 +1581381 +1152511 +2203109 +812013 +697953 +454470 +2305272 +2667660 +482867 +1926180 +2517908 +2024735 +1116713 +1228791 +1581682 +454400 +301826 +698038 +385887 +747419 +726247 +1507280 +928872 +224943 +200137 +22628 +368770 +1707351 +928844 +1740795 +431324 +1080635 +976534 +1228972 +697939 +2667904 +200163 +2861110 +224960 +1838696 +454430 +431328 +1887617 +2340166 +697985 +2094168 +1887544 +2340173 +1740772 +2861131 +811951 +2502371 +286714 +454384 +976460 +454395 +811988 +1887668 +2502490 +1926348 +812008 +928815 +1228795 +368807 +2609899 +183012 +1396107 +2400345 +2667646 +2400359 +1335489 +2667930 +2724561 +1581624 +2502476 +1116725 +2667839 +812099 +812092 +2502303 +301904 +812089 +1116741 +301842 +454449 +100449 +1280150 +2203473 +1808051 +2284747 +1192987 +183000 +697991 +928874 +976560 +1228818 +1152520 +697947 +361618 +1507249 +324263 +2094163 +368721 +1808131 +976548 +1396104 +552597 +1807994 +1768029 +183018 +552519 +22566 +1887568 +976491 +254895 +1926294 +286703 +2203398 +328552 +1698023 +697963 +742602 +2609959 +1228990 +22563 +200211 +2340107 +1926253 +2502350 +1807996 +1581586 +2861233 +1581655 +224930 +1080565 +1926198 +1228929 +100554 +1080529 +100562 +673539 +697927 +2667826 +552521 +1581551 +2203518 +1581501 +368782 +100556 +1581656 +1926166 +1838714 +1581706 +1228948 +2203572 +2667909 +2502459 +2094162 +454436 +301887 +2861169 +1581528 +1581754 +1228886 +1838732 +976485 +1192982 +1280143 +1926191 +100527 +1782137 +655211 +2203566 +976532 +1926325 +812091 +2609888 +1116732 +1140444 +1926382 +812117 +2667779 +1581745 +385881 +1581606 +2861168 +976511 +345038 +2541912 +1228937 +1581492 +2861137 +697984 +1808003 +454465 +698034 +812108 +698055 +928862 +1193018 +224921 +2609801 +2284744 +1887690 +100443 +697954 +1808024 +100555 +2203479 +2094154 +301896 +2609907 +1152530 +2502469 +431302 +655210 +976551 +1782146 +1581696 +1080626 +2094169 +2340120 +1228739 +2340109 +1032271 +2811002 +482860 +2006699 +1926212 +2667769 +183020 +552628 +100426 +655205 +1926308 +552601 +1808103 +1097067 +1581731 +1698000 +368720 +22608 +1019244 +1228784 +2502503 +286725 +2502331 +976582 +2363553 +200173 +812106 +1080528 +1714957 +2667630 +1116710 +2203510 +1193020 +2541924 +2502347 +1152536 +100428 +1581627 +1838697 +1581677 +2541913 +1097076 +1838734 +552564 +454452 +482881 +976490 +286730 +22594 +976513 +812043 +1438159 +1581614 +812067 +183021 +2667787 +1740752 +1887618 +1581494 +454385 +1808078 +1581771 +2609893 +1697991 +812075 +2502450 +2541900 +1228741 +2305268 +183008 +100578 +1304863 +224941 +224956 +2502357 +1887489 +2609816 +100451 +812035 +2811003 +1581569 +1193022 +1926276 +812157 +1740744 +454376 +2502387 +1228974 +2442226 +286694 +2667756 +976445 +2203528 +1887517 +1193019 +1926388 +22617 +454357 +454415 +812133 +698065 +1887502 +976542 +1740798 +552587 +1032285 +1228985 +1152516 +1820943 +22564 +385896 +812045 +1228762 +1979514 +552608 +431319 +2354551 +811964 +385883 +2667810 +482851 +2609895 +2667819 +336633 +1358886 +254935 +1887596 +2502546 +552547 +1116745 +928864 +698026 +2667862 +1080552 +1926316 +2203414 +100535 +1697977 +2502433 +1887516 +1080587 +22611 +368789 +1019242 +1581537 +2400286 +2609887 +368722 +200204 +2502351 +224913 +1887593 +2667922 +1581670 +301894 +928822 +697997 +2203542 +1887587 +1228738 +1698002 +2340155 +182996 +1808069 +1080533 +552624 +2400305 +812024 +200187 +1581661 +2203404 +1808009 +811978 +224954 +1335478 +2609863 +2502432 +200216 +22622 +286686 +1080637 +301871 +200156 +697944 +385882 +356199 +1926357 +1926297 +1758676 +2667801 +482889 +1080534 +1926214 +1581570 +1714961 +976473 +1887649 +762672 +1507272 +301829 +812000 +1964458 +2203529 +1808108 +200208 +2019399 +2502487 +1740748 +976553 +100448 +812057 +1228867 +2667873 +1887611 +1740814 +1581684 +2609946 +1228812 +1581577 +2609976 +2609954 +2400290 +1808134 +1581666 +2502362 +1581600 +2609939 +2340095 +2861217 +1581730 +454431 +1358898 +1926164 +812153 +254908 +2861130 +22581 +2667905 +1228831 +928825 +100458 +2203514 +2203455 +100436 +286729 +2400304 +1228756 +2400339 +1581734 +2811005 +2609955 +1507277 +1808125 +2502368 +2400308 +811957 +1080579 +2284746 +1335477 +812109 +1581580 +2340186 +552568 +1887597 +1080586 +1740754 +1887641 +812095 +1280152 +2502510 +1926327 +1581753 +1979518 +1887571 +698005 +2305273 +1740723 +1808113 +2609868 +100467 +1740720 +1228944 +928871 +2609814 +2400318 +1228993 +368746 +1887704 +1740742 +1116726 +2502479 +1581619 +2340071 +2305275 +454426 +301890 +1032280 +812159 +552596 +1698027 +1581564 +381220 +1926205 +697937 +2609947 +1507292 +1438180 +1887613 +1887582 +2203530 +2203598 +1887638 +2203476 +1228811 +1926314 +976504 +2502438 +1358897 +812011 +2422000 +1116728 +1838726 +1228915 +1807987 +1080634 +1581687 +976458 +1581538 +2861144 +100565 +2340059 +2667778 +1808135 +2811000 +976547 +454409 +397816 +301840 +698061 +976572 +1887546 +2502535 +454394 +1581562 +2667793 +2609859 +976486 +1228894 +1887632 +552543 +1808133 +812083 +200192 +1581720 +1057123 +368714 +1581529 +1581515 +482873 +1335528 +726258 +2610142 +1926450 +2668075 +698114 +1581926 +356202 +976690 +1438221 +1782160 +2203789 +1097147 +1964462 +726260 +2502660 +2203635 +2203766 +1926512 +296883 +1926535 +2502645 +655221 +1116839 +2400366 +552761 +1229108 +2203724 +552763 +1740874 +2203725 +1581811 +552659 +2610063 +1019265 +2609994 +812224 +1097097 +2400394 +1887857 +1581808 +2502609 +976620 +2668004 +1887715 +1707360 +2668120 +2400445 +762678 +100635 +698110 +2105207 +1740848 +1698072 +2668005 +2502655 +2668089 +655222 +2203714 +1887764 +1097105 +2400372 +2668012 +1887838 +2667989 +1097148 +1740961 +2668067 +2668208 +1926615 +1097137 +1887840 +698132 +1926397 +1926473 +1649588 +1581983 +2541967 +2400374 +1032302 +552675 +2203712 +100659 +1229127 +2610040 +1887835 +100630 +100597 +2610003 +385910 +1097136 +368829 +1808163 +1581842 +431331 +100622 +2400411 +1229006 +2610022 +928879 +1698054 +1257390 +1926489 +1116807 +2203800 +2400472 +1507332 +2610134 +1581815 +2668205 +1280157 +296885 +2400419 +1229104 +1406468 +454512 +1740876 +245950 +2400400 +2400373 +1438225 +2668163 +2609998 +2400414 +2610091 +1698046 +2044266 +1257397 +1173459 +2400381 +1164569 +1080646 +2502583 +1808153 +812230 +1507323 +1581801 +1581850 +100716 +2502594 +2094208 +1926543 +1097155 +324271 +100611 +976658 +397830 +2400454 +2094181 +812202 +762708 +552726 +1887772 +1887740 +2668159 +2044269 +2400383 +2203784 +1838754 +1887866 +698104 +1654550 +1229107 +1740918 +2094207 +1926588 +1740818 +1887841 +1229045 +100718 +1926527 +1838756 +1887749 +2517911 +1438190 +1926392 +812188 +2610038 +1024044 +1229004 +762688 +1130893 +2668199 +1581911 +1926419 +812197 +1335523 +905406 +976616 +1740855 +739228 +2668107 +2203732 +976716 +1698038 +1581944 +100612 +552723 +928912 +368815 +1926604 +1257395 +1229121 +2340205 +2610080 +698096 +2502648 +1740882 +454510 +1410160 +100604 +2502603 +928917 +1640810 +2001766 +286778 +1838746 +655223 +1097094 +2502569 +183029 +1229034 +2094218 +892022 +100628 +1097089 +1024041 +368828 +1116826 +2667943 +1581963 +2610102 +1140446 +1140445 +698103 +1887743 +1838781 +1410159 +321861 +698117 +2541980 +812290 +2305308 +2502608 +2610103 +2667949 +1582004 +1698037 +2541949 +2541978 +2400450 +1698036 +1438214 +2667970 +976697 +286753 +2668140 +100649 +552678 +2502628 +286780 +2610108 +1679216 +1581967 +976628 +2094215 +2203717 +1698040 +1097111 +2541946 +2668206 +368823 +1193052 +454482 +2400458 +2541957 +1698071 +698095 +2610115 +976722 +2363560 +100641 +431343 +812274 +2610122 +1926540 +2610093 +2502612 +552688 +1926529 +2517921 +1740965 +2502669 +1097093 +976627 +1926562 +1740868 +1926456 +2667939 +1581925 +2667956 +100640 +1229126 +1887714 +2276479 +2203624 +1964463 +1581813 +454520 +2541933 +892020 +2203829 +368821 +1926516 +2541942 +2668173 +1926510 +1740913 +1229013 +812248 +1926509 +2502619 +100688 +1740957 +2400417 +1335535 +2668061 +1887829 +1664108 +1698070 +2667960 +1438236 +726256 +1581954 +1887754 +2203694 +976676 +1808155 +2610029 +1581984 +2400427 +2203734 +1097142 +2610088 +1820959 +2400469 +976694 +1740893 +1156807 +976707 +1887861 +368842 +2276480 +812198 +2305307 +1838768 +1193038 +1097098 +1926437 +1097119 +1581858 +2610121 +1581853 +368827 +69605 +2044268 +812264 +1740911 +2203670 +1581812 +1926569 +1257412 +1758692 +1887774 +2203603 +2400501 +183045 +1581978 +552717 +1229130 +2502662 +1581918 +1808150 +2610051 +1032301 +2732559 +22665 +1581897 +1335511 +1926571 +1406463 +1406459 +1581919 +2667983 +1887782 +2668202 +1698055 +1097126 +976692 +321855 +1581809 +1229088 +976709 +2203806 +2610119 +2305293 +224972 +2094213 +1019260 +2203731 +1887837 +2667941 +2203685 +2009147 +2610014 +2502656 +976661 +1581825 +286755 +1740837 +22676 +1229062 +928888 +1406460 +1044035 +1707358 +1649589 +1640806 +2667984 +2541928 +1926464 +2502659 +1838783 +1229024 +1581924 +2502556 +1032298 +1116792 +1130900 +2610035 +439355 +2701825 +2400457 +812213 +22667 +1649578 +1229005 +2668204 +1229100 +1076013 +1507306 +1714986 +1116805 +1991234 +1714966 +1926566 +1820955 +1926578 +2400491 +1714985 +1818476 +750148 +1257429 +200240 +1438268 +2610170 +2502684 +100758 +1229161 +1229159 +2203896 +2340261 +2668231 +770960 +1264829 +905424 +183096 +905427 +928940 +381228 +1582098 +2203856 +1664116 +1838800 +1076016 +183084 +1486054 +1887892 +1264833 +1887911 +1654552 +1486049 +1640823 +1229156 +552802 +1507344 +636903 +1335560 +2502708 +1257418 +928926 +812344 +1582101 +1486050 +1116851 +1640815 +2094249 +1679234 +2044278 +2305315 +1116861 +2502688 +976752 +1640813 +2305328 +892038 +1229136 +1582019 +183102 +1582034 +636893 +1714995 +1264831 +454525 +1782175 +2203889 +2340245 +552771 +1019287 +812325 +552806 +905426 +1076017 +1664115 +905431 +1582082 +1076015 +345040 +2094254 +928931 +1486057 +552801 +183073 +812307 +254954 +2203860 +1507349 +698151 +100754 +698147 +2340256 +1486053 +1229143 +211508 +286782 +2203839 +2094241 +905425 +1808198 +472067 +2610166 +1438271 +928933 +2340216 +2305318 +2502691 +1069658 +183083 +183064 +183105 +2340253 +1906404 +1280171 +2400513 +1051172 +1887896 +636906 +211500 +1582062 +69610 +1486052 +1335557 +892032 +812317 +2094244 +552779 +739235 +739236 +909102 +2400512 +928930 +1164589 +2340241 +655229 +1721155 +636928 +183155 +439360 +1887984 +2006702 +183211 +1706319 +2001768 +245976 +2105209 +1019300 +321899 +183192 +1926654 +716873 +892116 +2668283 +1846801 +200252 +1019386 +1097171 +909118 +1684701 +1116884 +1019372 +636959 +211513 +282134 +726267 +1335565 +1640844 +552818 +183124 +1888012 +1887981 +393095 +393090 +1582131 +636924 +1582112 +1721170 +2340298 +1106406 +1297407 +762733 +2541994 +1838808 +2668248 +1756528 +909117 +1019339 +1076035 +2203939 +2340265 +1076025 +2044293 +1808211 +1097168 +1582127 +1582152 +1888006 +892109 +552814 +1032323 +1479512 +1019371 +1906407 +1582141 +1740987 +100770 +1128680 +1297422 +1665721 +301935 +1887990 +636941 +412137 +2340266 +636958 +211514 +1887948 +770973 +1229163 +1205243 +716872 +211517 +2713153 +2668252 +892097 +1106403 +770961 +454528 +1887946 +636965 +552826 +2340281 +905440 +100765 +1229206 +1080658 +1229225 +1582135 +1721156 +976780 +1838807 +211521 +892107 +1019306 +100773 +1297414 +1640838 +1582145 +1229170 +2340289 +1664118 +1019304 +2732566 +947255 +1229216 +2668285 +2502743 +1229208 +1684699 +1116889 +1838802 +381240 +1128683 +2668234 +1247763 +1979536 +1106402 +1756540 +69620 +2203952 +1019346 +1019326 +2701839 +636974 +2701838 +716874 +1176631 +321923 +2400524 +1640836 +321883 +1479502 +2502719 +2020238 +1086885 +2276494 +1173465 +1507369 +976768 +1264837 +976758 +892122 +495053 +1193086 +472073 +636943 +1582103 +1128676 +472069 +2668238 +1679248 +296911 +1640860 +892082 +1229181 +183146 +321915 +1887976 +183208 +2340331 +2203957 +454531 +1721160 +2019405 +1057145 +282174 +636972 +321877 +2340291 +1926664 +812348 +909114 +1640827 +892100 +1247774 +431351 +947252 +2203929 +1257437 +1116886 +321888 +1684693 +1715003 +282158 +2732567 +2502739 +425506 +2340268 +2340340 +22733 +2713157 +1044050 +1335571 +1193091 +183161 +2701836 +1979531 +947260 +183170 +1304874 +1582159 +1076034 +321880 +183232 +1640879 +1926805 +1479519 +282211 +812371 +2400549 +1926702 +324282 +1582186 +2692674 +1706340 +1097180 +1128712 +324283 +1019401 +1019441 +2270889 +1926725 +2626601 +1943610 +1247783 +2626597 +1193092 +2203969 +1926757 +1019453 +2203979 +1019419 +2203972 +892190 +2692689 +2203999 +1479524 +2713168 +1926760 +245985 +1640872 +1019468 +321928 +1969673 +183262 +1044061 +1926732 +1926695 +1706345 +183251 +2610204 +2610208 +2340362 +183218 +892152 +1758744 +2340366 +1019420 +183245 +1116892 +1097179 +2610219 +183264 +393104 +183239 +1019455 +1019426 +2442250 +892204 +1128710 +2204006 +1019452 +282189 +2340363 +1926759 +1106422 +2610200 +1019429 +1758723 +2204004 +1926713 +69667 +1926707 +1698079 +1076037 +282208 +286800 +947267 +2610228 +393103 +2626606 +1964480 +2610241 +69657 +1888024 +2009151 +1106424 +1926749 +1926746 +2340351 +2626596 +1926722 +1247787 +1706330 +2340372 +1926791 +1019421 +1926788 +282209 +2610215 +1297440 +1229232 +1640893 +1247788 +892181 +321934 +1247785 +1808221 +1229238 +1721180 +183243 +2340382 +1297456 +812391 +1247796 +183323 +183289 +698184 +698181 +1838821 +1640917 +2400576 +211540 +2685811 +1582253 +1846802 +69688 +2610250 +2094276 +1076038 +928967 +1926827 +2542013 +2668333 +2400595 +1741012 +1838817 +1097187 +2204030 +762740 +2668321 +22743 +1116902 +454536 +2006703 +2284761 +2400583 +2204049 +1582245 +296964 +2685802 +1721187 +2668328 +1025177 +1582227 +2502758 +324288 +1019489 +22746 +2610260 +321948 +1116906 +282215 +321946 +1706357 +892265 +2517933 +1818492 +2668300 +2204018 +892222 +2685808 +1582205 +2610262 +1205255 +1926845 +1335587 +2610255 +2400597 +2400575 +183301 +1715014 +1640905 +282223 +1335579 +1368019 +2610261 +1888031 +503124 +321953 +1706358 +2668334 +183286 +503123 +892252 +2610269 +1264849 +909131 +2517929 +1926828 +2549785 +1818494 +1721181 +1808231 +2094271 +1721184 +1926843 +892230 +928962 +1205253 +716883 +1097190 +1640916 +1926840 +1715015 +905442 +2400589 +2340386 +1741020 +1582244 +892257 +286801 +183314 +1297455 +2094273 +1507402 +1838872 +2204120 +1741051 +2668398 +928994 +1838864 +812426 +2502839 +1582322 +2542037 +976840 +892283 +2305346 +1888094 +1741073 +905452 +2340419 +2732569 +2094303 +2204069 +636995 +1193120 +928982 +183328 +1086891 +1926869 +2668434 +1741052 +1410174 +2427111 +1582430 +2400644 +2610342 +1888118 +2204127 +2610331 +2668394 +1507395 +1193122 +976817 +2610321 +892275 +976822 +2610318 +1741074 +2280018 +2668455 +286808 +637000 +1698115 +1838869 +1758761 +1044080 +1410170 +69700 +2204078 +2094311 +1888120 +2610304 +1715035 +2502851 +552878 +1741045 +2610384 +1582360 +1838839 +2305343 +1838852 +2610317 +2502794 +2610355 +321954 +905449 +2668443 +2668346 +637021 +1438311 +1808238 +2668378 +2668468 +224997 +2305348 +301942 +1721189 +2668430 +1888093 +1888072 +1507385 +976818 +1193123 +1640928 +2400672 +2668424 +2204161 +552859 +2284771 +1193121 +2204150 +2340400 +22755 +2204104 +2668381 +636988 +1582296 +1926865 +2400613 +928974 +2668379 +2400635 +2668471 +1479543 +2204139 +1582362 +1116918 +2502787 +1438294 +2363581 +1582340 +2668353 +1507396 +1838837 +2094287 +1582383 +2668420 +1582382 +454537 +2400656 +2094282 +1582392 +2668453 +2668386 +183343 +1024058 +2204072 +1741063 +1888096 +1479539 +2305344 +2204157 +909133 +1838859 +771024 +2400661 +1838874 +1086889 +1438301 +2668445 +1741033 +2204083 +2400617 +1229297 +2502838 +1582333 +2610322 +22757 +1741029 +2668444 +2542028 +552871 +1479547 +1116914 +1116922 +1582321 +1438295 +928978 +2280017 +2668391 +1193109 +812411 +1707369 +771018 +2094290 +2668406 +892269 +2400660 +2204076 +1582341 +2668389 +1679254 +2502814 +2610382 +1582355 +2400640 +2204189 +1024062 +1582448 +2502874 +2340453 +1097226 +2204180 +225001 +1280213 +1679262 +1582496 +929007 +1582468 +1758780 +1758766 +2204207 +499089 +552886 +1715041 +1229319 +2204185 +1698120 +2400679 +2400684 +552881 +1926916 +812469 +812443 +100799 +2006705 +1698122 +812485 +2502861 +2502877 +1741091 +812472 +1438324 +1229313 +2276533 +1057147 +2009158 +1926924 +698215 +2340435 +324292 +499091 +2502862 +2340439 +499093 +22770 +1257469 +1582453 +1116945 +2502885 +2668547 +1758779 +2340425 +1582451 +2204186 +22773 +254979 +1257453 +1758783 +2019411 +1758787 +1280216 +1979540 +812478 +2668557 +1384099 +1964485 +100805 +2502863 +762768 +1582476 +1335612 +1257461 +812458 +812487 +2276530 +1116937 +1582512 +1164612 +1758770 +1229318 +1582490 +1229335 +2502889 +2610387 +425511 +1051176 +1438320 +2502883 +1335611 +2204204 +1838891 +762777 +2204200 +929011 +1640935 +1229315 +1229324 +1257459 +2204206 +1888188 +1264857 +286826 +482920 +2502895 +2668568 +2757937 +976868 +100868 +2502934 +2502927 +552969 +1193147 +553003 +1926991 +655247 +246001 +454550 +2204260 +100920 +2542060 +552935 +100874 +812550 +225008 +2668595 +296982 +1818497 +1926972 +255022 +454555 +1979551 +255023 +553001 +100881 +368882 +1019524 +2204238 +762785 +1888171 +947281 +2502936 +321963 +552932 +929035 +2340481 +2668576 +1438327 +100858 +2610437 +1097234 +100893 +1019536 +892314 +1335629 +1926940 +1582573 +381269 +552918 +1582570 +1838910 +2204271 +200273 +1507460 +2542057 +1888228 +1507418 +1649609 +1926971 +673543 +1280232 +1080672 +286825 +495076 +22800 +454556 +1019526 +1741107 +1116959 +552957 +2502938 +1140458 +2668615 +976886 +892312 +472087 +552913 +385940 +255029 +1888217 +2502908 +1888212 +2502919 +2610416 +2668605 +1438351 +495074 +1304885 +2732574 +552966 +1438347 +1438333 +1229362 +336650 +472090 +762787 +655240 +100828 +2204272 +321962 +385966 +336653 +385962 +1888192 +812496 +1335625 +2400696 +324309 +552940 +225003 +100869 +1926947 +482916 +1280227 +393119 +552930 +1808259 +1582587 +2044316 +698242 +812538 +2668601 +1080665 +1888207 +2204357 +2502930 +1247798 +2001778 +454548 +1116952 +812563 +1368023 +762786 +301954 +1507419 +812535 +2363598 +2094350 +211548 +2400694 +1926985 +1019523 +100905 +2340462 +100913 +2305363 +2400695 +2668580 +1888231 +2204341 +1888194 +2610397 +368880 +100880 +2610403 +552944 +2340486 +1280222 +2305358 +100892 +655241 +2400707 +1838903 +328558 +1741117 +1649613 +412147 +1926966 +350162 +1507467 +286837 +1507451 +976895 +1926965 +1069663 +2204302 +22789 +698260 +69713 +2204354 +22816 +425513 +2844519 +812576 +637035 +350161 +454560 +385946 +812570 +1507420 +1741120 +324298 +385935 +321964 +698222 +385926 +2668602 +286838 +345041 +499099 +812540 +1679265 +1888178 +552928 +698258 +2340483 +412142 +1582535 +1582523 +1229340 +2713177 +2094348 +1019522 +1507465 +2400692 +2502923 +1888218 +2701850 +976884 +1582578 +2502937 +1888182 +2610446 +495072 +726334 +2872208 +553103 +1438367 +1438360 +2363610 +454562 +812692 +976924 +1507494 +1979733 +2811018 +2610483 +1097270 +1979635 +1741185 +2692719 +1888342 +2204509 +1979687 +1979722 +2811015 +1756556 +637072 +1359024 +1582650 +1297466 +2668690 +655365 +812665 +637085 +183398 +1193163 +2204549 +1979557 +553202 +1979728 +2400739 +553266 +2363622 +1979637 +892323 +1582592 +1193184 +2861246 +1715106 +1280278 +1741224 +637068 +2713210 +2610602 +2542091 +1116993 +1358991 +1838964 +812603 +2400806 +1047029 +553198 +2610515 +1888263 +1888338 +1032380 +553259 +1335719 +2542099 +1649679 +1582614 +1888357 +183421 +2044342 +1193179 +183397 +2872184 +655433 +553029 +2872212 +553319 +655311 +929052 +1032445 +812678 +553314 +2400840 +1707371 +1979596 +183412 +2400782 +1304899 +745449 +553241 +2400800 +2610516 +1193167 +1741163 +1582687 +655415 +2610571 +1507469 +1117008 +1927024 +698296 +2280019 +929039 +812685 +553301 +1649671 +100944 +2685846 +2861239 +324321 +381273 +2668650 +2610573 +1117015 +1372676 +1479552 +1507484 +1097259 +2001783 +2204449 +812619 +1649651 +1044098 +637188 +2610554 +1649653 +2872161 +100940 +1280288 +1335680 +1117020 +553234 +1979626 +1741244 +1649658 +637120 +1229383 +2610502 +553258 +1838966 +553265 +1715091 +1582623 +637119 +2204436 +1715096 +1335712 +1582611 +2610480 +1640952 +1649672 +2668648 +812695 +698320 +553137 +655406 +2668661 +726294 +2363626 +301956 +1979718 +2872146 +637189 +1649652 +655249 +2204360 +2363625 +553093 +2732581 +976904 +1297477 +1715099 +1888323 +1368033 +2668722 +655290 +655254 +1438364 +553061 +673544 +1964498 +655273 +637117 +1044088 +1888359 +1280296 +1032381 +1097237 +1358932 +655330 +2610567 +2400771 +1117010 +1507498 +1838927 +1582605 +1979681 +1359001 +2685848 +553014 +2872171 +1229385 +2305365 +1888234 +1838931 +393128 +1368044 +812696 +2692721 +100958 +1964500 +1756554 +1304923 +655332 +1032432 +1193173 +2692722 +2400811 +2363618 +1979729 +637082 +1359027 +1979670 +1979582 +892367 +2732593 +655405 +1964505 +812617 +1359029 +2363630 +2400817 +1756551 +1359046 +2872206 +2610560 +183379 +1335679 +892365 +2044322 +1952106 +2204411 +1888346 +2872205 +553215 +553171 +183414 +1368043 +655350 +381277 +1304942 +655397 +1304924 +1979684 +1358942 +1927017 +1359051 +1024068 +892392 +2668657 +637054 +2610568 +100941 +2685824 +69715 +1193168 +655270 +553052 +1758794 +655291 +1280290 +183411 +1979654 +637050 +2610527 +1438384 +637086 +2204542 +385976 +2363609 +637095 +1888354 +553209 +655319 +1979672 +1335703 +393135 +2701866 +1649667 +892384 +2204437 +553122 +2400776 +381286 +553239 +385974 +2204519 +2610638 +2340504 +553134 +1838961 +324316 +1152562 +1280343 +1358960 +553095 +1438356 +637183 +1654565 +2610528 +2732594 +2692716 +929041 +812634 +2872235 +2692693 +812599 +553247 +2668688 +1280356 +1979633 +1280352 +2872181 +655271 +1582664 +812602 +22825 +2204371 +368889 +637184 +2668645 +1047035 +1979736 +655369 +324329 +2204425 +812657 +1741214 +100934 +1979713 +1582697 +2044320 +381283 +2400766 +553115 +2610632 +553085 +1304915 +1926999 +2204491 +655338 +1756552 +1741189 +1741205 +2400803 +655312 +1229375 +1280360 +553231 +2204412 +2610609 +1640944 +637144 +1032405 +1649702 +1044107 +1019545 +2400844 +553047 +1297476 +812606 +2610587 +553152 +1927009 +1979679 +655363 +655289 +2400737 +1106447 +183420 +2610595 +1979619 +2668710 +2668623 +2668630 +2204531 +892361 +2610507 +2610612 +2400778 +553227 +1741219 +2610604 +1297464 +2094353 +2276544 +1280357 +1715088 +2276561 +1979706 +2204505 +698315 +655390 +1304919 +183399 +553279 +1335726 +225021 +1649707 +553057 +1952104 +1888334 +2276553 +1741235 +655303 +2626617 +1979639 +553147 +2610513 +655413 +929036 +1280308 +1991262 +1280362 +1582651 +637141 +2542098 +2668643 +1888314 +1044089 +1927030 +655258 +1721194 +1888311 +909137 +2713191 +2610598 +1649663 +637098 +1280303 +1888267 +2692725 +655400 +1358976 +812625 +2872162 +2692712 +1649630 +1097279 +1130926 +381296 +637241 +976932 +637287 +1582731 +698342 +2668759 +322035 +1019602 +892484 +255039 +2668753 +1906435 +1410176 +183467 +1758813 +892490 +2668806 +1969688 +1582780 +1130923 +69730 +892395 +1808269 +322036 +472095 +2610666 +1641001 +1640980 +1888403 +726343 +183491 +1507511 +2668794 +2757949 +1641013 +2668758 +1479573 +1032457 +322059 +1979750 +301975 +183465 +1979753 +1969702 +2668795 +1438411 +2610686 +2204552 +1193200 +100974 +322007 +1019569 +1128735 +2668784 +1044135 +1130927 +716922 +553404 +1117036 +2668783 +2757956 +1128748 +1927070 +1019607 +1176637 +1684716 +637251 +892473 +2610673 +246027 +349537 +322063 +2610710 +2610679 +381310 +2626624 +655442 +1406479 +1888373 +929064 +1582776 +495087 +892503 +2668787 +183506 +637214 +1640957 +1345555 +2748798 +947301 +322057 +1019590 +439375 +2732609 +1044131 +1969690 +1888363 +1888366 +1088367 +1888393 +246024 +1927069 +1173475 +1019561 +2610662 +1582730 +812708 +1707375 +1640984 +1715128 +1097278 +771037 +1582729 +1479571 +637263 +2542106 +929069 +553401 +553389 +322034 +2400873 +2204556 +1128746 +393137 +2340514 +929077 +1741266 +2400922 +1640983 +1229418 +892407 +892393 +2542105 +322023 +1097273 +322078 +381316 +393140 +2668772 +771038 +1044149 +1640988 +2668812 +2668754 +1117050 +1479592 +1582783 +296985 +282300 +1479579 +1888369 +1044117 +1019599 +637255 +2400940 +1641004 +2610681 +2610667 +385993 +1906454 +2610694 +1117034 +1359060 +1247822 +324339 +385988 +1019597 +2610699 +553372 +733657 +69723 +296990 +1927061 +892467 +771046 +2610677 +2757959 +1654585 +2400876 +1741257 +553405 +637261 +1641005 +69741 +892431 +183492 +1721214 +1410178 +2610697 +2549790 +1964523 +322045 +2204553 +183480 +322092 +1654581 +381292 +495081 +2542104 +1205272 +1756566 +1247810 +1106458 +892485 +2610657 +381303 +812709 +1117051 +322086 +2400878 +1076041 +1698159 +1582745 +2668750 +2442268 +812734 +1130924 +1368058 +2400932 +2094370 +2400971 +2276579 +2204798 +2668885 +1297508 +1707378 +553449 +553505 +762809 +2610887 +2401115 +1438440 +1741338 +2204851 +1927103 +2610811 +1097315 +2668928 +2204661 +1280390 +1927209 +1839036 +255049 +1229434 +1927106 +1582926 +637312 +2610846 +1507567 +2400963 +1280404 +2668936 +420533 +2044387 +2204699 +381329 +2204636 +225028 +812832 +1698176 +2340586 +472130 +425520 +1032505 +454577 +1229543 +1927158 +1264886 +2400975 +2542123 +2204702 +2066112 +1507542 +1582927 +439399 +1839000 +1582935 +2668905 +2044414 +1229454 +1888433 +1715133 +2044393 +2204672 +1507545 +381339 +2400956 +2204678 +1229480 +812749 +1335776 +1507526 +1247859 +431386 +1721234 +2401055 +1582956 +2401087 +1888469 +1264898 +69758 +2204644 +1507560 +976948 +1257495 +2610777 +2401058 +2610800 +1044160 +1888463 +2542124 +472108 +1582913 +381325 +322102 +1741290 +2044352 +637302 +1507528 +381338 +1582864 +2204690 +1782197 +2668934 +1741322 +1888455 +1927134 +2610861 +1304952 +2610848 +2400980 +454570 +1888428 +1257493 +1032476 +1684721 +2610896 +2668882 +1507569 +503154 +1888487 +1741324 +1335751 +1927216 +101014 +2668946 +2610869 +2401065 +1257504 +1257515 +22880 +1264863 +1888438 +1582949 +1649727 +1582922 +1193239 +1582910 +2363646 +2668895 +439390 +22920 +1247876 +812799 +499107 +2276596 +1582925 +286892 +361625 +2400999 +1205297 +1927190 +1229553 +503136 +1927093 +1507572 +1846820 +2668913 +482933 +1582946 +2401028 +336657 +2400995 +1846819 +553494 +1839007 +1247851 +1019643 +1582832 +1969708 +22871 +1257488 +2204819 +2668838 +431374 +1257509 +350186 +2502989 +1247879 +1176638 +1888499 +1264880 +495130 +2668820 +812787 +368911 +2204830 +2204843 +2701867 +2094367 +2442269 +1741295 +2276595 +1097297 +1927173 +1176641 +1229439 +1888450 +2401029 +472135 +2626650 +2668869 +495124 +2610825 +2204578 +2668849 +286868 +2668886 +286850 +495115 +1193213 +1257480 +2668850 +2610761 +1438433 +1839025 +1264887 +1838992 +322106 +1507517 +1406484 +1582838 +812782 +2401002 +2340555 +1582890 +1130960 +1582853 +69751 +1438436 +1130946 +385999 +1247864 +1229505 +356207 +1839006 +553447 +2401056 +183534 +322117 +1964548 +1097299 +1649756 +2204627 +1808271 +2502970 +1582904 +1032500 +2668949 +2204762 +1264881 +22924 +1229554 +183536 +2542128 +482937 +2400993 +431369 +439398 +1582883 +2204770 +1582984 +1906462 +381328 +1582980 +553455 +2668816 +1229517 +1927206 +1715137 +1888515 +1741287 +69769 +503145 +812800 +1117057 +472115 +1280405 +2204685 +2204571 +2204807 +2610766 +1193235 +2340532 +2044408 +1741328 +1582861 +2204684 +1808279 +472124 +2668924 +2626667 +553526 +892547 +1097296 +553450 +1229442 +2204592 +1758818 +101032 +812764 +1507515 +1479605 +1088370 +1229536 +2401008 +2610756 +22900 +1715169 +69755 +2204646 +1280392 +439387 +1193254 +431373 +1264890 +2610882 +1582807 +2400984 +322116 +2204795 +1888496 +1582862 +1888429 +412152 +1438432 +286899 +1130952 +1164618 +2610879 +2094387 +1193242 +1264869 +1229479 +381332 +1130943 +1649762 +2668846 +1927156 +499105 +1927210 +2204733 +1758823 +1257479 +1741307 +101005 +1257514 +2668867 +297016 +2204706 +2204647 +1024079 +976956 +1335761 +2204648 +2204846 +1684719 +2542107 +301982 +1888564 +2204588 +1979760 +1888533 +2019420 +200278 +892544 +350196 +420532 +1117067 +1582923 +2204713 +2668827 +1229433 +2542130 +368927 +183533 +2668890 +1979758 +22896 +1582881 +2610870 +1888414 +101029 +1582933 +1741333 +698376 +2610881 +2400982 +1345557 +2204691 +322111 +2610741 +454575 +2204796 +2204584 +1247855 +2204728 +929126 +1938735 +2204640 +2668822 +1927096 +1264864 +1032483 +1582873 +1888457 +2094365 +2542132 +2610862 +1649743 +2401040 +553495 +22868 +454572 +482925 +2305381 +1257500 +698365 +1106471 +1044169 +322123 +2861273 +2872253 +2542135 +1888642 +1247884 +1888644 +553590 +698408 +1979785 +2692744 +1024086 +1140464 +302003 +454594 +1582989 +1741408 +1372695 +1649772 +1741409 +750160 +1205306 +1280429 +726352 +976961 +2401136 +183556 +1649778 +2668987 +739251 +2692742 +322129 +1019663 +69773 +2610950 +947319 +2610949 +1335790 +1741361 +1964569 +929132 +1392519 +2610934 +1264918 +1507584 +637329 +1758836 +1032528 +1741372 +1117093 +1888620 +1359095 +2276608 +431393 +1019660 +2610954 +929137 +1372698 +762815 +2610973 +1758839 +2610935 +698402 +1019657 +381348 +698394 +386012 +1229581 +2610966 +1991279 +2861281 +225041 +698395 +1117084 +2872257 +698396 +2861268 +1741391 +1264917 +1359097 +762816 +1280422 +2204859 +929153 +1479615 +2872240 +1758845 +183574 +1964566 +1402831 +1582996 +2401132 +553561 +2861263 +1979796 +1019656 +698399 +1756586 +1741401 +2757969 +553575 +2748803 +1839061 +892575 +1888639 +1741363 +1649776 +1583019 +812835 +1583014 +1359100 +2668980 +1032523 +892574 +1397207 +1229570 +1088373 +255055 +1117102 +2748802 +101046 +1019658 +553559 +2692743 +1964555 +1741405 +2610958 +1741400 +1582993 +655452 +1964554 +1193262 +1888611 +2204853 +553538 +2401134 +1756585 +69775 +1047048 +1756584 +1583010 +2610923 +2872242 +183548 +1130967 +2280020 +2204869 +1654596 +368930 +553564 +2668981 +1715179 +553566 +1193258 +1335799 +2204855 +2872243 +2066113 +1684723 +1117107 +2204902 +1193279 +1044176 +2610912 +1280451 +892603 +1888670 +812892 +1335827 +655487 +1019668 +2094403 +1641035 +1927239 +553653 +637415 +1888718 +1927240 +2542145 +1888698 +929174 +1808290 +1152568 +2204966 +2611004 +1097358 +655495 +2044422 +2732630 +1583097 +1888740 +1888650 +2363653 +1117114 +1438485 +812907 +726360 +1368079 +1906484 +183628 +1979807 +2610995 +637386 +1964605 +1641036 +2305392 +1888681 +1888726 +553609 +2626681 +1097349 +929166 +1193299 +2019424 +495139 +553689 +976992 +1097350 +1758851 +2611036 +101086 +2204920 +2204954 +553607 +655470 +698435 +976998 +1097369 +2811021 +2732645 +1583041 +2611053 +101057 +812893 +1117131 +1335820 +812876 +2276618 +1927262 +2401155 +2669001 +655497 +2276616 +1583030 +368937 +1741426 +2094402 +2204949 +1964581 +655462 +1583092 +1280454 +977006 +101088 +1741431 +2611060 +1684725 +2611019 +1698188 +655464 +1964600 +1888744 +2610998 +1888676 +553605 +1106490 +2276619 +1372712 +1359145 +655471 +1479625 +1888652 +1721241 +2204968 +183626 +2611041 +1888742 +1641040 +1304965 +1583050 +1715187 +1359149 +1964591 +553598 +2204958 +1438493 +1372715 +2732641 +673588 +1818515 +2611023 +2611046 +739254 +1297519 +726364 +1888663 +637385 +637396 +1927246 +2757975 +286920 +286922 +1641033 +1964602 +1032545 +553621 +101063 +454601 +1979803 +1641037 +726368 +698414 +2204936 +1097379 +2204947 +2503022 +1193290 +1438484 +2610999 +302008 +1438487 +1389217 +1741434 +1372702 +1888683 +1335823 +1888707 +255059 +1888709 +1583037 +1964590 +2611015 +892594 +1583054 +2610992 +2713242 +1335818 +553648 +553601 +1097383 +2542143 +553600 +929177 +183582 +637376 +2503026 +1229604 +183597 +2401163 +976999 +1583052 +1359112 +22939 +977001 +246045 +1117145 +655466 +2692748 +1507596 +1888684 +2205060 +1991285 +101107 +553768 +1583241 +1583183 +1438558 +1438503 +101120 +2340651 +2401192 +2401217 +1438532 +2205001 +2204992 +1888778 +977028 +2205080 +2340634 +553765 +1438500 +1438508 +101095 +2611091 +1438521 +929201 +1359173 +2401213 +1583224 +1152569 +2044426 +2401227 +1117177 +1438517 +1583193 +1979830 +2611069 +1583234 +1888759 +2205029 +1372716 +2401222 +368956 +977018 +1927358 +2401202 +2340635 +302016 +2401252 +2001798 +1280484 +2205030 +1715202 +1741447 +1280511 +2401187 +1257546 +2340631 +2401218 +1927290 +1927346 +1927280 +1583240 +1280468 +1438547 +553749 +1927331 +1193305 +2204996 +101124 +2094416 +1927313 +2757985 +553740 +2204993 +812939 +1927337 +1888788 +1335858 +553800 +2732650 +1583177 +1979843 +2401236 +553728 +302018 +2713274 +1839071 +1080698 +2401212 +553737 +929205 +1583219 +2669017 +1438525 +1888748 +1583184 +1438559 +1927297 +2669058 +1280493 +2757979 +1888775 +2701891 +1888756 +1979839 +2503041 +1927348 +655509 +2611125 +2204994 +1583215 +655508 +1758859 +1047055 +1280524 +1280461 +553698 +2611114 +2401211 +553714 +1117174 +2669072 +2611124 +2401251 +2094407 +655511 +2713276 +1991287 +553799 +368954 +225049 +1583174 +1130980 +1280496 +101115 +101114 +929200 +1438557 +2669027 +2611106 +1927302 +1335847 +1698196 +929195 +1335856 +1839075 +1359171 +812941 +2811031 +1583226 +750164 +2503031 +2009174 +2205013 +1335859 +1888769 +977054 +2340627 +2757990 +1888821 +1280541 +2701892 +1679309 +1438578 +812970 +1943623 +2044438 +2094447 +2006717 +1964638 +977082 +553809 +22950 +977071 +762831 +813025 +2669113 +2044432 +2205214 +2503096 +2205200 +1979854 +1839094 +2503069 +2205209 +2205187 +2094429 +2205155 +431397 +929211 +2205116 +553894 +2205152 +1507634 +1927375 +2205221 +2503059 +1229631 +2276633 +977079 +977069 +1741490 +1808308 +1335879 +2669083 +553877 +1888807 +1389227 +1229637 +977078 +1359189 +1927403 +977094 +2094443 +2611136 +2094433 +1782202 +2427115 +1698208 +2669120 +2205213 +929225 +553867 +1117184 +2205204 +2205128 +1979860 +553846 +1979848 +2094421 +1280537 +1758863 +1164623 +2340711 +553862 +553805 +2305410 +2205133 +553838 +101145 +2340704 +1359188 +1698215 +2205207 +1927381 +1888810 +1888795 +2340672 +101138 +1964639 +1741496 +553844 +286925 +1372731 +1839088 +2205115 +812967 +2205159 +2276632 +1808315 +1304992 +2669090 +553835 +1229648 +1808317 +101159 +2205235 +2205122 +2094424 +929212 +1839108 +2305408 +655531 +553821 +101134 +2205254 +1927367 +2503057 +2205167 +2205118 +812973 +698459 +1964640 +2401286 +101131 +812966 +698469 +2713304 +1173484 +22949 +553892 +929214 +2503066 +1808313 +2205225 +2713309 +2205114 +977058 +2401283 +2094423 +22957 +1758866 +1741494 +2669102 +1698216 +2205247 +1839095 +2205130 +977084 +2811040 +1117242 +2611172 +698486 +1097407 +22971 +1507640 +553912 +929248 +2748817 +1229668 +1583285 +1888859 +1927440 +225060 +1741510 +2503108 +1044183 +393169 +345066 +1152572 +2503101 +2340717 +977104 +22969 +2503109 +2542178 +1927439 +1173490 +2611194 +1069671 +101207 +2844546 +345059 +2758000 +1979874 +420545 +386054 +1927427 +1927436 +1335906 +1741505 +1057156 +553913 +2669129 +386048 +1768050 +412157 +1176650 +1964641 +1888858 +345061 +101215 +2205328 +2611160 +2205267 +2024770 +22966 +386050 +1927434 +2205318 +2442287 +302021 +1839119 +1888843 +1839125 +977102 +22964 +2872260 +813034 +929266 +1888864 +1097404 +929249 +813044 +381364 +977108 +1649796 +739264 +495141 +1507648 +386071 +1583297 +2503111 +503170 +1117233 +553907 +1229656 +553928 +1205316 +2205274 +1097400 +929253 +2205298 +2844543 +2611163 +2701901 +929235 +1808324 +698484 +499141 +2276638 +745466 +2611195 +412159 +655537 +2713313 +386056 +2205462 +1335939 +1097427 +2669154 +1741535 +2205512 +1741549 +1846830 +2205374 +2503243 +2669271 +2401300 +2401316 +1583419 +1229725 +2340762 +2503125 +2205514 +23007 +637446 +1117285 +1247889 +1888990 +1140476 +2205452 +698538 +929307 +1486086 +2669258 +2401290 +1808353 +1410186 +1229746 +1927489 +1335947 +1583402 +698540 +1264936 +2669224 +1964647 +929288 +2669159 +1583347 +1741563 +1782210 +655540 +1698261 +1359203 +1758882 +2503167 +1888944 +1117246 +977164 +1229708 +553958 +183664 +1335968 +1193403 +1839143 +1335943 +2611245 +977147 +1032589 +431421 +1758875 +23002 +23027 +2401336 +101283 +2669236 +1758871 +1507666 +739268 +183740 +1583383 +454654 +2305426 +892624 +813100 +1964648 +1193362 +2503206 +2542192 +101276 +2205475 +1888938 +1359198 +1229736 +101228 +2611203 +386076 +813074 +322149 +439422 +23029 +368967 +977140 +1229741 +1679335 +183722 +1927512 +1889040 +698534 +739267 +1698228 +1019706 +1758883 +2205463 +1889070 +1756588 +454660 +2669286 +328568 +1839126 +1583386 +1128769 +1698230 +553989 +2503231 +2503160 +977114 +2611271 +1229734 +2611240 +1927514 +813093 +2669277 +1335965 +2669262 +1698235 +2401324 +1741588 +1229678 +1758873 +1280576 +1280562 +1888964 +1229750 +1846831 +1583534 +2205428 +2401345 +2669281 +2205500 +1888969 +2305422 +1583339 +1335970 +1117288 +1486094 +454640 +1741544 +1583426 +1335934 +101271 +698531 +1889058 +2626684 +2503230 +1927523 +1229711 +750175 +771070 +183696 +1378755 +1131012 +200300 +637452 +1044187 +554000 +1229715 +246048 +977158 +2669272 +2205479 +101278 +1130996 +200304 +929297 +1297525 +2094469 +1335946 +1583331 +2542190 +101238 +1964642 +2669152 +1583365 +454650 +1117284 +750171 +1229727 +1164635 +2340764 +771063 +2669192 +1335942 +1641044 +977134 +2669141 +2611259 +637425 +1889044 +1086917 +2669220 +2542184 +2094464 +1389237 +1715227 +2401287 +381368 +929294 +302027 +368960 +1280566 +2427118 +892628 +1229740 +1927486 +1257612 +386078 +183667 +698506 +1741573 +1889014 +2669288 +2205466 +2503261 +1097417 +2401289 +472153 +2401323 +431415 +698535 +297022 +2611258 +1839167 +1117261 +1205322 +1888947 +1229680 +101268 +1741534 +813099 +1698266 +554005 +101287 +454647 +1019694 +386073 +1741554 +1264925 +2205498 +2611266 +1583384 +1297522 +1280570 +1117265 +2340806 +23036 +1808345 +813084 +183742 +69805 +1372744 +2503239 +183737 +1193360 +69795 +2503144 +23008 +454642 +69788 +1479631 +1839150 +1257599 +454677 +1173495 +739266 +225072 +2205492 +977171 +1839179 +2758005 +69782 +1131009 +101220 +553940 +2340768 +1164647 +1583532 +322162 +1402839 +431422 +2205414 +1229707 +183697 +947327 +2669210 +1264926 +2503137 +1808339 +2503257 +1193371 +905480 +2401353 +1583489 +726403 +2205361 +2503190 +977169 +553976 +1741542 +1117252 +1943626 +2401322 +1097428 +1117275 +1335962 +431425 +739274 +1698272 +454668 +69801 +554008 +368971 +1257586 +431411 +1583401 +1839171 +1335917 +2503161 +1889061 +1927475 +2669257 +1229702 +1047057 +2363669 +977122 +1229726 +1839165 +1741532 +2503141 +2205367 +1257588 +386077 +1888917 +1247894 +739278 +1229697 +637432 +1839134 +2401339 +1888983 +2542208 +2205549 +1507751 +554052 +2503287 +1229817 +1507674 +2503273 +101336 +1117322 +1117338 +1889113 +1839214 +412173 +1964654 +1889158 +1583568 +2401362 +1247906 +1846834 +1229833 +1019713 +1707388 +1507753 +101298 +1229815 +225094 +286950 +554071 +1839210 +1583543 +977181 +2205544 +1889141 +905490 +2205566 +420565 +1088380 +1889150 +1782228 +1402843 +1335986 +2305441 +200305 +1839219 +1839197 +454704 +1359232 +328571 +2205532 +2611336 +1820982 +1889099 +1097444 +1889089 +1019714 +1507682 +1359231 +1397212 +2748824 +1193423 +554079 +282339 +482964 +1649800 +1649806 +1507719 +2401366 +2611315 +1583558 +1032598 +1097467 +472195 +1889112 +101333 +1229776 +977178 +2442304 +1889077 +1507724 +1372749 +813112 +101319 +1229791 +1665727 +2205614 +1741613 +1229769 +1889085 +2741663 +929359 +637470 +2205583 +739282 +255140 +2401380 +1193428 +2340815 +1097462 +420564 +2401387 +1583566 +637467 +739283 +750178 +1117330 +1583535 +2205611 +431443 +1097469 +1097468 +1117352 +2401384 +655554 +322170 +977187 +482958 +554024 +1359225 +1507734 +1117318 +425531 +1839238 +1889145 +2205597 +101344 +1193434 +2611301 +495163 +1069680 +813131 +1335988 +322169 +2611308 +554040 +1247914 +23052 +255118 +225085 +2205534 +1335991 +1247910 +393172 +2205599 +1097432 +1698281 +1057161 +2442301 +225089 +101308 +1889087 +1507712 +2205585 +2205554 +929345 +345070 +255127 +324370 +2611334 +101330 +1782227 +2741667 +2205593 +1768058 +1097451 +655557 +2205571 +499151 +1507704 +1964658 +101328 +2044445 +1378757 +2340818 +1117320 +1247911 +1889137 +1808370 +431439 +1820981 +1019716 +554015 +282341 +554034 +1507735 +393179 +698581 +1229823 +1889114 +23051 +425535 +2741664 +345076 +1741616 +1229787 +1051181 +1706383 +1927552 +1264946 +554019 +1927554 +726419 +1889097 +1839190 +23040 +1032593 +2611309 +2758016 +472182 +813118 +1389249 +2401373 +101345 +2205590 +454705 +1378756 +2205560 +1979880 +1839221 +2205526 +1927568 +2205612 +101342 +1507709 +726424 +101313 +2044447 +503176 +1507732 +1889093 +431429 +1943627 +929421 +1297530 +2044474 +1336072 +2094531 +1952129 +2669365 +554314 +813213 +1507820 +1707429 +1193539 +1943631 +1336122 +2205770 +554313 +2205754 +1336165 +554225 +2401443 +1097535 +1649838 +2861320 +1280652 +2044456 +286984 +554378 +101381 +1438687 +2205769 +1097537 +2401395 +1389253 +554269 +905495 +2044500 +1193541 +1964719 +1979919 +1336141 +1889176 +637477 +2861370 +1707391 +1707439 +1097499 +2340825 +1117359 +1820986 +554281 +554279 +1097538 +1336012 +554165 +23132 +1438678 +1117376 +1280705 +1097516 +2276682 +2205736 +302051 +892668 +554404 +2692773 +1176663 +1280764 +2542212 +1438680 +1280732 +813183 +1336006 +1839308 +1715246 +2094493 +2205679 +1583601 +1336126 +1280693 +2044494 +2205786 +1193441 +356218 +1336005 +771074 +2094502 +554104 +1193488 +1943638 +554285 +2701944 +1964684 +1280633 +2401479 +554178 +813260 +2205644 +1280735 +23162 +2669352 +322174 +554293 +1280600 +929404 +1839256 +2542276 +2861285 +1649823 +2401474 +1839323 +554301 +554161 +431458 +554085 +2692775 +1336042 +2205781 +554180 +2205758 +1193477 +2401471 +1507779 +2205652 +554129 +1979890 +739287 +1889171 +2713337 +1839246 +2044461 +698624 +2401441 +1359267 +1438606 +554287 +554303 +1839325 +183806 +1097491 +23127 +1679361 +554170 +431463 +2669354 +1438679 +2611364 +554122 +2701946 +1229846 +2276693 +2340830 +1707407 +1032635 +554239 +1032634 +929375 +1979896 +386105 +554224 +2701927 +2044483 +554114 +1715253 +1583580 +762853 +2205740 +1097488 +2542255 +1741655 +554276 +2542272 +1438649 +2009187 +813159 +698603 +1839303 +554171 +554177 +1378759 +1173511 +1741640 +2713331 +1280655 +2861345 +2205631 +1406499 +1839274 +1280686 +554231 +1032632 +1336088 +286993 +1964692 +1280725 +1964731 +1839250 +2205778 +1438670 +1715268 +2542264 +286974 +1229859 +286964 +2401446 +1715258 +1280759 +431459 +2205788 +23111 +554309 +101448 +2401401 +369005 +454714 +101453 +2094474 +1280704 +2861296 +23097 +2276675 +183805 +1086936 +1193527 +386111 +813225 +1229852 +1032620 +554382 +1032616 +2701939 +554254 +813189 +554173 +2861317 +2205734 +1979891 +554232 +23106 +2861357 +554100 +554096 +286968 +813230 +2205690 +1486108 +1193452 +1889177 +813229 +2401405 +2713333 +2861289 +1280760 +554132 +2542238 +2861392 +2542211 +1280631 +369006 +1280619 +1336045 +2861364 +2669344 +1032628 +2701947 +336679 +1438660 +1707442 +1839326 +554274 +2861339 +2401434 +23098 +554423 +454706 +1336107 +2542265 +2094501 +2503303 +2713334 +745477 +554233 +1336132 +2205785 +929423 +698611 +2861315 +554181 +554335 +1964702 +655565 +69818 +1336015 +554221 +2401413 +1952134 +1438631 +554278 +1280660 +1336124 +929427 +1979915 +554087 +2401469 +1193512 +1336150 +1032614 +1280610 +1280624 +813193 +1839260 +554213 +1305019 +1782238 +2611518 +2611389 +2611570 +726483 +747532 +431511 +1359295 +1808392 +2340850 +454780 +1889266 +554437 +431515 +2027305 +637528 +101475 +2611445 +637558 +637598 +2611522 +393981 +1401726 +1938747 +1649852 +726484 +2442344 +454779 +2611462 +454725 +717016 +1359310 +225148 +1507842 +2066123 +2442409 +1205352 +2205886 +2205906 +2542317 +472394 +336709 +1345579 +1782231 +2442343 +2205823 +1336176 +2442404 +1205375 +2611384 +2044531 +381398 +381429 +2340852 +1698289 +183895 +454741 +754416 +2205828 +472284 +747483 +2542302 +483008 +673611 +2611508 +742631 +2001818 +472238 +1889306 +637529 +1368117 +637620 +726482 +183842 +929458 +726513 +1384144 +495194 +637689 +1927596 +1193571 +454768 +2205873 +1368114 +341765 +717004 +1706387 +1392531 +1069696 +336694 +69848 +637639 +747521 +472351 +2205796 +431523 +745789 +2611385 +637622 +183888 +482984 +255149 +472428 +381401 +1507878 +742693 +1927598 +2611536 +747463 +1782262 +637548 +2340872 +1392527 +2442371 +2611557 +637580 +412196 +341838 +431471 +717005 +716982 +1392535 +1969731 +336688 +472434 +369044 +341811 +1889216 +726489 +1889228 +2611510 +1247917 +1679367 +1991303 +341776 +726447 +2611455 +733721 +637672 +742695 +1583665 +2611380 +2542340 +454727 +716962 +1889262 +482979 +2611521 +717001 +1583618 +1522776 +454748 +1964746 +381434 +1280782 +69844 +1889341 +1359361 +716954 +341813 +454778 +1173523 +1359304 +1927602 +726449 +1715288 +1979962 +554478 +1706393 +472261 +472332 +742652 +929447 +1368098 +742660 +1889187 +1396153 +637584 +2340843 +2044546 +2270906 +2542301 +733733 +1698305 +637513 +1889188 +397853 +1507847 +397881 +1359346 +2626706 +726457 +1782242 +1193559 +2626700 +1684737 +2611573 +1969733 +1785563 +472256 +472407 +747484 +472383 +554472 +2611528 +2340875 +2009190 +2611495 +747534 +2442365 +726501 +2542318 +673610 +381424 +726448 +1808399 +2044532 +397864 +412189 +1664159 +929437 +2442390 +2542280 +637648 +341840 +754423 +431487 +2340867 +637531 +637510 +1297541 +1889326 +1069693 +1193550 +977224 +698673 +1152592 +454806 +1336205 +482986 +69846 +341777 +2340883 +393992 +2205878 +1889257 +1392892 +1193552 +698696 +2611452 +733681 +1392896 +472298 +101477 +2442313 +472413 +302055 +1345569 +1979959 +726450 +397877 +393190 +472444 +1906527 +183847 +397865 +183864 +2542330 +1715299 +1889227 +1782235 +637596 +754432 +341802 +341818 +1698299 +369043 +2442388 +1117392 +2427128 +183863 +2611499 +225136 +2066117 +747437 +1698312 +929450 +431477 +637650 +747426 +2205898 +2340889 +726507 +2001817 +393195 +2611427 +302061 +431534 +1396120 +472219 +1143942 +472442 +1080762 +2611386 +1400184 +742664 +1359331 +472320 +2340886 +472340 +2340839 +1641064 +2340877 +1927592 +717002 +397862 +1176666 +1229896 +716961 +1507840 +101482 +397858 +2626705 +754409 +2442389 +655577 +733726 +381423 +1583662 +1889239 +2205829 +637626 +183892 +2611514 +726464 +439474 +554455 +716993 +472322 +482978 +1889256 +1152594 +472362 +2001828 +183896 +183869 +2626692 +183845 +726435 +1889271 +2611467 +101456 +1979967 +1384153 +747446 +183852 +369046 +381389 +2027314 +1396128 +733695 +454801 +2044545 +1782240 +482985 +1297534 +716959 +246119 +745787 +2611417 +2442431 +1389261 +472205 +1389254 +336707 +1964766 +225123 +472439 +2542292 +2044530 +336683 +2442366 +381407 +745780 +1389271 +1193553 +431506 +2044543 +431475 +1359307 +1389265 +439479 +369024 +2442420 +454817 +747499 +1507885 +2442418 +1906515 +1396141 +554474 +1507857 +2611376 +1507859 +929453 +637671 +1384156 +472393 +637516 +302064 +1117399 +1839427 +1839345 +1927640 +1782284 +1839392 +2070771 +2205922 +412204 +1173536 +2401485 +23220 +1889404 +431570 +1229976 +1336216 +655581 +2503310 +2442488 +1097603 +2205932 +698728 +439498 +2611618 +2442441 +977232 +101516 +1889490 +2503331 +1097597 +2205975 +1889429 +1097602 +1305023 +2692789 +2044567 +1057201 +2713357 +2205969 +2542424 +1088383 +1679374 +2611667 +2205958 +1173553 +2611606 +431577 +2401483 +1698333 +1889376 +1715343 +1193617 +23199 +1583703 +1032658 +1193656 +2713360 +1889485 +1964775 +905526 +1768081 +1741685 +977230 +431554 +1378771 +2205963 +1173534 +454940 +1839431 +1664198 +101493 +328576 +2872265 +2758025 +1808439 +23224 +397903 +1839343 +1229933 +2284804 +101507 +454873 +328581 +1889347 +2611594 +1839337 +483015 +1117415 +1679381 +454908 +929531 +2001863 +183900 +1839374 +1768084 +1193640 +1889390 +1230022 +1345589 +1889354 +397902 +1583694 +2611638 +454880 +2611601 +2442459 +246128 +2713370 +929528 +698737 +2205929 +1741678 +1889403 +23210 +1927609 +2044570 +1193657 +454864 +431549 +2542401 +2611595 +698724 +2503334 +2205965 +1336225 +1927648 +1741665 +454872 +2442472 +1808432 +2044575 +454943 +2542357 +1583770 +2442457 +977256 +1051189 +2105214 +1229943 +2001852 +1927625 +2872292 +2205923 +1839355 +1486125 +1889426 +1679395 +2611624 +1117402 +2844560 +1193672 +1229968 +554508 +1839410 +1664195 +905534 +1032661 +2732670 +1839363 +23207 +813312 +2611670 +1839406 +2205977 +698742 +2542366 +1193643 +1173540 +2205956 +101495 +1821003 +2442489 +1051203 +1839407 +1336222 +2044572 +1808444 +1839391 +1051200 +1839335 +2695971 +726521 +101497 +1889363 +1808433 +1664203 +1378770 +1889475 +2611682 +1193655 +1698338 +2094546 +1808415 +1193666 +1097584 +2713350 +1152601 +1927612 +302068 +1057200 +554488 +1715322 +2611672 +813353 +554519 +1384179 +2844565 +1768069 +2542376 +2542391 +1889504 +1280786 +813347 +813336 +1820998 +1378768 +2669373 +2748832 +1927627 +698718 +1193654 +302074 +698725 +905530 +1782291 +1927637 +1821008 +1820994 +2872284 +1583697 +1889361 +1641074 +454935 +1964770 +1583733 +1839397 +1821020 +929502 +1438723 +454892 +1927645 +2669384 +2732661 +1583717 +1336220 +431586 +1839352 +454852 +225158 +1679396 +431555 +929486 +2669383 +225173 +1808460 +1097568 +1889447 +1782296 +2503314 +2626719 +1583758 +1889458 +2442480 +2542365 +2542393 +1097615 +2276705 +1384180 +2611713 +1088384 +23202 +1583761 +328591 +1839439 +1821001 +1193626 +2611644 +356229 +2001861 +2692788 +2669379 +2844556 +1839414 +1821022 +454878 +1336244 +2669385 +1889417 +2669370 +1996885 +1664200 +1051191 +1889527 +225156 +1193598 +1051196 +1839359 +905528 +977242 +2713376 +2872383 +1406507 +2205991 +637732 +2270926 +892766 +1938752 +2872298 +2270927 +1438740 +2044594 +499166 +1964785 +2683211 +2305474 +2276711 +1368133 +1583820 +637826 +637848 +2270929 +637788 +1032669 +1665737 +1205383 +1583861 +1583803 +2542440 +183909 +2542444 +637821 +1782298 +2024779 +637748 +1247974 +1583879 +1583806 +2094617 +2340931 +1641097 +813363 +892786 +2206014 +637842 +1170052 +2669417 +183935 +977275 +1247948 +1906531 +2685862 +1927662 +2206102 +1032665 +2206119 +892746 +1583834 +1106546 +1032672 +1583844 +2872305 +1649857 +381450 +1583779 +2206112 +1117418 +183936 +1247956 +1389280 +1406505 +2415143 +1938769 +637761 +2872368 +1336254 +1906540 +183957 +2363679 +2872332 +1715349 +2206012 +1106526 +1839444 +2206062 +1721267 +2013003 +2105229 +1019749 +2872336 +1721262 +1964786 +1706402 +2206086 +1949169 +2611762 +2611760 +2611756 +1156836 +2669403 +381456 +2401493 +2872378 +1741697 +813387 +1839458 +2340905 +2611751 +2690023 +2105220 +717029 +1247942 +1808470 +1230033 +2094593 +1438738 +637827 +369081 +2872315 +1170050 +1741699 +813365 +2683212 +1715354 +892757 +1969755 +255153 +637819 +1715362 +1097623 +1336259 +554536 +2205992 +1846842 +2206106 +2872342 +2669418 +1818554 +2611759 +2206117 +637717 +2695972 +1969757 +2611769 +673633 +813366 +2701985 +2094601 +1507950 +1839452 +1583878 +1583818 +2206075 +454949 +503186 +1889562 +1230063 +892756 +2340917 +2626735 +1406508 +183962 +717027 +1085777 +733766 +2542460 +287003 +2206047 +1964780 +1359388 +1698346 +1106532 +1991323 +892739 +1086956 +1721271 +2284809 +1368139 +2626720 +1479644 +2872371 +1991326 +637810 +1230031 +1345592 +2206055 +1257643 +2611748 +1839460 +1345594 +1995459 +472461 +1906534 +1019746 +1906532 +1345602 +1889568 +1264958 +892748 +733772 +499163 +2205988 +2206016 +1583847 +1583805 +101528 +2401505 +637704 +637720 +892747 +2363678 +2503354 +1583841 +2724570 +1583825 +2206041 +1372755 +929544 +1359386 +2415137 +1583778 +1368134 +2206043 +813379 +183928 +2611770 +1991331 +1583816 +1889556 +2206113 +1247953 +1247943 +1583853 +1264956 +381451 +637707 +1297559 +1583947 +2669425 +1507981 +69882 +341853 +1257655 +2401555 +977346 +1230081 +1706412 +369085 +813413 +1583893 +2503380 +813402 +1889622 +929563 +2503438 +2503426 +1032684 +1507964 +1389286 +554589 +1230141 +1019770 +1507972 +2611795 +1821027 +1839478 +454966 +101592 +1230078 +1583948 +2442506 +2844573 +2503360 +2503428 +184028 +412209 +69884 +2611815 +200344 +225189 +698763 +328596 +2611821 +483034 +2503381 +1507994 +1698368 +1080776 +1205397 +2305478 +2206147 +1821024 +2401559 +813397 +1106557 +2206139 +717036 +1583915 +369090 +1257644 +813454 +1889609 +2442503 +2044610 +1508015 +813429 +2503373 +1406509 +2669471 +929549 +1080778 +813394 +1684751 +2401543 +637869 +101563 +2401554 +341851 +439504 +1808475 +454962 +1889597 +1230070 +2503402 +184011 +200353 +1076068 +2401532 +2503378 +2669424 +2206163 +2701999 +1280826 +1230133 +1230134 +813418 +302095 +554592 +336722 +1345610 +1583902 +2611799 +2701998 +1230136 +1230129 +369087 +483045 +2611814 +1080787 +1979999 +1583905 +472502 +1479650 +977300 +1401736 +1230091 +2401540 +554552 +2692795 +1336272 +1889594 +1583981 +2611794 +1665739 +1906544 +472479 +554570 +1889653 +1032683 +2701993 +101570 +1230113 +2442522 +637871 +2669473 +1679423 +454958 +1508009 +637889 +2611785 +929586 +101541 +1080785 +2070780 +1741765 +2732680 +1584003 +892824 +1230142 +2669466 +1979998 +1069725 +1205399 +1741725 +101594 +1782313 +381461 +472487 +2811057 +322205 +637876 +1230137 +813407 +1782311 +1230122 +1684747 +1507954 +2070789 +23256 +1679414 +1117435 +2044606 +1698390 +1839479 +200348 +2611784 +23243 +1741732 +211606 +1019778 +302087 +1057202 +892804 +1170072 +1641101 +1156840 +431590 +1889576 +929565 +905550 +1889639 +282355 +813391 +255156 +929559 +1741734 +2503394 +726542 +813399 +2503361 +1152607 +369096 +1164661 +184015 +637866 +1785576 +1938777 +2503439 +69880 +929547 +1583891 +1080788 +1019797 +2280023 +2503460 +2305498 +1230121 +1097632 +1230092 +554582 +1230124 +698762 +977350 +813392 +2683225 +1715368 +813435 +1230074 +1889635 +101577 +356237 +762908 +2305515 +892803 +1782302 +2206165 +977288 +1698388 +1741760 +1247979 +977301 +200357 +740161 +2701989 +1230068 +1230109 +2070784 +101581 +1808488 +1991334 +554558 +2072124 +1906543 +184019 +1507978 +1839468 +1205396 +2305487 +101612 +302102 +2724596 +2702009 +1522807 +2024781 +1889657 +2401583 +101646 +2419426 +1698408 +2094623 +1336284 +2724602 +282362 +1889671 +892841 +302098 +1664214 +2278957 +1117453 +637923 +184052 +977381 +2206206 +69899 +2692801 +1257681 +184049 +1698412 +1991337 +287009 +2713403 +1889660 +1173562 +813554 +2363688 +23262 +2503465 +2503473 +2685868 +1230151 +637926 +2685878 +381470 +2206205 +101603 +1097643 +101645 +1889674 +1280835 +1641113 +2206226 +101625 +1943669 +1889661 +977366 +1106562 +2713391 +892842 +813511 +1839487 +1768096 +101617 +1741824 +1097644 +1839489 +813549 +2206284 +2206285 +905568 +69903 +1839486 +1230160 +1280836 +1980017 +2206254 +1205404 +2724586 +1964802 +554619 +1193706 +200361 +326070 +813541 +1193701 +1117459 +2401579 +554613 +2724607 +698787 +1741784 +1584048 +2724600 +69897 +2401585 +977363 +2724593 +101605 +892845 +2401589 +184058 +1032692 +1170078 +2305527 +1508047 +2724577 +813517 +1889656 +813485 +1508039 +2340952 +1438778 +1508041 +69901 +1584037 +554630 +2503470 +431606 +1164675 +101634 +2669512 +813513 +2206319 +1173566 +1741781 +2206213 +200363 +2401568 +2206323 +225208 +1097650 +101604 +1069736 +2669520 +1698407 +1508026 +184044 +2206258 +1679454 +1741814 +2206290 +813471 +1479655 +1943665 +1839481 +101627 +302097 +381489 +1741842 +892882 +2401598 +2872639 +1980032 +2683238 +1698436 +2206441 +554679 +637973 +1280870 +495225 +1927716 +905573 +2206412 +69941 +1964811 +698811 +2872541 +1839505 +255176 +1706422 +1741855 +2206334 +1808513 +1230204 +1264970 +495228 +326072 +1297575 +1097663 +2094632 +2006741 +2094634 +1205415 +1359441 +1641116 +2066146 +1698431 +1170087 +1641136 +1313888 +813600 +2341007 +1741841 +2872440 +1378782 +947393 +1106574 +1584126 +1080800 +1839503 +322218 +1584086 +431607 +554687 +2206415 +2872619 +1584113 +892876 +2872574 +1097659 +1698418 +2611891 +184092 +2626755 +23287 +1679461 +892857 +184061 +2872459 +771087 +1889697 +184106 +1641115 +1938782 +101670 +813576 +2872465 +394002 +554674 +2872450 +2683232 +2724618 +2206366 +892872 +892895 +69920 +2872560 +1584105 +2872393 +1679468 +1019848 +1584135 +1584145 +2872588 +1345617 +2340998 +2401609 +892908 +1438809 +2861403 +1927708 +1097665 +977438 +717070 +929627 +637972 +1019932 +2872562 +1584069 +1128813 +771089 +2872389 +2713418 +2611914 +255183 +2872479 +698807 +2872571 +2872613 +1372759 +2713411 +2340994 +1584146 +246171 +947382 +1641141 +1641140 +2024784 +23293 +554663 +1280880 +1019907 +2872675 +2626759 +2872448 +2503502 +2669549 +1889750 +1927725 +638069 +2284823 +184069 +977433 +2206445 +2669572 +2611864 +717072 +1508058 +813587 +472527 +892902 +1396165 +813592 +246172 +1889723 +1097661 +1117484 +1955111 +1257687 +2872636 +2872605 +495221 +637989 +1368152 +2542491 +2626752 +1706417 +638013 +2669536 +2094638 +733789 +2419436 +2363694 +23291 +2872567 +1019926 +892926 +393232 +184081 +2724617 +1359437 +101678 +2105236 +282376 +322226 +1345621 +2206451 +892852 +1117479 +1927700 +255174 +1080808 +638075 +1170089 +1297569 +977415 +638008 +637949 +1818588 +977394 +2401600 +2611905 +1889709 +638063 +2206430 +2844588 +1019875 +282368 +1684763 +1069741 +673659 +2872488 +1019853 +813614 +2872584 +2872513 +1479664 +1684767 +698804 +1019935 +324378 +184088 +69933 +2503500 +1889728 +2669542 +977425 +2611916 +282389 +892917 +698816 +637947 +2611918 +1019930 +1508066 +2872630 +1336307 +947386 +101667 +1741839 +1080804 +892889 +1741834 +698809 +1889730 +2872577 +1839501 +698810 +2872616 +1839504 +2206442 +341859 +2442549 +454978 +2419431 +638081 +1205429 +2305531 +184076 +2872481 +1684760 +638000 +1938781 +2206418 +1684768 +1980031 +1679463 +1649871 +1698437 +1508067 +2341022 +2401603 +1991341 +717059 +1368145 +717063 +2611863 +554653 +2872509 +1248013 +637956 +69926 +2872472 +638029 +2206393 +929623 +2872667 +1522809 +1438800 +1889710 +1193722 +1889743 +2683229 +483063 +1679477 +2503490 +2811073 +1698421 +69929 +726553 +1438791 +2206470 +2340955 +1584124 +1230219 +1808533 +2669537 +1479667 +733784 +637995 +813616 +184123 +2872412 +211616 +1230190 +1584152 +1085784 +2206410 +638086 +1019965 +69944 +1927745 +638085 +2206496 +2070795 +1479685 +947398 +1336316 +184179 +638088 +381502 +454989 +1889755 +2363702 +393255 +1019951 +892941 +638099 +1889767 +1193733 +282395 +255184 +2683239 +2611940 +1906560 +1584187 +2669581 +1584175 +947399 +2072126 +771090 +472550 +101690 +1280885 +2206506 +2206503 +2001893 +892945 +2284829 +1584163 +2070794 +341874 +813634 +472547 +101693 +1584180 +813621 +1336318 +1679483 +1140507 +1584167 +69945 +1584177 +1019942 +1097668 +638101 +69950 +638098 +698821 +1889751 +1584170 +1019967 +322240 +739303 +1584188 +101698 +1019973 +1230227 +1486160 +393261 +2206488 +1280883 +2206500 +184150 +892967 +2685881 +1486163 +2415161 +1406513 +2844613 +322255 +2844669 +1032718 +69988 +439516 +69989 +2861412 +1486164 +1964824 +2044655 +2401643 +69971 +638105 +1522829 +2401647 +1406511 +698825 +2872721 +2844634 +2844727 +2844593 +255193 +386127 +2872740 +2844672 +1889791 +246193 +1128828 +554699 +1032728 +1927751 +2027330 +2872707 +1839508 +1479701 +23329 +1438842 +1230234 +472563 +2844654 +977488 +2517965 +495239 +2861407 +69990 +1938821 +2517948 +2066154 +246189 +2542503 +184193 +977468 +2844604 +1019983 +2844643 +1020015 +813636 +184202 +1649874 +2690045 +23320 +554710 +2542505 +2861421 +431614 +1032716 +2844666 +929646 +1117497 +302126 +929651 +1117491 +1438844 +947404 +1438846 +2872752 +638134 +1782325 +184214 +1205446 +23325 +892982 +1230231 +1193742 +322247 +2872726 +638137 +2542501 +1649881 +2044664 +2094656 +2542495 +1698455 +1438839 +638141 +1359452 +1106596 +2094676 +322244 +977487 +2844719 +302127 +393263 +2844629 +1106597 +554708 +23319 +1257706 +282414 +638111 +2844730 +393271 +2844617 +184203 +977485 +2206525 +2341054 +184238 +211641 +929654 +1584189 +893001 +1378784 +2341053 +2206547 +472565 +1020027 +1170117 +412222 +2094681 +2611942 +1927758 +1193749 +1486170 +2305548 +397916 +1248036 +1020046 +905579 +2341057 +1889801 +255208 +1173578 +929652 +977502 +2702021 +1264980 +977506 +2341051 +1889795 +638146 +1170107 +1230253 +1769343 +1376767 +101745 +1193746 +1280890 +326080 +1782330 +813675 +1654617 +1584210 +1438851 +101722 +1808561 +2705737 +1076085 +813676 +69993 +1508117 +813692 +393291 +1080824 +1069752 +1889793 +1280893 +2442555 +2611945 +1170111 +2072128 +2070797 +2503535 +2341039 +2748848 +554711 +1782329 +1248031 +1248047 +2861440 +2206563 +184267 +1927771 +1336351 +101753 +2611958 +472584 +2206565 +2844793 +1297590 +1584262 +1698480 +499183 +813718 +1584298 +1741906 +2206564 +2341065 +2401658 +322261 +2206551 +1479710 +495253 +717106 +1584268 +2419441 +2105249 +472590 +1906571 +1698475 +454999 +1438855 +717097 +1044225 +1584257 +2844784 +225233 +1906569 +1839520 +2206558 +813717 +282432 +1345648 +893029 +2669609 +1980043 +495249 +101754 +813730 +1938830 +2401679 +1230272 +2415167 +2844749 +1117523 +2401678 +184258 +1336323 +2066155 +554730 +101751 +2844789 +1584322 +1584239 +1741890 +2305552 +1641168 +733793 +2844744 +1584264 +1248053 +673671 +1176673 +638161 +698835 +2713438 +2206555 +1584248 +326081 +2044669 +381519 +2305553 +2695984 +2669597 +2401682 +1336336 +1584232 +2669599 +2094703 +673679 +1032735 +1230269 +2341069 +1991357 +472592 +2844783 +2844768 +1438853 +638155 +1305053 +386135 +638180 +2305561 +1193758 +1230258 +1584260 +2861438 +302141 +184259 +1980051 +1741889 +1964828 +893027 +1927773 +1336344 +2094689 +287022 +2844770 +1584307 +101748 +698858 +393317 +1938851 +1257739 +1584413 +1170160 +726564 +2341076 +2669708 +341883 +1706442 +1164706 +2206582 +2206678 +1230328 +1170137 +554766 +1698540 +2206596 +2305568 +2503586 +1479719 +1584396 +2271000 +1698516 +1193762 +2206656 +184275 +1584350 +70020 +1706450 +977534 +1927803 +2044684 +977531 +1193759 +2503604 +1117542 +2612014 +1336354 +1230317 +1205476 +1230293 +1641182 +431630 +1117545 +1943696 +2724627 +1230326 +813745 +2515887 +472613 +2669709 +2206589 +977550 +184281 +1280920 +2626774 +2206636 +2542513 +1508143 +2206638 +2278960 +2206627 +1889831 +2872775 +328606 +655619 +2861443 +412232 +472601 +1170151 +905592 +431636 +2669705 +393326 +2872774 +1706448 +23356 +282438 +393320 +2503589 +1164724 +1032748 +554776 +554763 +499189 +2284847 +1088391 +1808595 +2442571 +977581 +472611 +184287 +2363718 +1097690 +977571 +1389298 +412230 +977536 +1230278 +499196 +1715393 +977523 +23358 +1938841 +2683250 +1706443 +1069767 +184274 +2503565 +2611989 +1020066 +554748 +2442573 +2070813 +1698513 +1906574 +947415 +1698532 +211651 +1257743 +455003 +1051211 +2669626 +2305565 +813768 +929675 +1032744 +2611990 +412227 +1230301 +2415172 +483110 +1205472 +813764 +1164703 +929689 +1889872 +638195 +412228 +1889859 +554762 +472612 +2669697 +1706457 +2503592 +977565 +1117535 +483088 +2669658 +1839527 +1264998 +1943697 +2341079 +1706446 +1508153 +1305055 +1479718 +1584337 +1584391 +1170171 +1818622 +1522839 +495265 +184295 +1044226 +1117536 +1479712 +1257720 +2206687 +2542535 +1808574 +2427164 +495263 +282437 +23355 +1193761 +2542527 +2206688 +483107 +2872782 +1205479 +2611997 +1170154 +2094716 +1698507 +1264997 +1889855 +1265001 +2669613 +977524 +2094719 +1170142 +1741921 +483077 +813753 +2872777 +472622 +1715392 +393319 +977560 +1927777 +2442568 +101794 +70008 +361648 +1230305 +2669622 +698859 +977549 +1280921 +1584384 +1698511 +554765 +2503620 +929669 +1818619 +1128844 +905588 +2206584 +2669679 +2270995 +1980053 +1584370 +977587 +1264990 +1248065 +1205481 +1230297 +1097697 +893032 +282442 +1698519 +813772 +1257765 +1336365 +2284849 +393316 +1698483 +200387 +2401702 +2542558 +2542542 +2669775 +813809 +2542552 +905597 +1698571 +101844 +813821 +977635 +2206710 +2503656 +1679507 +2094739 +2401728 +813779 +813783 +2363724 +1280941 +1508163 +184305 +1889924 +2669761 +23389 +2305572 +2094743 +2612031 +1698588 +1889901 +1438897 +1584460 +2669760 +1889925 +977626 +2206714 +23390 +1584463 +1839543 +200389 +2206754 +1584446 +2094731 +1032751 +2206763 +1336372 +2206764 +2612016 +771096 +455017 +2401744 +1889923 +813826 +2542556 +2669762 +2284851 +2027337 +813796 +1051212 +101816 +2206752 +2401715 +2276727 +1889906 +1839546 +2094729 +1964837 +101824 +23392 +2669770 +2669717 +1698572 +1698582 +2401741 +977596 +2305571 +2669758 +2612050 +2669757 +762940 +1280935 +2419446 +1889918 +2542537 +2206731 +1438906 +1741939 +1438909 +2542540 +2341095 +2669713 +813823 +2094741 +1438905 +2206766 +1438919 +1336377 +762939 +2070828 +762930 +2702026 +2341104 +2542544 +23393 +2070825 +1378787 +255238 +947416 +2401818 +905604 +698883 +698912 +483153 +1080829 +2732724 +1359494 +2401770 +2206888 +1230399 +698900 +1741956 +1032765 +1097710 +655655 +638307 +2503680 +381534 +813829 +1584597 +1782343 +2401812 +2206845 +2692813 +1230334 +1128846 +1698616 +1584492 +893062 +1117573 +2206816 +1889993 +336749 +2724649 +1839587 +1438927 +1106630 +1808632 +2206857 +472641 +2401780 +455066 +638264 +1193815 +2401765 +1889960 +2206839 +302163 +1117579 +554800 +2206891 +2503682 +929708 +2206801 +2713460 +1890015 +1359496 +1808606 +393332 +1193804 +369158 +184316 +2206899 +2206783 +1741958 +1584578 +1230425 +2206812 +1938861 +2844807 +1698605 +1230400 +1839571 +893061 +1756604 +2702038 +638252 +1384218 +977709 +1359489 +717130 +554854 +255251 +1020112 +1193787 +1230358 +1839562 +1205485 +23416 +977694 +638269 +1248077 +638311 +1117554 +101859 +23410 +1336388 +394013 +1808631 +1230361 +1584548 +1117577 +673703 +369154 +1889970 +2401797 +726570 +1020104 +70036 +1768111 +393338 +2206817 +1927831 +1927846 +1389304 +977673 +1698617 +638310 +1584572 +1230427 +2669812 +1400190 +977713 +369157 +1257800 +2669792 +977664 +1230410 +23409 +1396169 +1584510 +1230424 +2724639 +1193802 +813834 +2305603 +2702041 +1980062 +184380 +2206900 +1927835 +70034 +1230412 +2669815 +1839575 +1927847 +101877 +1927858 +381553 +1584593 +499211 +554793 +638257 +1839591 +1584517 +499227 +1890019 +638265 +638295 +2758034 +393343 +393331 +483149 +455041 +554874 +1679515 +2732726 +455084 +977710 +255246 +1927853 +101869 +2206858 +1584574 +726580 +1368166 +2724646 +1839569 +2612078 +2206913 +2442584 +1890013 +1782346 +977671 +1889947 +381532 +1080832 +2206802 +2206847 +2542581 +1584582 +1839588 +2341127 +1741957 +1927838 +1741960 +393351 +2363727 +184386 +554863 +2044691 +1996892 +184327 +638276 +2206826 +929725 +2206920 +1741959 +1584526 +2206808 +1741963 +1230419 +101864 +977706 +1890024 +1486184 +1088392 +2503685 +2401778 +483150 +1152630 +2669793 +1486193 +813835 +184339 +341891 +412236 +302159 +2542576 +638282 +1890007 +1721293 +1641184 +638319 +2705739 +1969789 +1230431 +893060 +929746 +2612102 +439534 +1584653 +1106641 +1336418 +1679534 +1906583 +211667 +1164741 +1890086 +472655 +1152634 +1051213 +1205494 +1117586 +813853 +1768118 +1205496 +1890044 +2206961 +2612118 +1890034 +2206935 +1584679 +2206949 +1808637 +1938869 +1584613 +1257820 +2206948 +2206944 +225275 +1205490 +302189 +200399 +2401831 +23426 +2861446 +225273 +1927891 +1230452 +1890069 +322293 +813871 +554905 +1117591 +717136 +184395 +739308 +1384226 +1808635 +1336431 +1741987 +431648 +1584652 +655661 +455088 +905610 +1808634 +1679528 +698932 +1522843 +1756605 +2669820 +2669826 +302192 +698952 +554892 +381556 +302191 +2206958 +1097728 +1818646 +698958 +2442591 +813866 +322294 +101934 +2341146 +1890088 +1584625 +1679531 +1117612 +1305063 +2612120 +1890056 +1938868 +1821967 +1890037 +2206937 +893066 +1389308 +1679523 +698963 +1230460 +2503695 +1368168 +2341141 +1890062 +2094760 +1193837 +1230478 +1741985 +1024131 +328610 +2341135 +1679524 +101971 +1378792 +2044699 +1808644 +1808650 +225277 +101980 +1839617 +638326 +483172 +554900 +1032786 +929754 +813852 +1230458 +698927 +255254 +1808659 +2872791 +2206975 +2415183 +1927922 +1818642 +2872792 +2206955 +1584655 +813851 +698944 +813887 +1230432 +1378790 +1069789 +412243 +2419459 +101962 +1584688 +1170191 +1927890 +673723 +1768117 +1106645 +455091 +393361 +698955 +1584687 +2442590 +2401827 +101966 +472652 +1336419 +1248080 +1890060 +1969793 +381555 +483159 +1170196 +1742007 +1584685 +929748 +1384222 +2206982 +1890061 +1741995 +1890080 +1839611 +1106640 +1097721 +495286 +554915 +698954 +2612106 +1584672 +813867 +1265006 +1679540 +2341256 +381563 +1698632 +977810 +1890241 +1230536 +2872823 +1890213 +1438932 +1927930 +1890100 +2207009 +813934 +1508237 +1230506 +255284 +1890106 +2844814 +1479735 +1106659 +1890131 +2070848 +2612177 +1173599 +1069804 +1230519 +1384232 +1584751 +1742033 +2872815 +2341204 +638396 +2542600 +1438958 +1069797 +1890192 +2070850 +1020132 +1230510 +1964864 +977821 +1076106 +1890167 +1664237 +1890226 +70048 +2542594 +2401884 +225278 +1117634 +977761 +977791 +1584865 +1305071 +1257827 +1230485 +813932 +1230521 +1117671 +1257834 +1280994 +1808673 +1991385 +2612213 +2669841 +893108 +1117661 +341903 +1097768 +1438950 +2207120 +1742058 +2341182 +1818653 +1808669 +655676 +2401871 +2207127 +1508241 +1345664 +1890178 +1508205 +2207071 +2503705 +1117619 +1193846 +2070854 +1890112 +813890 +2612140 +2207126 +302198 +2612181 +499255 +1584847 +2872817 +1584694 +1020148 +1742035 +638415 +1698656 +2542625 +255294 +1980083 +2419482 +101987 +638359 +929783 +977754 +324389 +1927973 +1173600 +1336444 +287053 +1927933 +1106651 +184460 +1742028 +397928 +1980082 +1890212 +1584761 +369174 +1508256 +1076104 +302216 +1698651 +638347 +1193872 +977788 +1396174 +1890146 +813906 +813959 +184419 +2612157 +2702047 +1193871 +2415184 +225290 +225283 +1486203 +977804 +2669878 +184417 +102037 +246233 +282457 +1890094 +200415 +1808685 +1927976 +698995 +1969794 +1698663 +1020146 +1117665 +1508212 +2811111 +2401847 +1649898 +1808675 +2442599 +1438940 +1584876 +2094771 +2811112 +2612198 +2207015 +2612151 +184425 +1117664 +929780 +1389314 +1839639 +2207144 +2363739 +2811113 +1359531 +905612 +2207027 +1230484 +336752 +554997 +1117653 +1890114 +101992 +893084 +638391 +673731 +1890163 +1057220 +2207005 +2341186 +2401892 +326087 +1117649 +1106657 +554948 +2612146 +1641201 +1297599 +2542586 +638420 +698976 +2341224 +2542628 +813949 +1097753 +1927968 +673733 +2503731 +1230480 +2503742 +977750 +2612159 +1890096 +1345666 +2207142 +1336463 +1890214 +1106654 +977815 +2732732 +1698642 +638424 +211672 +503213 +929772 +2401877 +905619 +1297603 +2207136 +1117624 +1927975 +2872846 +638372 +1938883 +328611 +2542591 +2341162 +1927937 +1128869 +2207013 +554958 +2542612 +2503740 +2669906 +554991 +2207033 +1742041 +929802 +2341226 +1890153 +1384233 +386153 +1679544 +893110 +369166 +1890182 +1584813 +255289 +1069799 +472678 +1927948 +1698664 +2844820 +369171 +1020136 +2001906 +246229 +2669847 +1438956 +1020124 +2207002 +555014 +102029 +554966 +554934 +472688 +2503745 +1164750 +1698636 +431661 +1927958 +2401845 +255268 +1384235 +554981 +2612152 +1069805 +2612150 +1890108 +2695992 +1890139 +638354 +1839646 +2044728 +1890140 +638435 +1584709 +1069806 +1230513 +1230486 +2207223 +2207303 +2044764 +2669929 +2732738 +2442626 +1305079 +2669967 +1980099 +1839696 +2669930 +1679550 +2207197 +1890258 +2692823 +2669955 +1305077 +655693 +1097789 +893124 +2207299 +555041 +1890282 +1439005 +1584894 +726616 +2207241 +2363743 +726610 +2207296 +70065 +1281061 +2669940 +2207292 +1928017 +2401964 +977877 +1336492 +1281052 +246240 +1281011 +1742086 +2094828 +2692824 +726624 +302248 +200421 +1359590 +555049 +302233 +184484 +1584908 +1928015 +1281034 +2013009 +555046 +1032840 +2001911 +2612325 +1479751 +2669948 +2542633 +2669958 +1679552 +2612257 +1305081 +2612246 +555088 +977880 +255320 +2341280 +1890285 +2044756 +1839679 +2669954 +2401899 +1117684 +1164755 +638465 +1359582 +1281026 +1069810 +1742078 +1140518 +1281093 +2612347 +2612227 +2401895 +302239 +2669964 +1297616 +1359554 +302267 +2207219 +2844837 +1890298 +1584885 +1297623 +1336484 +555019 +2612274 +1359553 +1715468 +1839699 +1359576 +455121 +1359545 +2207232 +1890250 +1584963 +1117694 +1479744 +1890278 +2419495 +699010 +1281025 +813985 +762952 +1230550 +1890245 +977843 +2305642 +1890303 +2207323 +1117696 +23460 +1584957 +2612259 +1281073 +2612229 +2503753 +302250 +1890274 +2612329 +1991395 +2669937 +2669977 +102069 +2044767 +1230557 +2207268 +1152639 +2207226 +324393 +699013 +2669972 +1715458 +2207162 +2284867 +555027 +2612262 +929835 +2207279 +2207319 +2207211 +2401907 +1952140 +726628 +1438987 +555043 +1389319 +1508269 +1584916 +929807 +555074 +1230559 +2419498 +2094820 +655685 +2027341 +2207194 +1584958 +1281031 +2363751 +2503761 +1715461 +2284864 +1782361 +1808694 +2612264 +1808695 +2001920 +1257851 +1281030 +555085 +2044769 +2669924 +977838 +483193 +1839689 +455124 +2612251 +2284868 +2669956 +555030 +893118 +638464 +2094815 +1742112 +255301 +2503772 +2503774 +638497 +1508276 +1359546 +735892 +2094804 +102076 +813978 +1257875 +2001922 +2542641 +1927991 +1715465 +1742133 +2341279 +1980088 +2207201 +1359549 +2001919 +2401984 +2612351 +1117709 +2670023 +1964904 +2844876 +814122 +1359601 +555096 +555134 +102098 +2207455 +102126 +1742143 +2724658 +2542648 +1032865 +555093 +1890355 +2341351 +1305084 +2341379 +2670054 +2207411 +1928037 +1585076 +23485 +814037 +1508306 +1257893 +23517 +2207400 +2402020 +1943716 +200423 +2094831 +555151 +2419522 +2419514 +814040 +814088 +2861452 +2670052 +2207338 +905632 +23516 +1980105 +2207424 +102113 +1768124 +977896 +814069 +1943714 +102100 +1585015 +23494 +555131 +2670003 +2402022 +2401996 +1439027 +2612387 +1585020 +1585042 +2670045 +2612367 +2612389 +1649908 +2305658 +1585003 +762960 +2612352 +555112 +1257890 +1281105 +2724669 +2207378 +929850 +1257889 +302276 +2024794 +2207362 +1585009 +1928048 +1032861 +102125 +655700 +2670020 +1585066 +814062 +977901 +2207326 +2207394 +555125 +1890378 +2612380 +2612397 +929841 +1890363 +762959 +1742167 +2612356 +905635 +1585050 +2207385 +1486214 +1032853 +1359603 +2401985 +2207393 +1585030 +814032 +2844887 +2207343 +2669992 +555123 +2402016 +1336506 +2341368 +1097804 +2207345 +555144 +555113 +2402008 +2207355 +2341360 +555164 +1890373 +1890319 +1508298 +23509 +2612369 +2044783 +2713475 +1585073 +2207448 +23507 +1890315 +1508304 +2612370 +2044780 +1928036 +2670047 +814107 +1230572 +2207421 +2670018 +814003 +2612398 +2402009 +1032866 +1230569 +929839 +1715473 +2341353 +2207366 +2401993 +2278971 +1943721 +2670043 +2503784 +2612362 +814035 +555132 +2207395 +2207439 +1808704 +655722 +2724683 +455148 +2713572 +929866 +1585118 +1389332 +1230585 +1230599 +1742190 +102179 +1742185 +1839732 +1890382 +1654627 +2872856 +1230578 +1742230 +1193921 +1839729 +814152 +2612426 +1508320 +102160 +733818 +905636 +2724694 +2006768 +1230590 +1336517 +1230623 +2692843 +1257909 +2732753 +2713548 +322320 +555292 +555326 +2207472 +2419525 +2094856 +23526 +184502 +717162 +2732742 +2713513 +2612445 +638564 +1230612 +1281143 +1649920 +1742231 +2207537 +555186 +2207558 +1508330 +1742205 +2713566 +1585106 +455142 +2207511 +1969801 +1508334 +1991424 +1508350 +102170 +2094841 +1742183 +1679573 +1281165 +1336549 +2207552 +23525 +2305667 +1117722 +1359610 +1230633 +1230606 +102147 +1336526 +2713570 +1281140 +555208 +1117719 +1230631 +1679581 +1305091 +673750 +1928056 +1508325 +1281154 +1980154 +1281124 +1508337 +726640 +814135 +2872860 +2612428 +2732745 +2713506 +2207530 +1928055 +2207529 +814129 +699053 +1439044 +655733 +1193916 +2713561 +1020161 +771104 +1742220 +555263 +1890416 +1359607 +2670071 +1742206 +393381 +2341392 +555278 +1585107 +2713497 +2070869 +1193903 +1508333 +1117752 +1193919 +2737355 +2702067 +1649919 +2713546 +1069818 +2006769 +2713500 +762966 +2612429 +929875 +555230 +1305094 +2612415 +2713523 +555223 +1839725 +1742189 +638520 +2732744 +555203 +2207482 +1928066 +1230602 +1281137 +1389335 +2207533 +1742209 +638541 +1230601 +2713542 +2612418 +1890404 +2612409 +655726 +2612410 +1808713 +2402026 +2070870 +2713544 +1117751 +1359644 +655710 +1281123 +2724686 +555194 +555294 +1928061 +1649925 +1585104 +555296 +1698667 +2276746 +1230630 +2094854 +1928070 +2695995 +1890384 +102193 +1742191 +1117743 +1890394 +2872861 +638567 +1928057 +2094852 +555320 +1173606 +1641206 +2207517 +655701 +2542673 +2873321 +2873436 +2873258 +555343 +1439082 +2873065 +2872871 +814174 +2873541 +2872993 +102202 +2690066 +2873519 +2873448 +2873281 +2207582 +2044814 +2861462 +1131030 +2690060 +2873477 +1020168 +2873453 +2873383 +655746 +655755 +1439086 +1281174 +2873484 +2861541 +1313910 +2873248 +2685921 +2873394 +2713597 +2873544 +1097813 +673784 +2872967 +2844975 +2872911 +1313908 +1439087 +726644 +2873520 +2207566 +2872937 +2861583 +2612457 +2873170 +2861665 +2861548 +2872883 +2861506 +2872910 +1368188 +1991458 +1991468 +2844985 +2009206 +1281171 +2844942 +1706472 +2873078 +638588 +1991432 +1980181 +1585127 +1818657 +2873128 +2872978 +1955123 +2861456 +2861519 +1585146 +2861563 +2872880 +184522 +1230641 +2861530 +2685924 +2873017 +2873144 +1376790 +673781 +1439085 +2873567 +2872875 +2402060 +2872952 +2872964 +1368185 +2872921 +814172 +2873068 +2044816 +1991443 +1928074 +2873446 +2094884 +1305113 +2873502 +1585133 +2873412 +2861514 +2861576 +555380 +1281169 +2873475 +1991449 +2873260 +2873109 +1384252 +102204 +2873424 +1305114 +814187 +2873403 +2873486 +2873487 +2873303 +2861651 +2873378 +1106670 +2873466 +638622 +673774 +1479759 +1928082 +1986395 +2873447 +2873249 +2873569 +184518 +638644 +1230643 +2873533 +814161 +2873450 +102199 +2872908 +2861503 +2271025 +2724702 +2872926 +2873432 +2873062 +2861500 +638578 +1585156 +814186 +699057 +814162 +2873205 +2402061 +2873505 +2872898 +1378795 +2873226 +2001936 +2844980 +555332 +2873278 +1080870 +2861484 +673768 +2844934 +977919 +2873363 +2873190 +1080872 +2861649 +2363767 +2873294 +1376782 +1305102 +1991463 +2873149 +2872918 +2207563 +2861599 +2873044 +814182 +2713598 +1439103 +1585243 +893181 +2612480 +2670227 +2713626 +1991501 +2724821 +2670284 +814299 +2724723 +2415204 +1047071 +2207690 +655763 +977949 +2415193 +225333 +2670216 +1439135 +1439160 +1230645 +1297643 +555463 +2724744 +638685 +2542686 +2503837 +1044247 +2670171 +2670154 +2006773 +1585179 +2670271 +1943758 +2207694 +1205527 +1943738 +555412 +102227 +638711 +2207595 +1964927 +1305126 +1980203 +2670161 +1585267 +2732767 +1991520 +1585265 +2207714 +102216 +302295 +1991521 +1297642 +2724818 +2402128 +23534 +2009210 +2692869 +638693 +2341409 +1980215 +1281220 +2207719 +1080898 +814243 +1742247 +1439118 +1991522 +1906597 +2724762 +2811200 +1949183 +2207659 +102242 +1684789 +2442640 +2402148 +2670267 +2207762 +1406522 +2207777 +1943759 +2670197 +1080884 +638723 +2670177 +638655 +2207752 +814203 +1439142 +1698716 +2207709 +2724806 +893199 +2402124 +1742240 +1649936 +2044852 +2685939 +1585192 +2612477 +2207648 +1359694 +2044855 +1193929 +2612530 +1585181 +1585223 +1585178 +2341446 +2724719 +1980221 +2702087 +1265014 +2713672 +2811124 +638721 +1991503 +814308 +2044845 +1080886 +638668 +929885 +2612527 +1706477 +1706488 +102262 +977957 +893180 +2207645 +893162 +1991480 +2207607 +2207674 +1991509 +1131044 +2419560 +1336579 +1742256 +2670146 +2724853 +1742250 +2341402 +1928102 +1928093 +1706492 +1248108 +1585161 +1890457 +1698705 +2402102 +2542682 +1991526 +2419556 +555397 +2341412 +1281209 +2612541 +1980235 +555430 +733829 +2713703 +699065 +1996901 +2811184 +2760435 +2690073 +2685945 +555402 +1721300 +1117766 +2207724 +1128896 +814271 +814245 +1649934 +2044841 +1205528 +2670218 +1047069 +2670164 +2009215 +2670124 +2713610 +673794 +555411 +1585278 +2207738 +726648 +2724781 +2207600 +1943761 +1359673 +814217 +2612496 +2207715 +638671 +814304 +2207682 +1131033 +282475 +699061 +1117762 +2690075 +2724824 +555418 +1585165 +2207735 +1439150 +1069823 +1943780 +2724726 +555425 +2305678 +893176 +1193930 +1085794 +814231 +2305676 +1585220 +2207806 +1641219 +1890476 +102246 +2713621 +2207662 +1585274 +947438 +814293 +2207641 +1281214 +2724860 +1128878 +977948 +1585279 +1281187 +2713662 +2811187 +1964924 +1508375 +2341406 +1032902 +1439180 +1313912 +2207820 +2207657 +1439110 +184546 +1964915 +1297635 +733827 +2207740 +814204 +2207841 +1359689 +1585238 +2207619 +2713624 +499266 +2724730 +977947 +1359690 +2713686 +2207765 +1439158 +2670257 +638677 +2724851 +814273 +1128885 +102255 +1943783 +1585259 +1439123 +1585231 +102257 +2670246 +814286 +70076 +2811158 +2363769 +1020176 +893170 +1585201 +2006774 +2207588 +638701 +2044847 +1389345 +638728 +2503840 +1131036 +1585253 +2724774 +655769 +2685951 +2748856 +893190 +638661 +2207787 +2612534 +302296 +1890481 +2207852 +555445 +2415213 +1928096 +977938 +1928132 +1890498 +1097822 +1585317 +555494 +1585286 +2702096 +1698720 +814348 +1585299 +638729 +102290 +555471 +1106683 +1808728 +2402168 +762978 +2542694 +2207869 +814346 +2094905 +977958 +814347 +1808729 +814316 +814352 +2305682 +977985 +102273 +386156 +1230683 +2670306 +1080899 +2612585 +1698727 +2503852 +762975 +2713710 +977989 +905642 +1991530 +2207885 +1230690 +1679589 +2001940 +2207883 +726656 +555484 +102293 +1439188 +2670303 +1808724 +1585290 +1257926 +102283 +2207898 +483206 +1384264 +2811400 +978010 +699074 +2861695 +814418 +814368 +2670311 +2503863 +2670465 +2207915 +2207947 +2683294 +655804 +2811431 +2811645 +2670428 +2811555 +2845045 +2811525 +814402 +1585386 +394093 +1585375 +1928181 +1257927 +1305159 +814375 +2811793 +2811311 +2670345 +2811564 +2811983 +499268 +2811418 +2811859 +2724885 +762984 +499295 +2811790 +2812031 +2845028 +2207948 +2207977 +555543 +2861714 +2811682 +2811409 +2670470 +394075 +655799 +1991576 +2861802 +2811802 +2845058 +2670426 +2812021 +2811222 +2670424 +1641222 +2207917 +1928188 +2811439 +2208038 +2670387 +2861775 +1585391 +2811851 +1928146 +2811953 +555545 +1439211 +2811471 +2811317 +2811267 +2861743 +2811685 +1698764 +2811438 +2419589 +2811207 +2811327 +2692876 +2811780 +2811669 +978026 +2670337 +1359704 +2811830 +2861785 +2503878 +2811840 +2009217 +814439 +2670355 +499292 +2811978 +2811510 +2845040 +1928137 +2207925 +2724870 +255351 +814391 +2811758 +2811784 +2812068 +2861701 +978012 +1928138 +394072 +2811541 +638730 +2861745 +2811503 +394035 +2844995 +2208001 +2811343 +2811696 +2207980 +1257954 +2811613 +2811905 +2811480 +2861779 +555542 +2811860 +2811999 +2811202 +2861734 +2811778 +2341534 +2811939 +2207961 +2811845 +2811537 +2044872 +394049 +1305144 +2670509 +2811298 +2670417 +2207952 +2044887 +2009221 +2811473 +2670450 +2811542 +2207912 +1928154 +2811618 +23568 +2811393 +2811773 +814399 +1585395 +2812094 +2207919 +2861749 +2811740 +555525 +499270 +2811386 +2811276 +814452 +2861822 +2341497 +2811294 +2811250 +814387 +2670449 +1698750 +2419603 +2845004 +102297 +255352 +2811660 +2812039 +2419639 +2278987 +2341474 +1585325 +1585377 +1991567 +978039 +2811710 +2044886 +2670446 +2419614 +2724878 +1585384 +814423 +2811572 +814420 +2207924 +2811253 +1585355 +2419588 +1439194 +2811334 +2811238 +814431 +2811948 +978014 +2811665 +1131051 +1281299 +2811532 +2724871 +2811252 +2670453 +2811469 +499290 +2724886 +102305 +2861730 +555546 +2811587 +1020190 +814459 +555522 +2811922 +2811651 +638736 +255360 +2811814 +2811259 +1372792 +2811785 +1928139 +2811279 +1585361 +2670436 +2670498 +638731 +1439209 +1991532 +1257928 +2811388 +2811220 +978027 +2419575 +2861684 +2811927 +2811726 +2811413 +555508 +394062 +2341555 +2811828 +555506 +1928179 +1257934 +1372790 +2207965 +2811488 +1585399 +893212 +1439204 +2009224 +499284 +2724889 +2812027 +1943816 +1585405 +2670360 +2861784 +2341505 +2341537 +2811942 +2811516 +2811270 +2208032 +2811672 +2811384 +2811598 +2811951 +2341540 +555514 +2812047 +893211 +1585373 +2207938 +2670447 +1032928 +2208089 +2208243 +1080924 +102388 +638763 +2542720 +699087 +2612629 +814536 +2208107 +1439230 +1906603 +2612612 +1131062 +2670538 +1679594 +1336603 +1117833 +726665 +1117826 +555641 +394105 +282484 +1585432 +2094932 +1991625 +499315 +638782 +1508395 +2208129 +184640 +1715504 +1032923 +2208118 +23600 +638792 +1585523 +2094920 +2812107 +1585448 +483218 +2208305 +1117804 +322342 +70087 +555613 +2208058 +1281310 +814481 +814527 +2670548 +1281311 +2670521 +246247 +1715506 +1508393 +1389353 +302312 +1585524 +1943845 +929914 +1928225 +1508400 +2208075 +1131063 +2612604 +393391 +302335 +2812120 +1585480 +1479801 +555619 +23579 +225342 +1156871 +2670527 +2402208 +2612632 +1080936 +102336 +2402176 +638837 +1359714 +2692892 +1943846 +1585478 +2208186 +1758974 +2208133 +1044253 +814511 +2208120 +23598 +699097 +1106684 +2066176 +2271048 +322351 +638813 +1230698 +431667 +2713726 +1706500 +1952173 +1943828 +2542717 +2670570 +184595 +2402212 +2612642 +699079 +2044895 +102350 +929913 +762988 +555622 +1508387 +555608 +555562 +2208121 +2208076 +1080920 +2208152 +2702106 +1928209 +102360 +2861824 +2208280 +1117814 +2402201 +225340 +655824 +70092 +2415222 +1585504 +1131064 +1698773 +2670551 +2612606 +555603 +381573 +1955134 +1080923 +2208163 +1128908 +893221 +2044909 +1715497 +2542729 +102399 +2626805 +2208286 +1698774 +2402180 +638833 +2542704 +393390 +2208081 +1032934 +1305161 +893232 +2683305 +1585431 +472710 +555573 +762989 +2670528 +638764 +814520 +2402204 +2724916 +978064 +2873595 +2683301 +2208078 +555580 +1020196 +1378798 +1508396 +184609 +2044915 +1128917 +102325 +499316 +1205536 +555579 +2861829 +255363 +282483 +1964935 +1479797 +2873623 +1205537 +302324 +302322 +2208210 +638791 +638821 +555578 +814514 +2873607 +1980259 +2724925 +1698785 +2612626 +2402187 +1698784 +1758971 +2724917 +2724905 +638803 +2208282 +184580 +814533 +2713741 +2208189 +2208184 +1020199 +1170207 +302330 +1938912 +555599 +2702105 +555572 +2713718 +1890529 +23574 +503221 +978085 +1230699 +1479799 +1439248 +2208154 +2670576 +2442651 +1684790 +2713733 +246244 +555625 +1585471 +1359718 +2208157 +1173610 +2845061 +1368202 +2208248 +1128912 +1020209 +1097832 +638847 +1991613 +1205538 +2670573 +102366 +1585435 +2670583 +1980280 +1230735 +2670577 +555690 +2363788 +2670619 +1257984 +2208413 +655830 +2713748 +2670627 +2670581 +2208375 +2006781 +102403 +2279003 +2208411 +978102 +1117848 +1991635 +814568 +2670584 +1585536 +2873628 +814552 +1943857 +23609 +2845066 +1170210 +2670612 +2208407 +2341588 +1585533 +555722 +814579 +2670593 +2670580 +2208315 +2873625 +1991639 +2208354 +2670608 +2208308 +2208386 +2670606 +1943861 +1952176 +2845067 +814567 +814570 +2670632 +1281337 +255370 +555684 +2208379 +255369 +2419646 +2208342 +814562 +655827 +1439256 +2732788 +2208394 +1890549 +1439272 +2724944 +2208374 +655829 +1439264 +2713744 +555707 +2208476 +2341610 +1585566 +102445 +1585554 +814638 +978127 +1281349 +2873641 +1359730 +814600 +2831102 +2845078 +2044936 +1585577 +2208430 +302341 +2208450 +2208424 +2208446 +929921 +2208467 +324401 +2094945 +2419666 +2873658 +1257986 +2402249 +1928240 +2419668 +1585546 +2341605 +2612653 +1585571 +2341601 +102444 +978126 +2208478 +1097836 +2873669 +814633 +1890562 +1742342 +2094948 +1890563 +1439281 +2670648 +2419661 +1585565 +814594 +1585552 +555734 +2670652 +1281341 +2208448 +255372 +1585547 +2670671 +638886 +1248134 +23616 +1020224 +978162 +1345703 +2009238 +2873676 +431671 +638867 +495321 +814656 +1359755 +302343 +555751 +1890598 +2402280 +638934 +2542743 +1368211 +893272 +638881 +2094952 +893260 +495325 +1088397 +255380 +472738 +2024809 +1679600 +2341630 +978153 +1890585 +1641240 +1782369 +638875 +555788 +2737377 +2013016 +814648 +893266 +893264 +1376805 +393412 +978132 +1890600 +655855 +1297665 +1173614 +1585614 +2208539 +555775 +814649 +2670672 +393407 +2670677 +2105264 +393417 +1020237 +282486 +2271055 +1890590 +1345696 +1345691 +978131 +814683 +1585628 +1585611 +1032957 +929925 +2670687 +555767 +2670684 +1785600 +1585608 +1230749 +814686 +2419672 +1230771 +184656 +699123 +1742361 +2105266 +1706504 +184648 +2208536 +2305702 +699118 +893285 +1890580 +1641232 +1641237 +2812131 +361666 +2305706 +1906610 +1359754 +369204 +369206 +2044942 +1117860 +2208515 +1345698 +717202 +717199 +1742359 +2276775 +638892 +1281369 +1193958 +1439295 +814695 +2208510 +1032953 +1964948 +1698817 +2542748 +1679602 +1020231 +2208496 +905645 +1020235 +184651 +336758 +1345699 +2208499 +1085815 +905646 +361665 +1205548 +302345 +102464 +1664255 +555777 +814678 +1376804 +393401 +255384 +638871 +814691 +1248131 +1032952 +1020221 +929942 +893276 +1439299 +2873705 +978148 +1080949 +102467 +673833 +1890601 +1345693 +184652 +1846850 +1698822 +638935 +2044947 +1336620 +1890589 +1128919 +638868 +1336613 +2670693 +1585644 +1742371 +200428 +1384272 +495316 +555790 +1117864 +893267 +102478 +2713781 +736583 +184654 +2208520 +2713780 +638863 +495317 +2612668 +1359742 +1205549 +1742353 +1248125 +2626811 +1698823 +1742350 +2670692 +2402287 +1808753 +1890597 +2873673 +23617 +638888 +905649 +503223 +2831169 +2873750 +2208563 +2812340 +1943914 +102537 +2831452 +2685983 +2670751 +1890659 +1585689 +1439377 +2831133 +2831465 +978192 +1439381 +2812226 +2831406 +1964960 +814742 +978215 +1439354 +814812 +2812275 +978170 +2208595 +2831208 +2341659 +2812348 +2831403 +1742422 +2831330 +2873729 +102561 +2831116 +2208643 +893323 +1305189 +2812260 +1742401 +2831217 +762999 +978171 +102483 +2831196 +2685970 +23628 +655875 +1890657 +2713789 +2831490 +2670704 +1117885 +814795 +2670725 +1742435 +499326 +2831229 +2873721 +102481 +255393 +184728 +1890646 +978172 +2831405 +2812346 +2612703 +2861866 +102500 +1439357 +1281374 +1281412 +2831319 +2612740 +2690085 +2831357 +1193962 +102493 +814706 +2861886 +225365 +555833 +2812360 +1742395 +2612710 +2831238 +555807 +978224 +1020249 +2831375 +2724961 +1585747 +1439319 +1742430 +1964958 +2873737 +1439320 +2873744 +2094989 +2861857 +102514 +1117882 +2831167 +2831246 +184723 +1305193 +1305191 +1991678 +2670718 +2812153 +1020255 +2670702 +699137 +2831223 +814793 +2812298 +1890629 +1389366 +555812 +2831393 +2208591 +2690086 +1585699 +2341696 +814798 +2670732 +2812330 +2027349 +2812338 +1585707 +2873753 +2831146 +1890654 +2831451 +2812355 +2831274 +225364 +2341679 +2705745 +2341682 +2612751 +1890625 +2702122 +2831201 +2612693 +1585727 +102501 +287078 +503224 +2812325 +1336643 +2831295 +386167 +282499 +2831187 +2341666 +1964954 +1890650 +978234 +1305195 +2670716 +1372814 +814811 +2208596 +2542767 +1742425 +1439315 +1715517 +555825 +1890671 +102575 +909151 +673851 +2758061 +2831427 +814758 +1508420 +978167 +1585698 +2831225 +2812133 +2812235 +1943905 +2861868 +1890622 +2402313 +1281404 +1281434 +1928263 +2812335 +2208659 +2831165 +2831271 +2812317 +2873735 +814819 +2402294 +2831433 +2812149 +1585673 +1890643 +1439397 +1047083 +2812141 +1080961 +2831178 +2831262 +2341658 +1585750 +2812198 +2845107 +2724965 +2612691 +2873738 +814729 +2402300 +2831117 +978203 +1439359 +2831134 +978220 +1585724 +2670724 +2208651 +2612702 +1439388 +814746 +1439383 +2831488 +2812214 +184704 +1585664 +1230781 +2873733 +1281400 +2094991 +369211 +2612713 +2831463 +2503933 +184698 +2044951 +814723 +2208682 +1131069 +255396 +1020261 +1585676 +814710 +1439380 +2831445 +1839778 +1336650 +1585734 +2831149 +1020250 +102564 +673852 +638949 +2027352 +978209 +2873728 +2504011 +336761 +200436 +1069857 +717212 +1890709 +1156875 +23651 +1265073 +978306 +717218 +455192 +2503955 +1248159 +1839796 +102647 +2732813 +893337 +184783 +1230789 +1508435 +1721314 +184789 +1020318 +361676 +1585827 +102652 +1020326 +1938947 +2670758 +1665754 +1928287 +1402844 +1439413 +1052104 +225381 +1890719 +431676 +1585816 +2612802 +1173622 +1641260 +2670782 +1131075 +2208771 +1170223 +1359776 +2612806 +1890730 +2503975 +2612777 +1808761 +2758066 +2208828 +70138 +1768134 +495347 +255407 +2095027 +369216 +1890742 +2503996 +2442669 +1265058 +393429 +735909 +1106712 +2095011 +978295 +2208767 +2402319 +1345710 +929965 +1742450 +2743653 +499334 +1664265 +225374 +2812362 +717213 +1486234 +2208744 +1641286 +2670805 +1336671 +1336669 +1928283 +381624 +947461 +814829 +1943938 +1097871 +2095020 +905655 +1439427 +2044963 +1585803 +2003462 +1808766 +1248138 +1808778 +1359778 +1938943 +2044981 +1742452 +1742475 +23669 +2095039 +2515912 +472771 +23661 +2732807 +1128936 +1508445 +503238 +1890728 +1265086 +1406535 +2503986 +1020315 +638992 +2515901 +483252 +1020275 +1133988 +1117899 +23638 +483250 +1057236 +1486238 +1980311 +1384280 +455183 +893341 +1248153 +2612854 +2095035 +905663 +1193977 +2208737 +1372823 +638997 +2368999 +1080993 +1106709 +184749 +978261 +2271069 +1117898 +2612850 +431675 +1508441 +184779 +1768136 +23633 +639009 +2612791 +1890752 +814828 +2044989 +1391298 +2670800 +1585946 +1265088 +1170217 +1080981 +23634 +1248150 +1486237 +1336678 +2612846 +1928330 +1486235 +503235 +472786 +814827 +1906617 +255424 +1768135 +1336687 +184750 +1020308 +2503984 +246275 +1281441 +70134 +282519 +200435 +184739 +2705746 +503253 +555871 +1522869 +102645 +1265055 +1117922 +102670 +70143 +70162 +225372 +472748 +2670759 +1389369 +978276 +1890704 +1585841 +1265080 +1205569 +1117924 +200441 +2612841 +503249 +2341730 +2612830 +472780 +1928329 +2208717 +1818677 +1808769 +1085837 +978296 +483241 +2442676 +814838 +1336670 +2503982 +639004 +225384 +1170228 +1742436 +1585940 +2271071 +1479825 +1964991 +255425 +1170224 +1410190 +1890751 +1906625 +1265050 +1585944 +655877 +408241 +1020296 +2612822 +929978 +1928321 +2812363 +673859 +495352 +1756618 +2369001 +1140525 +2758064 +255436 +483248 +1020274 +483240 +1585905 +2363823 +905667 +978254 +503233 +814845 +282534 +1585922 +1486236 +2341749 +2095036 +1265046 +361674 +1664266 +1396185 +2044965 +184782 +1890692 +2702136 +1679627 +1020272 +2503978 +1585874 +2369004 +1585837 +2208727 +184776 +255438 +70141 +381595 +1890724 +1069854 +2515895 +2542777 +1248145 +1585889 +1258009 +1585858 +2845113 +639003 +255416 +1890726 +2670812 +1585908 +2713803 +2208728 +2095003 +1522867 +246274 +381597 +499339 +184756 +1821972 +1439420 +1964986 +282517 +1762762 +503241 +381625 +1585846 +200437 +1248142 +1265090 +2208779 +1508456 +1372836 +2208866 +2009242 +2208969 +2612878 +1649956 +2208952 +1641299 +639043 +639150 +1281457 +1486253 +2732814 +893346 +893407 +2001958 +1359821 +2402339 +639107 +930006 +978368 +102697 +2208997 +2208899 +1230837 +2713816 +1980334 +1117936 +1359825 +814903 +102684 +1715555 +1808798 +1359794 +1359806 +639024 +893370 +655885 +1585982 +1020347 +2208961 +639074 +673895 +2284894 +1359820 +2045025 +1928358 +814865 +1345718 +639090 +814891 +2208846 +893355 +2542786 +287084 +673879 +1281481 +2732819 +255447 +2612891 +2208864 +1585983 +1313933 +1384287 +2612906 +1890814 +2208974 +2208889 +1230830 +2743659 +2713813 +2732829 +726698 +1698841 +1585992 +814878 +893431 +1345720 +733857 +1928347 +2271088 +555913 +2341759 +655888 +1389372 +2208856 +717223 +2713845 +2208925 +2208953 +2713843 +2713852 +639096 +1439478 +1336715 +699169 +1359787 +1230836 +1585969 +893417 +1969825 +893352 +1943948 +2713823 +1359828 +639120 +184834 +1359797 +2363848 +555948 +555909 +2271080 +947475 +2363830 +2305721 +1336701 +2095064 +1359837 +1032987 +1439453 +2504015 +2713839 +1193994 +2208985 +2612928 +184807 +555917 +1281477 +639045 +1359799 +2692904 +639068 +2095062 +639060 +555920 +978358 +1281474 +2208965 +1265100 +726696 +2208936 +2095081 +555903 +1585954 +1742527 +673875 +1230827 +2542788 +555910 +2402329 +699168 +1439468 +70176 +2732833 +2542794 +1281478 +1281472 +1928356 +225396 +814930 +1943945 +2713825 +2208946 +2341762 +555928 +639079 +814879 +639073 +673880 +1336709 +1439481 +639054 +1297679 +1818679 +2095053 +1585964 +639023 +1641301 +1359788 +1479851 +1938957 +1305207 +1980324 +1313940 +1359783 +814869 +2305725 +2542784 +2363842 +1336725 +1585987 +255449 +673923 +978366 +655893 +2208910 +1890775 +814898 +184803 +814914 +555950 +102699 +1020353 +1384286 +1980327 +639156 +735910 +2208916 +639149 +1965008 +639027 +655908 +282553 +1336716 +2724976 +639018 +1508474 +1928348 +1359812 +2719756 +1313931 +1906645 +1359826 +1479835 +102706 +639052 +1336705 +1439470 +2208996 +495355 +2341768 +2702163 +2670822 +2341769 +1742521 +2305724 +1742528 +893421 +1479840 +639144 +1097883 +2612909 +2402347 +1439447 +639014 +1508470 +184865 +1230888 +1020356 +2670847 +1230882 +2612939 +70191 +1281506 +1890840 +1248189 +1698853 +184874 +495364 +639195 +2504018 +386193 +1586084 +1384295 +1265114 +1508484 +2504068 +639215 +2209087 +2758070 +763035 +1248185 +2713859 +1586091 +655913 +282566 +404671 +2670880 +2702170 +1586022 +483268 +1742547 +2209053 +1742586 +1586032 +1586031 +733865 +1715561 +70185 +1164794 +483283 +2027359 +1890829 +978422 +2845120 +1742574 +1439505 +297051 +1336733 +369229 +356271 +1698879 +1336739 +23680 +2504020 +2845118 +2612955 +2758077 +1156880 +282557 +1586071 +483271 +2209042 +1336740 +1205578 +1230897 +282570 +1164789 +1258031 +2095095 +2612938 +70189 +2670865 +1742588 +102753 +930038 +2740673 +978414 +495358 +356273 +639202 +1205575 +639206 +1698874 +1152663 +1965035 +1808810 +102716 +1742564 +255456 +1508490 +2612937 +1152669 +1586019 +381633 +255474 +1297699 +639194 +472791 +1698891 +2812408 +1715565 +495360 +2612943 +2045031 +2504042 +1439514 +1230844 +1928370 +1265109 +23679 +23691 +2758075 +1965032 +184873 +2504039 +814945 +1679654 +102724 +1890859 +1336731 +255472 +1081022 +978425 +328632 +102742 +978453 +1439516 +184869 +2713857 +1654637 +393431 +1359847 +2504054 +2504044 +1890847 +1586056 +2504057 +2743664 +1742555 +1742585 +1106720 +1890820 +386181 +1679669 +815007 +1156882 +978439 +381636 +2209039 +1890864 +2504050 +2419687 +1586051 +978416 +70203 +102712 +814957 +184891 +1768138 +726706 +893443 +1170232 +2095096 +893441 +1928359 +655910 +2341799 +2812410 +1248178 +483270 +1230849 +978466 +102710 +1742559 +1230869 +556019 +1698859 +2209096 +1378805 +1297700 +1336745 +556017 +1890863 +2743665 +1508485 +1508497 +1522877 +555983 +2341785 +70194 +2670848 +184863 +1081005 +2209027 +2504065 +2341800 +1069866 +2001962 +763025 +1281493 +2209097 +102763 +2019452 +930017 +1742548 +23706 +1641306 +2612954 +1205581 +1265107 +1020376 +930048 +814959 +699188 +2209013 +2812398 +1230861 +930045 +763053 +246287 +2045061 +2702193 +815025 +815048 +2006808 +2341808 +2019458 +1928380 +1586123 +815110 +1439574 +556062 +2612981 +1359868 +102776 +1359918 +978493 +102802 +1281551 +639289 +1359899 +893465 +1281601 +978472 +1336774 +2095168 +639239 +655929 +1439518 +1928383 +1305228 +815117 +1359862 +102783 +2612996 +930086 +1965064 +978494 +2095127 +1768143 +1486266 +2006817 +70211 +1033002 +1359884 +1768141 +1698912 +2686007 +1715574 +947489 +2006814 +2542864 +1439543 +556092 +1384300 +2209151 +1479864 +1641324 +2003480 +1839844 +699191 +184915 +2027366 +2045116 +1281578 +1742621 +556039 +2612964 +639252 +2045113 +2542843 +1359885 +639263 +2341801 +1230903 +1020384 +556103 +2095117 +1980349 +2027367 +1281560 +1996912 +1943958 +2305736 +556113 +639284 +1281562 +2713875 +639237 +1996909 +1439571 +815023 +815104 +1479858 +556141 +1846854 +1033000 +1359881 +655928 +1980366 +639275 +639228 +655919 +763042 +2542839 +1439544 +1839822 +2095120 +639274 +1194023 +815012 +2845138 +930081 +1965085 +1359914 +556172 +1890888 +1742623 +639235 +1665761 +1890894 +1359917 +1890873 +2045119 +1281522 +1305220 +70206 +1439560 +2209106 +2670887 +1991701 +2732851 +639295 +1768142 +1586114 +1586134 +2276784 +2626831 +1586121 +2003483 +2305734 +2363859 +1586112 +556046 +2209145 +184910 +2209139 +1965073 +1965071 +472800 +2027363 +2402371 +2612962 +717244 +655922 +815014 +1969833 +1586146 +699199 +1336789 +815086 +102817 +1439535 +815092 +1758992 +947495 +1439553 +1205584 +2001966 +2363867 +815125 +2209136 +733871 +815011 +556106 +70204 +2702192 +930075 +978480 +2690094 +1336795 +2363874 +1097899 +1313959 +1313961 +639226 +2845134 +639225 +2626832 +556128 +2363866 +184897 +699203 +2095152 +655930 +2095121 +556088 +1281596 +1664295 +1742609 +1281603 +1586128 +673939 +815019 +2542837 +1928400 +639494 +2209305 +1020399 +1742678 +930123 +1508603 +2402426 +763064 +2209178 +978533 +1522895 +1020404 +639309 +1345755 +2271106 +639523 +733890 +2713900 +556187 +1359930 +2713894 +771121 +1839874 +556183 +639470 +1839878 +1297724 +1439621 +2542870 +2504084 +639388 +815129 +2209316 +1906656 +184960 +1949228 +1508535 +717269 +2873816 +930124 +639379 +1890945 +1044276 +1742656 +947521 +102873 +815232 +893528 +102859 +1522887 +655973 +893538 +1297723 +1402849 +556256 +815214 +2713897 +556225 +1679694 +674014 +2873917 +699220 +2341819 +2873805 +1439646 +1508597 +893509 +639342 +2873940 +1336860 +1839866 +2613076 +639384 +1044277 +1890899 +1943985 +815148 +893494 +1508579 +1641335 +1943969 +1508537 +733891 +893504 +1641344 +1742642 +1281634 +2873783 +1281623 +1281638 +1128943 +2737385 +2402397 +639447 +2305755 +893586 +184919 +2861940 +556191 +1117967 +2719761 +2209210 +2003487 +2873883 +1586233 +1586163 +1742682 +2341827 +1586210 +905692 +2045179 +2873926 +1890918 +2019463 +1097909 +1305250 +1586161 +815240 +2402456 +2095231 +2095176 +2873919 +1281617 +2613074 +1402850 +1359986 +2613042 +2613022 +102844 +733899 +1378808 +2713887 +184948 +815233 +639457 +893533 +1359998 +1345756 +2363885 +184998 +1928386 +2861933 +2402447 +1808832 +639369 +1336810 +2045198 +2713932 +733895 +2737390 +1641355 +1313974 +2402448 +639327 +1943980 +2873812 +1479870 +1839857 +1230918 +674028 +639490 +102855 +70237 +2861919 +1890962 +2209259 +2812430 +893542 +556290 +1508551 +1715578 +2613092 +639504 +1679691 +102845 +556189 +1890906 +639434 +639367 +1305235 +2341831 +930132 +2861906 +1890939 +1928387 +1508558 +2812420 +1742651 +1400198 +2873850 +1479894 +978520 +1768144 +1522894 +2095232 +2702223 +1439597 +815225 +2740681 +2873821 +742719 +1258044 +556226 +893515 +2402410 +639350 +1020407 +2095193 +1707451 +1949233 +2613026 +1742626 +639451 +1313978 +2209172 +1839877 +2209285 +1336856 +2542878 +2209282 +2873825 +2861928 +1336842 +184951 +674017 +2209301 +1839872 +639516 +1359970 +1372859 +1479885 +2702206 +1020431 +2209252 +2725024 +2209195 +1305245 +185022 +639307 +717253 +1508565 +2873853 +639413 +2873885 +930101 +2045160 +1508534 +1641345 +2670908 +639323 +556273 +1281655 +102837 +2686034 +1641357 +1508596 +1890956 +1839856 +893521 +2725030 +2861923 +2732875 +815173 +2702235 +556210 +1980389 +2861921 +1980394 +1839884 +1117957 +893489 +947526 +1839873 +1170235 +1384303 +2209220 +639458 +717270 +639420 +909160 +2702231 +2415236 +556184 +2873930 +2271119 +1117966 +639466 +1928403 +2363900 +1359971 +699230 +1969837 +717260 +2812416 +1439659 +673989 +2873823 +2003485 +2702233 +674003 +556260 +1297726 +2095206 +2613017 +1313986 +102856 +2341822 +1297736 +1782394 +1679687 +655972 +2873776 +1281647 +1359948 +717268 +1359963 +978521 +639316 +2209242 +1707450 +1359937 +639497 +1336825 +1020390 +639435 +1281610 +930097 +739329 +1645525 +815161 +1439668 +2873927 +2725020 +1479882 +930125 +815243 +1384301 +1336817 +1313979 +815194 +815206 +1586199 +1297731 +2045193 +639476 +2613072 +2402391 +639380 +1313993 +639462 +1439654 +930107 +1949229 +674006 +674013 +2504103 +2402458 +1715585 +2737392 +1768147 +2613001 +1586186 +2278738 +639365 +2873795 +639503 +2702222 +381641 +815235 +2363887 +302396 +1439673 +1839893 +893532 +1928399 +639521 +2209319 +2542879 +1715587 +2066198 +2024821 +2095208 +297052 +1808829 +947518 +102841 +2873912 +1439619 +2209286 +893561 +639515 +2209221 +815144 +2209290 +1928390 +1508528 +2045189 +2209162 +639373 +184942 +1117969 +2504111 +2542907 +815244 +2613116 +1742725 +978589 +2024823 +2209371 +255503 +947530 +2209366 +2613100 +1698947 +1360008 +556308 +978596 +102921 +978594 +255500 +815302 +815301 +2006829 +556301 +1698928 +815288 +1890970 +1698938 +1117977 +1698945 +1230942 +1759000 +1698948 +2670944 +815286 +1808838 +2670939 +893601 +102933 +930138 +1069878 +1439695 +1928419 +639542 +556336 +978569 +1170236 +1742698 +2209401 +1336879 +381643 +1439685 +655978 +2209367 +1372867 +1508610 +1360005 +1336887 +2209408 +1281677 +2670952 +815289 +1928413 +1756633 +102926 +2209362 +556312 +1944011 +1117978 +978544 +2812434 +1117972 +2504112 +763066 +1679695 +1020440 +978575 +1360004 +655979 +733901 +2613112 +455208 +1360009 +815280 +1808840 +815246 +2209419 +1698942 +815307 +1360010 +1890980 +978583 +255502 +1965141 +2209376 +556309 +726731 +1372873 +1928415 +2670948 +1742721 +1742709 +2613106 +1336884 +655980 +1698932 +1389380 +1156884 +386196 +1372874 +978547 +1097912 +556323 +2209392 +225438 +1952194 +1742728 +1839919 +2209507 +2209642 +2363942 +439556 +2209467 +2019468 +556401 +1194083 +2402484 +2095257 +2504157 +2613277 +2671023 +556359 +1336930 +2209643 +930172 +1839913 +102966 +893640 +2613237 +1839933 +394122 +893653 +2363932 +1128957 +556381 +1641373 +930152 +815376 +2209668 +394123 +2613194 +639579 +200465 +2095265 +1944020 +1410198 +1128955 +2613138 +1679700 +2549810 +2613193 +2683330 +1928421 +2402553 +1742782 +1069881 +2209424 +361682 +102979 +639586 +2027379 +70275 +2363934 +1586305 +2442707 +2626861 +2209598 +1980442 +1044288 +70268 +102949 +2286074 +2671053 +1839938 +1336932 +893649 +2095292 +2209552 +2209652 +556356 +2341844 +2095258 +361685 +1044286 +1508646 +2209493 +1281682 +1980452 +2209568 +1020457 +815323 +1049653 +2613197 +893626 +1131087 +556345 +1586403 +1033030 +1097930 +2613150 +2209454 +1135197 +2542923 +2626842 +978609 +2209606 +1230946 +2271139 +431681 +1439752 +2209623 +1586258 +1684797 +2276791 +23773 +1336936 +1715609 +2613230 +1586284 +2209479 +815321 +1069882 +472803 +639610 +1170239 +1586261 +2626848 +639573 +893623 +2671003 +1194085 +2209618 +2613240 +1586390 +1439709 +2066207 +1839935 +1345763 +1486281 +947539 +1508627 +1906666 +2209508 +2504143 +1439756 +978615 +2209607 +287095 +225447 +1891005 +1265131 +2095267 +2442717 +1439755 +2280176 +1586396 +2402541 +1839923 +905697 +1586383 +815333 +2402488 +356275 +1258070 +1742781 +185061 +495370 +1336895 +2209600 +978606 +978653 +674032 +2671042 +2613167 +1033040 +1508629 +2613149 +2209584 +2402544 +815359 +2402550 +1439708 +930150 +1128963 +1839922 +1641377 +1336904 +2542912 +393439 +2001973 +2095259 +1360021 +978648 +1742750 +2670973 +1194069 +2363920 +2209558 +2095288 +1808843 +2280175 +1839947 +369234 +1586264 +1742791 +2209518 +1081028 +1742804 +639603 +2284915 +1410199 +893651 +1928450 +302412 +2305797 +2542914 +2276792 +2442712 +726738 +70249 +1486283 +2542947 +2542935 +1756634 +1586352 +1081062 +102958 +1649972 +1586374 +2363916 +1336919 +302410 +1890995 +1586362 +350209 +1641381 +2363925 +2341842 +1152676 +2626857 +2670993 +1742734 +2683332 +1658493 +815311 +2613254 +2209679 +2504123 +322382 +2613161 +2613292 +930154 +2542924 +2613168 +2045214 +412267 +1057265 +1439761 +2683331 +2209519 +1706521 +1586260 +1336923 +2670972 +1586388 +639601 +893611 +1586274 +2209590 +2402559 +1846859 +2613154 +1069879 +1586400 +1586330 +1906660 +1586386 +2209609 +1586419 +1586287 +699256 +185039 +353009 +815398 +353008 +1742767 +1742760 +2209624 +2209514 +556393 +2209539 +2402492 +2209676 +2504147 +1928438 +361688 +1928444 +556392 +2072134 +2613214 +2402554 +70276 +1699016 +978696 +255526 +23785 +1891087 +1782405 +103110 +225488 +225481 +2402563 +1020470 +103015 +2209729 +255517 +1928477 +345108 +1928459 +2504215 +302414 +499347 +2027381 +2542966 +2419693 +763082 +2095309 +656002 +556444 +2542955 +2095308 +2001979 +1479919 +1586472 +2442729 +1336947 +1891109 +556437 +1996920 +1230967 +815445 +2671092 +1980455 +2758100 +556510 +930205 +1586480 +1891124 +1258082 +2209718 +255514 +1106744 +1117998 +1928472 +1699004 +1906673 +255528 +1679718 +930174 +225454 +1230954 +2504201 +2209727 +255523 +978707 +1586453 +699275 +369239 +978657 +255524 +103086 +905718 +103038 +103099 +1742838 +1258098 +930179 +1891102 +556480 +103068 +1281690 +103092 +1839954 +1742824 +2045222 +2209801 +815420 +2542973 +930180 +1891145 +2671091 +2209743 +2209780 +2542984 +1699000 +483295 +1808861 +2402564 +1586523 +2402587 +1759006 +726750 +1033051 +2671081 +1891090 +103001 +1891136 +1586497 +2070912 +1928473 +1782410 +2013023 +1759005 +1586474 +1808863 +1586524 +978721 +1230973 +2095305 +556414 +978718 +639628 +225463 +103050 +1586507 +1839969 +1818689 +102999 +369236 +1698991 +103003 +2209752 +978713 +483297 +556443 +1586519 +726742 +1258099 +255520 +1097947 +2504216 +483305 +1928460 +23805 +1891101 +556419 +287098 +905717 +815440 +1742832 +978670 +1707456 +556421 +726748 +978711 +1891117 +103053 +103052 +699268 +200490 +2613302 +1586434 +1081071 +1586458 +2209739 +699266 +556413 +1891120 +1097937 +1698980 +455225 +2613320 +1742817 +2341876 +1258078 +1281692 +1742806 +2209740 +2713978 +978673 +930202 +1891114 +302422 +412268 +420602 +200489 +1742829 +978688 +2341859 +556452 +1839957 +978662 +815408 +1033053 +1839974 +1128966 +2862193 +978742 +2613417 +2209843 +1044292 +556577 +287102 +2671111 +639672 +639678 +2209848 +2812439 +2402601 +1891202 +947546 +726770 +2613364 +1991737 +2740685 +2862070 +2861997 +2862190 +1955139 +1980489 +1641395 +1360030 +1069894 +2862076 +639667 +1372887 +381659 +1980462 +1928488 +1372914 +1664314 +978729 +1258105 +1020488 +2209874 +369247 +2861954 +1106747 +2714019 +1839976 +2402621 +2341894 +2758123 +2613423 +1384318 +1360054 +2305842 +1086979 +2209892 +2732885 +1368238 +455227 +1389387 +2402625 +386203 +1641412 +2862153 +1586570 +2671102 +726762 +978763 +2862056 +674069 +2861957 +1641411 +2862103 +439559 +1891192 +2671106 +1928490 +2402631 +1020473 +1980467 +1891205 +1586541 +717289 +381656 +556557 +2740687 +893704 +2862108 +674055 +2862014 +1305284 +1305275 +2613387 +2862164 +2861975 +674066 +1891219 +1991724 +1128965 +815506 +815490 +1069892 +1265134 +2862206 +2095325 +1586530 +1641406 +639695 +2862137 +1281703 +1891189 +674061 +2862000 +1586558 +1715636 +2702252 +1194097 +103135 +1389391 +1586555 +1106745 +1439808 +1230985 +699277 +2671100 +2862152 +1097956 +1742858 +1128968 +2862057 +1368242 +1118007 +2862115 +2862099 +556558 +2862001 +2402615 +2209881 +2009259 +674065 +103126 +656011 +1928491 +2862067 +674074 +815535 +1980465 +1891223 +1372918 +1047089 +2862087 +2861960 +639643 +1928486 +556582 +185082 +2419697 +556534 +2504236 +815525 +1194105 +246309 +1020494 +1586574 +1980485 +1586589 +674057 +1586554 +2728562 +893676 +1965175 +1069891 +1390733 +1389390 +1336968 +2714020 +2209865 +1586599 +1439782 +2613378 +2442734 +1980491 +1281714 +1305281 +2862151 +1715632 +1057276 +1372913 +1194099 +2758102 +815538 +1586585 +674052 +2812470 +2613402 +2442733 +1906675 +1980463 +2209905 +978756 +369249 +345112 +815540 +1586696 +1194114 +815618 +2305850 +2402640 +2862277 +2812516 +2862242 +326105 +2543009 +978792 +905724 +1928526 +2305846 +2045253 +2812666 +1439819 +1128972 +815574 +495374 +2305867 +1106751 +2812651 +2210018 +2402660 +2862234 +2862233 +2504268 +1586635 +1337012 +1097978 +1360062 +302441 +1081093 +2812678 +978793 +2363964 +2831497 +2812716 +2613441 +1891252 +2354567 +1281737 +2095350 +1699023 +2812498 +815579 +2341912 +1085853 +1928525 +1439828 +1281740 +2862348 +2442744 +1891248 +1586669 +2812506 +1118039 +893713 +2862218 +2862345 +1081085 +2812481 +2740693 +556605 +2613474 +2812633 +2613439 +1742905 +978795 +2862219 +1230990 +1891249 +2209944 +2671162 +2671136 +1586656 +2504270 +556604 +930228 +103179 +1756638 +1231002 +2702268 +1231006 +1133998 +2402665 +1337009 +2812675 +1586702 +1081091 +1439826 +2862325 +1265146 +2812741 +1808888 +1508694 +246311 +2305854 +1281721 +978802 +1891245 +1586680 +1928512 +2812650 +2862350 +1088410 +2812474 +1586707 +674079 +2862291 +2613432 +2812565 +1679724 +2862347 +185105 +1699035 +2702263 +2740694 +2095341 +2812497 +2415243 +2862257 +2702260 +2862266 +2442746 +1508685 +1118033 +2862329 +1808896 +1699029 +2812676 +2831500 +930239 +1641423 +2070920 +2812626 +556617 +930227 +2027391 +1944030 +2613430 +472820 +1699032 +2862269 +2671132 +2542999 +2271148 +2812586 +2714034 +815565 +369252 +1742880 +1508675 +1768152 +1664317 +1928513 +2812639 +815584 +2737408 +2831498 +2209926 +2812571 +1081092 +103197 +815591 +947548 +185101 +1891232 +2862283 +2613443 +1194115 +23829 +2402637 +2209962 +495377 +2812721 +1345770 +2725046 +1265149 +2402664 +978794 +763104 +2210041 +103191 +2402663 +1586700 +2045252 +483315 +2209923 +556601 +815589 +2862317 +2613470 +1891236 +2862288 +2209961 +978798 +1081096 +2862327 +225515 +2613458 +1508683 +2862229 +2862319 +2862272 +282628 +2341918 +2504260 +1439841 +1439843 +1508686 +556628 +439560 +472815 +2341929 +2812499 +2812701 +2812601 +1586708 +2543025 +930253 +1360080 +556665 +1742921 +225534 +1965224 +1231015 +282633 +2543029 +893736 +2095361 +2095362 +246315 +2095371 +556652 +674085 +2613529 +2873942 +287105 +1742909 +763109 +2363971 +1508699 +185117 +639730 +1742913 +1128974 +1782417 +556647 +185107 +2504299 +2210117 +1337045 +2402676 +2210055 +2341953 +2210116 +1194145 +2671187 +1439854 +556658 +70294 +556650 +1891263 +726799 +2095355 +1508705 +978851 +70293 +2284923 +699314 +2305882 +2758133 +1586750 +1742922 +2671180 +656039 +1337057 +2341943 +909166 +1891277 +483316 +2442753 +1258123 +2504292 +639741 +815652 +282631 +815663 +1406567 +639724 +2210111 +2284926 +2504290 +556669 +815643 +978839 +556684 +2543036 +1156890 +103234 +1439864 +1742910 +893737 +1337059 +1231020 +1891264 +2402680 +1586775 +2862358 +1164823 +2543022 +1991758 +1808902 +1281748 +1586719 +1118046 +1231024 +1586739 +1194130 +1840004 +905728 +2504284 +2210079 +978860 +1069913 +2402684 +2210066 +1586723 +1965212 +771133 +733912 +556677 +1664324 +1891269 +815648 +726793 +556680 +185119 +2613524 +893734 +815642 +1231013 +1679735 +1439847 +1106752 +2045294 +2504302 +2613536 +1439850 +2504281 +2070922 +1020513 +2613493 +1360082 +1439855 +893735 +2402689 +2210073 +978813 +2504291 +1586776 +2543040 +2363982 +639744 +726790 +978815 +978819 +1840000 +2210057 +1742930 +2009997 +1337035 +1742914 +2009998 +1337067 +1479931 +23850 +103218 +2003495 +1586741 +2045277 +1586730 +2402692 +1372926 +455243 +815701 +2613572 +1586796 +1586815 +815750 +2210231 +815688 +978870 +1742946 +556738 +1742959 +1965244 +1891295 +70303 +815728 +1928569 +23875 +1699047 +1928568 +2210129 +2363989 +2095384 +815736 +302450 +815714 +2210213 +455248 +815694 +2210197 +2419711 +1891326 +2543065 +287106 +815679 +1033101 +1194156 +1742990 +103267 +1840015 +1439909 +1044300 +556745 +1305310 +2210126 +1586821 +2210225 +556752 +1118062 +455251 +763116 +815720 +1033110 +1360088 +2402707 +1337080 +2626878 +394133 +1891285 +23877 +2210176 +2095377 +1586810 +2070930 +185122 +1684802 +1439876 +2671214 +1194149 +1586798 +2210186 +1891291 +815760 +930265 +815763 +556751 +23866 +2702280 +1928554 +103270 +2095373 +2683348 +386208 +369258 +1928552 +978872 +1118054 +1891286 +2070924 +1742949 +1586819 +2276807 +893746 +763126 +1337086 +1281763 +1360086 +386210 +499357 +1891298 +2613553 +556699 +2363987 +556721 +1194157 +556703 +1928570 +556707 +1033098 +1649989 +639754 +23876 +1231028 +297063 +1891318 +393469 +2402701 +1928574 +1439875 +763127 +1891300 +2402702 +246317 +302445 +23874 +431693 +1891315 +1033081 +815680 +978875 +2210168 +1439906 +2402705 +815700 +2613541 +1439892 +1980523 +815759 +2402759 +1508730 +556792 +1706531 +1118076 +1439935 +1641451 +639824 +1360094 +2271152 +2613604 +2543068 +1231041 +2613606 +2095400 +2543089 +2626887 +185147 +1586847 +556793 +674093 +726806 +23892 +1337090 +2613624 +2671252 +1248215 +2504335 +2613582 +361693 +1991761 +1368249 +978909 +2341968 +185176 +103315 +1699072 +103305 +1020559 +978984 +1891341 +1891340 +1586871 +381694 +2613630 +2095403 +1194177 +893755 +420611 +225558 +1586899 +1020579 +185182 +1194165 +369271 +1906689 +639777 +2671236 +1743003 +2543077 +815797 +639826 +393472 +2626882 +978897 +455256 +225550 +2341969 +499362 +103302 +1231044 +1098011 +361696 +1743021 +2364003 +1641447 +2613599 +103293 +1641443 +1372939 +1033120 +103300 +23914 +70307 +674098 +70365 +2363997 +455259 +893797 +246324 +472826 +1069922 +185151 +1231048 +2613591 +2683349 +893780 +2504325 +733913 +1118064 +1743019 +2504315 +2210257 +947558 +1098017 +1743008 +1586905 +978902 +815799 +425560 +1020527 +1248217 +103301 +1586867 +2515950 +726811 +70342 +2671253 +639766 +556799 +1020531 +1337096 +1337089 +978985 +639845 +639786 +1097995 +1135199 +1248209 +1069917 +1679743 +2210319 +1586838 +2671254 +978920 +2402741 +2419716 +556790 +1906690 +2210311 +1699061 +1231061 +978898 +1098007 +556784 +699325 +1699069 +1118074 +978980 +103313 +381678 +674100 +2305888 +1891357 +2305899 +815784 +1194168 +369266 +2613601 +2613613 +2543078 +1928579 +978931 +978913 +2812749 +930280 +699321 +70306 +978926 +381682 +556801 +425557 +815785 +2210304 +1020565 +185162 +185160 +103331 +556807 +2364002 +1586848 +420609 +1020549 +1928581 +2210264 +23916 +1020568 +185168 +1586874 +185141 +425556 +70326 +556796 +185135 +639790 +1699070 +771147 +1439946 +2725057 +2210322 +246357 +2613669 +1965259 +674128 +639965 +556853 +1508757 +2845350 +185293 +1020606 +1106779 +2812752 +2066228 +1106785 +1086985 +2845312 +2671272 +2515951 +1587053 +1965265 +947573 +1081099 +815858 +1085859 +2613657 +70407 +2504342 +1641506 +185232 +1205623 +2402830 +2210411 +1248235 +2066231 +674134 +1098032 +1586941 +674114 +2702290 +185268 +1439957 +1965250 +1641483 +103360 +2210441 +1743044 +1439959 +639966 +639953 +674116 +1641487 +185244 +1205620 +2210474 +246350 +2845236 +2210419 +2845290 +2613656 +1721332 +1044320 +893852 +1522932 +1846860 +282671 +472832 +1085863 +2845279 +302474 +297067 +1020600 +23933 +2626901 +103345 +185210 +1587039 +297066 +2045333 +1641500 +1743054 +1439948 +2286089 +1586988 +1586966 +2210463 +1587013 +893872 +1641494 +1486333 +2402812 +1305313 +639897 +1106793 +556813 +2210387 +322411 +2210469 +1486328 +185297 +639885 +639899 +2845375 +185311 +70414 +2210357 +2549820 +556844 +979006 +1938987 +246353 +2845264 +185309 +1508751 +1699079 +930308 +556854 +733922 +1840029 +2305915 +930317 +639980 +2613650 +1033138 +103389 +1389401 +1086986 +2812757 +1297771 +2845287 +556821 +2210497 +1715674 +2845297 +2210349 +1118078 +103339 +1098039 +185331 +1587021 +1173640 +674138 +1706534 +2671271 +2210488 +322412 +1743046 +103354 +1928604 +1439954 +639911 +556817 +2210494 +2845319 +322410 +893826 +70400 +322442 +1587011 +1587019 +815857 +1587002 +1906698 +1508749 +1587023 +1081106 +1699085 +639958 +1248238 +2613658 +1248239 +556850 +2812753 +2210459 +2845241 +639997 +1586998 +893885 +1586957 +1846861 +1486330 +2210333 +893877 +225576 +2210451 +1586935 +2845237 +2442769 +225578 +2543099 +639979 +1641466 +2504347 +1980533 +1140545 +185264 +2845186 +2613663 +1049661 +2845148 +771145 +2845296 +2402775 +639984 +2305911 +2402801 +1587055 +2845388 +1390739 +2402776 +1248223 +1128997 +2845321 +2210343 +2045321 +815865 +1928596 +893823 +70378 +1586928 +556820 +431699 +2364012 +1641479 +2845163 +1840027 +639933 +103353 +717317 +1650007 +2210374 +302472 +639891 +979012 +2210432 +1756639 +639922 +2210418 +639884 +287112 +2845252 +1508747 +1248233 +1265165 +2402778 +639988 +2210408 +1641507 +103429 +1508778 +1840061 +297073 +2210516 +2305918 +1928608 +2210547 +2613708 +483335 +2210554 +282683 +412279 +211748 +979034 +1231096 +185347 +1715692 +1587087 +1231097 +1231091 +70441 +1808937 +1069942 +1392546 +1699094 +2613678 +23945 +2613674 +1891399 +1808947 +1840047 +1743078 +282694 +1782433 +2210538 +640023 +483331 +282685 +893904 +455280 +2066244 +699347 +1337119 +2504367 +1020630 +185362 +815878 +2613703 +282696 +1118087 +2402852 +2305925 +1205626 +1965270 +1587086 +1928616 +815882 +1782425 +1069933 +1891419 +2671284 +1928613 +2364017 +211752 +2210541 +1808917 +2210580 +815871 +556876 +2210512 +1587060 +1378820 +2210566 +70446 +1840038 +1135201 +1721337 +2714063 +1928612 +1479976 +2284940 +70437 +2095411 +2613712 +815875 +1508774 +2705756 +2002011 +455272 +1808954 +70443 +1587080 +893896 +103434 +1194207 +282684 +70442 +1508769 +2504368 +1743067 +1587069 +556862 +640016 +1928625 +2613705 +225580 +455265 +2095412 +225582 +1248241 +103423 +1069931 +2210552 +1743066 +2284944 +495389 +640017 +1020616 +1152690 +2613685 +1587064 +1392545 +1164839 +717320 +2504351 +2341983 +1020628 +1980536 +2613680 +1231081 +979022 +2714056 +1076118 +556880 +2210562 +2210528 +103419 +2003497 +1782427 +1641519 +1486341 +2364024 +1641514 +2342006 +2210582 +2006861 +412287 +2070942 +1088421 +2095413 +1069935 +255568 +1715704 +1808984 +2305952 +345133 +1194233 +1337172 +1400209 +2442796 +1587140 +556953 +1281791 +2284960 +556933 +1808994 +2210671 +2342020 +2671298 +2504422 +1337145 +2284965 +674147 +1337147 +979051 +1231117 +1194240 +2504470 +1508802 +1587108 +556962 +930335 +2504458 +1337150 +345146 +1081123 +1699112 +656082 +103465 +2504463 +1337181 +2613725 +2342019 +2758145 +1743086 +225585 +1360115 +2210626 +556904 +103438 +556950 +656081 +1281784 +103491 +1118095 +2210653 +1337169 +656076 +640035 +1782461 +2504389 +1699104 +103452 +1400212 +1782465 +930336 +2027417 +2013042 +656089 +2210616 +2210622 +345144 +2210591 +2504454 +930343 +1392547 +1337177 +103448 +733927 +556946 +2714067 +1952222 +556928 +726859 +2095440 +1952220 +1378826 +2743693 +1715705 +1891454 +1508787 +1439974 +905743 +1337159 +815896 +345145 +2006863 +1808973 +1891469 +2045349 +1699116 +699366 +556884 +2504408 +2342013 +1587121 +656086 +200516 +556889 +556955 +345128 +2504474 +103487 +2504433 +699361 +2210648 +1808967 +2504443 +656063 +2210686 +930344 +1281788 +979047 +2442797 +1069963 +1891452 +2210598 +1360119 +483340 +1337132 +2671299 +1281782 +1231122 +1768160 +1368253 +1587141 +1337156 +2013047 +2543127 +2342017 +2702297 +1508790 +2095442 +225596 +2442798 +255571 +345136 +345141 +1891487 +1699115 +2019484 +1699118 +2284962 +2504456 +2504420 +1782448 +103489 +930346 +1891472 +2714077 +1508798 +23960 +1699107 +2210619 +2504401 +1337183 +1337144 +103476 +2210687 +2504388 +1337184 +1809036 +1891566 +1699136 +1928683 +185390 +1389416 +930401 +282720 +255583 +893955 +2812829 +1194256 +1641529 +2210820 +556971 +556973 +103505 +1248243 +557036 +2812802 +930377 +893920 +893929 +1194251 +2515965 +699375 +185369 +1156902 +2613786 +2305962 +2845398 +640178 +2210885 +1508829 +1928668 +1479981 +200528 +225604 +225627 +640068 +640138 +1231171 +930372 +1098069 +431709 +2210803 +1360127 +1818713 +431710 +1809044 +1891494 +1906703 +2210869 +1486350 +1715709 +1281797 +979082 +2831539 +386219 +1587211 +2504526 +1980565 +1840085 +1699138 +1265210 +2442811 +1715720 +1743118 +1044324 +1033163 +1587204 +656111 +1231126 +1194259 +1699133 +2019487 +717327 +499371 +495396 +2095462 +282709 +211760 +1360135 +1641531 +483344 +2845403 +815929 +185370 +726891 +1360144 +979123 +893958 +1891495 +1980568 +185367 +1033160 +1891557 +557005 +1840097 +1928678 +2095447 +2210827 +2210749 +2402905 +1809034 +1231147 +1337211 +282717 +1891521 +1231173 +1980574 +930371 +2812840 +1140559 +2305994 +2549822 +225612 +1699129 +1743122 +2812790 +70465 +255584 +2342077 +2504541 +1818710 +815949 +640084 +2671345 +699384 +2419723 +1360138 +103511 +557044 +2812832 +200519 +2671361 +1980561 +185376 +2210848 +1070002 +1928659 +1337206 +640181 +2812844 +2504542 +1033156 +2305991 +1980564 +1098053 +640163 +1980567 +930406 +1928662 +2305999 +979088 +1743143 +2210884 +2210761 +455303 +225621 +674162 +345153 +979090 +2504530 +455300 +1891529 +1891571 +1980579 +674157 +2515957 +2066245 +930381 +1231157 +726871 +557002 +495398 +1098057 +557032 +2095450 +1938999 +1098067 +1743128 +1980586 +2402881 +1891532 +557051 +2671347 +717329 +739349 +2543130 +2342043 +1952228 +699380 +2342051 +2515964 +225637 +557007 +1587206 +1164860 +1641522 +2019488 +386222 +282715 +1305331 +1743107 +640051 +979122 +2613750 +893946 +225645 +815963 +2210719 +2442819 +2402886 +674163 +1587178 +103520 +979127 +455298 +2626907 +1743117 +2342032 +1952223 +640115 +225614 +893952 +2812843 +2342074 +674164 +1965281 +726887 +2671338 +1156900 +1069977 +185386 +2543162 +2504522 +1587160 +947595 +2210865 +282707 +282711 +103535 +1098049 +930358 +1170262 +930408 +2504527 +2210806 +674151 +1906706 +1587174 +2613742 +1152697 +1840074 +2442809 +2504539 +1508820 +455299 +1337216 +2543141 +640156 +1098068 +640149 +640042 +225634 +2095461 +255582 +1928664 +2671332 +905748 +1743161 +431714 +640103 +1231137 +893936 +1098048 +2504583 +1891599 +1337273 +255603 +815993 +2211021 +2613967 +1587516 +816031 +455311 +2002038 +1522966 +1991775 +816051 +2758190 +1980601 +771163 +1699157 +1743216 +2743712 +816037 +979135 +1679834 +2714161 +185434 +200537 +2211089 +2515976 +2002047 +1098089 +1679826 +1891705 +1098114 +2504567 +1135206 +726956 +1081143 +2831554 +1587435 +1587299 +2013070 +2812860 +2070950 +2210952 +2758185 +1641537 +2211085 +2714167 +2831565 +349564 +674224 +1440015 +2714095 +640343 +185406 +1057342 +349565 +1406571 +1406570 +185469 +2732936 +2342123 +2504587 +2671386 +947609 +2342154 +1508887 +557140 +1641571 +1587461 +1891675 +717350 +2013079 +2613833 +2812853 +1818723 +674264 +1944054 +2743716 +2013080 +1965304 +557096 +103548 +2342119 +2286104 +1044326 +2613840 +930443 +1991787 +2831562 +1020665 +1231205 +2743700 +1281806 +717359 +1840159 +1337260 +557070 +1782506 +640324 +640295 +246398 +1057370 +1782498 +726906 +1641554 +894041 +185465 +1231221 +1641550 +1305350 +2284990 +1980626 +815983 +1782516 +1587503 +1969855 +2013064 +185447 +1194281 +2442892 +557167 +2442821 +1587385 +1081139 +1679833 +2442942 +1098098 +2504638 +726929 +1440014 +2613951 +2211065 +2210989 +557078 +640317 +1205635 +2812880 +1070008 +2210911 +979194 +2738897 +1679814 +2006898 +185459 +739357 +2342088 +674213 +2613934 +2211045 +2019501 +1641535 +2613802 +2442885 +1587330 +2714150 +2442870 +1891620 +1809073 +1641580 +1231231 +1891695 +1809082 +640300 +1389421 +2738893 +674248 +2364047 +2095516 +2442904 +1508863 +2306011 +2626909 +2442913 +894045 +1305345 +2013071 +930442 +1106803 +2284988 +2095523 +1440013 +1587429 +1337275 +2002064 +1587440 +1410202 +1991785 +1360155 +2613830 +1231200 +1782525 +1980655 +2210981 +1818719 +1231197 +1057333 +640273 +2095497 +1587293 +1782523 +1384360 +726934 +2504659 +2686080 +2095511 +2006885 +2442934 +1715722 +1522967 +1479995 +2613837 +1891665 +2284987 +431718 +2702311 +1337281 +2342124 +640315 +1768173 +2342192 +1782490 +2543184 +2442894 +2045358 +1390744 +2732933 +2211087 +1587346 +381703 +1944052 +1587410 +717345 +1386141 +1337295 +557158 +2714174 +726897 +2442840 +1743196 +1891618 +2095478 +2714154 +431721 +2702305 +2442851 +483355 +979195 +979146 +2714148 +1372953 +1410201 +1891708 +674194 +894022 +412303 +2613856 +894015 +1164863 +2626918 +2442830 +2613836 +1587467 +2515979 +2504645 +1891687 +1840109 +70481 +1891602 +1891655 +557061 +640322 +1587370 +894042 +1991783 +2719785 +1587395 +1743176 +2732934 +1587241 +947624 +1641564 +412302 +103538 +2442941 +2364051 +2306054 +2364041 +2419728 +699437 +1699150 +1650015 +1384370 +1057327 +1587303 +185429 +1508857 +2543174 +2442862 +1440002 +2210895 +2504623 +557150 +1980631 +894050 +1194305 +1891694 +726947 +1400216 +225663 +1587301 +2549827 +2613909 +2006881 +747578 +557098 +1360160 +656145 +2714157 +1098096 +1508860 +739360 +640218 +1641569 +2066249 +640301 +2095507 +246385 +1081135 +2210899 +1057373 +2306076 +103586 +1952233 +674198 +674231 +2013102 +1337270 +640268 +726945 +345163 +1057352 +930432 +2714118 +1033164 +2002054 +1098116 +2732921 +557176 +2306024 +1840146 +894035 +1386132 +1891653 +2442903 +1743208 +1809071 +2210947 +1587519 +1508883 +2342132 +2306003 +1081151 +2613915 +1782522 +2442833 +2758162 +1587326 +1991777 +1782493 +815992 +103550 +1508855 +930418 +1743195 +70479 +1587388 +1587272 +2211040 +815997 +699399 +1743202 +455313 +1891698 +246397 +483352 +1768165 +557163 +2284976 +1384363 +70476 +2210913 +1587464 +2342184 +2285012 +2095535 +2066250 +1891658 +1952235 +2402955 +2211044 +2019498 +2613973 +816036 +2402932 +2019504 +640245 +1248270 +2095484 +2543192 +893959 +2758184 +1057358 +2286099 +1522960 +726916 +1840150 +2504586 +70469 +1768163 +979138 +640377 +2671375 +656143 +185417 +2002046 +1840141 +2306098 +2342118 +255602 +2738894 +103566 +2210967 +1980605 +2743707 +225656 +674252 +211767 +557118 +2306040 +1980624 +1098118 +2095476 +640189 +2831553 +674266 +2402956 +185433 +1337269 +1378842 +1891681 +1587450 +2210948 +1231235 +816076 +2442839 +282746 +2284983 +2442820 +815973 +930412 +2613949 +656125 +1782491 +1337233 +2613859 +1840143 +1070031 +1360147 +2342138 +23979 +1782513 +2284997 +2211118 +2211006 +1098083 +2613865 +103581 +1337238 +2543240 +1314017 +1809064 +185468 +2671383 +2442923 +2442896 +1980615 +640283 +726944 +893989 +1906714 +2714094 +2812865 +1980637 +2211046 +103539 +816055 +2725065 +735947 +656133 +733943 +2613936 +1337272 +1679854 +2211039 +1840165 +640309 +2543214 +2504673 +894031 +1587427 +103595 +2306034 +349572 +1337319 +1587512 +1891598 +1664366 +2211125 +2095471 +2738900 +302507 +103630 +1205647 +1265218 +70494 +557257 +1129022 +1129019 +1368271 +1891742 +699448 +282768 +1400226 +1684818 +1337344 +70511 +947663 +185604 +1345812 +349586 +185480 +2342245 +1020729 +947645 +894061 +2306103 +1587545 +246409 +894071 +472860 +103665 +246415 +1368267 +2211141 +894073 +1587567 +640575 +185567 +2306143 +1587585 +185507 +1891715 +1281829 +894084 +1258206 +1020754 +185612 +1891756 +2737430 +495426 +894085 +1658507 +894065 +816117 +2812932 +979214 +947644 +70509 +2419731 +2066255 +103620 +640421 +640418 +495425 +947647 +640544 +1587576 +674324 +185522 +816099 +979228 +640447 +894068 +2006909 +1231260 +1906725 +947654 +1129024 +894106 +361707 +1706546 +225684 +674305 +2066262 +381720 +103692 +185589 +640515 +2342254 +557205 +1360180 +1020698 +246426 +640424 +1928709 +1440022 +1721342 +2211134 +1587606 +2013110 +1337363 +1390752 +185531 +282764 +674273 +2683372 +2306138 +979232 +717376 +1587592 +1231261 +733974 +1129035 +2671405 +2738928 +2738931 +1891735 +1305351 +23990 +1480013 +1846866 +2812916 +1337328 +1345798 +947636 +185542 +733972 +2342203 +418021 +2342224 +2504724 +640538 +557253 +1020717 +282756 +1980668 +2211213 +349578 +1980703 +103646 +2306118 +1129034 +1684813 +640437 +2211187 +2812913 +2006906 +674304 +640417 +2342212 +2402967 +2306107 +717387 +246435 +894100 +2342215 +185617 +185504 +282763 +103606 +1106813 +557258 +2504736 +1641652 +557207 +185510 +1939003 +1372965 +393495 +674320 +1840173 +185578 +640548 +2342214 +640564 +1508932 +2211221 +1508924 +747595 +1345801 +2306131 +2342205 +2504708 +1641615 +1020718 +2738907 +2812923 +455334 +674278 +1891744 +894077 +282753 +2543257 +2402984 +1980679 +1991805 +2211147 +495405 +979229 +495422 +2738929 +699452 +1345807 +1743225 +282770 +455342 +557225 +2738912 +2211159 +2211128 +1106818 +185478 +2211229 +393496 +1969859 +1020699 +1345799 +2671415 +2504705 +640579 +733973 +1372960 +979222 +472869 +103628 +733971 +103669 +1996934 +225686 +640433 +733950 +1699170 +2211149 +2812903 +1297810 +1378847 +2812895 +640493 +2211167 +1508943 +640554 +185499 +2402999 +1360169 +322469 +1891761 +816092 +1164866 +726986 +1587615 +2003508 +1522983 +656162 +979218 +557245 +557213 +2306116 +103681 +2211168 +2211240 +717381 +2211162 +557219 +2306125 +2738926 +2211166 +1368268 +1231258 +1891727 +1360183 +1996937 +1440033 +185557 +185526 +640518 +2543271 +2515987 +185525 +947666 +2671418 +1106825 +640530 +1980662 +640502 +1891750 +717369 +979211 +1641613 +2671402 +640430 +979208 +640478 +726965 +1587583 +185601 +1020736 +674298 +495414 +2504712 +1508930 +1891737 +185618 +2211251 +185576 +211775 +103641 +2402986 +1809101 +483365 +1440050 +1070037 +103642 +246403 +2812924 +282808 +211791 +1281836 +1743258 +1587649 +185631 +1715740 +1044337 +2364065 +1641685 +1297815 +70537 +1480031 +1440059 +1587637 +739362 +727001 +2738936 +1891794 +2683374 +905767 +674350 +2211305 +894136 +1098122 +1372970 +699469 +185633 +640612 +816164 +1587644 +640586 +225699 +2714184 +1480042 +1587658 +1743265 +1205648 +557284 +1891792 +1194338 +1098127 +1129040 +1641686 +185637 +1248298 +2211318 +1522994 +1440084 +2211339 +894119 +1297827 +1081157 +1840192 +1906735 +1891799 +894128 +557300 +674354 +2543276 +2671427 +2211324 +1587667 +2543275 +1939006 +282807 +816125 +979251 +1641684 +2614024 +322490 +674340 +1486368 +1440085 +1152709 +1522997 +640611 +225698 +2671423 +640609 +1386152 +246454 +771174 +1129037 +816130 +1906734 +2211268 +246443 +1020763 +2271189 +1020761 +640590 +1508965 +2211265 +2095547 +2543280 +1641687 +717401 +322492 +2211257 +1840198 +2211346 +2211311 +255608 +1440063 +816148 +1756647 +1440064 +557272 +1928721 +1679868 +1679870 +699468 +1378849 +1098125 +894157 +2211286 +557292 +1743273 +733986 +70536 +640625 +2364057 +816129 +103717 +1118145 +2671446 +1297817 +393497 +185625 +640629 +1846869 +1297819 +386226 +2549834 +2543277 +1337378 +1715741 +1721344 +1258217 +816155 +816160 +2714182 +816122 +2364067 +2614015 +1965331 +1743268 +1891768 +640583 +1679871 +1587669 +557282 +2614040 +1508954 +1231265 +1587653 +2614135 +246457 +1809142 +699479 +2614094 +1194345 +930506 +1587809 +2403049 +2614129 +894206 +894195 +2671477 +1587772 +1928782 +103749 +2095577 +1928734 +2614113 +2342271 +816226 +211793 +1587791 +2702314 +979287 +103729 +2719798 +1587709 +185677 +1231298 +2342319 +674372 +816197 +640689 +2211431 +2504780 +1928746 +302520 +2504778 +1928791 +1587678 +1743311 +1980723 +1081165 +674380 +2419741 +557314 +674365 +894165 +2671451 +1699186 +2342299 +185669 +1650028 +640700 +640692 +103765 +2095563 +1098132 +894188 +1743347 +1699210 +1587696 +2702317 +930499 +894180 +1891828 +1086997 +1641693 +1928747 +557305 +816166 +1231305 +1641698 +1231327 +1118156 +2211429 +1743352 +1231306 +771182 +287122 +1743330 +1231316 +1281850 +894185 +1020783 +816174 +1928776 +1965361 +2614101 +894200 +557319 +1587723 +2504769 +1587688 +103720 +2403042 +103721 +2614140 +225714 +2671494 +103762 +979329 +1587807 +1231285 +2095588 +70555 +393500 +1809127 +225712 +2095573 +2342324 +2614076 +1840217 +70560 +2211381 +557307 +699477 +1231290 +894184 +816179 +894186 +24022 +640715 +1587739 +2614063 +2671464 +2614107 +1699205 +297080 +1743292 +1587693 +1081164 +24016 +2342311 +70549 +1523000 +2442959 +557325 +930512 +2614082 +1743297 +1587771 +816184 +103764 +2211365 +103732 +640684 +1587751 +1928760 +2342328 +1098136 +2504766 +1118162 +1129048 +185660 +483371 +2403045 +2702318 +1194352 +1587683 +2671458 +816199 +1587692 +2671453 +1928765 +1587728 +2812961 +1044339 +1699188 +894199 +674369 +894192 +771183 +2403040 +185679 +2342303 +246456 +816218 +185664 +185727 +1231309 +1587708 +674359 +1699197 +894182 +302519 +1337414 +1231296 +1743300 +640661 +1033186 +2614093 +640695 +185718 +1231301 +1679876 +1033183 +1928748 +1118166 +185678 +2812962 +2211425 +1118165 +2306156 +1928774 +439574 +2504786 +1587976 +930522 +1231344 +1258228 +1587924 +185731 +2342392 +2419754 +200553 +1699225 +2342412 +282833 +816273 +1743381 +1231352 +282826 +24041 +1743387 +1044346 +2403089 +771191 +322513 +1164873 +1587970 +2714199 +2614172 +2504847 +2504810 +2504807 +2626945 +894292 +1743392 +495431 +2442973 +930521 +1587956 +1152712 +1743399 +930532 +1070048 +1928832 +1337438 +2211546 +1809147 +2306165 +930520 +1509000 +1587844 +1743409 +185788 +282835 +1231355 +1025190 +2614161 +2342338 +894326 +2614213 +2403088 +1658511 +185742 +2516007 +1809152 +1231342 +1587914 +483372 +70578 +947699 +1587822 +2342375 +297083 +1509007 +2286112 +302531 +185758 +1194387 +1345822 +1194372 +439575 +1891879 +425577 +1684829 +1081174 +1231349 +1587847 +1106846 +2671531 +1641731 +1231336 +1743389 +2095600 +2342442 +1523004 +640721 +246467 +2614211 +894280 +1509008 +1928851 +70622 +2504829 +24027 +2095593 +282878 +70564 +2740713 +350219 +1523011 +103792 +2211531 +930527 +2714197 +2504834 +816242 +894246 +947690 +2095595 +1440092 +70582 +2614169 +2211529 +2504815 +2286113 +393505 +2342341 +246479 +2683384 +2504805 +302530 +1743367 +930523 +816247 +2504836 +2006917 +431731 +1891869 +200556 +1258226 +2614191 +1891858 +771193 +2342350 +2504835 +225723 +2671562 +2306175 +103782 +185775 +282823 +211811 +200562 +2342344 +894257 +1587934 +2403072 +1991820 +2211479 +70581 +185772 +1743404 +1891868 +1743355 +282834 +1587897 +1743376 +2671509 +1743362 +2211522 +699486 +1928846 +225725 +185761 +1033202 +2211448 +1641752 +640727 +1891846 +2211491 +2719799 +894259 +2504809 +1809154 +2211445 +1818742 +771195 +2342386 +2403084 +1337448 +70562 +1891856 +1337440 +894251 +1928811 +1106843 +1699232 +1641723 +947684 +455354 +185785 +1587939 +1743417 +1587855 +1020799 +1641724 +1297862 +1297859 +185760 +816246 +1743397 +2211506 +1194359 +1641744 +1297863 +1587965 +2211530 +2211524 +322508 +1587925 +70570 +1641771 +1523010 +282829 +2342435 +2504803 +70573 +1587933 +1840242 +640729 +2342372 +1587884 +1891853 +1509009 +640723 +640739 +1641707 +211796 +1743412 +1641737 +1928842 +103798 +246471 +1170277 +1248310 +1809161 +1928911 +1809174 +2403143 +2671707 +2626951 +2211734 +2671618 +1081193 +1033204 +2211568 +930540 +1081197 +557356 +1928900 +1337474 +816337 +1759030 +2543316 +557399 +1928885 +1650040 +2504878 +1928953 +2211741 +2614241 +2403123 +1706550 +1928947 +1164880 +816317 +816379 +2211682 +894341 +1588096 +455356 +1129068 +2403157 +1587986 +1743424 +2614245 +557396 +70626 +2504866 +2211727 +930543 +2714202 +1715780 +2403130 +763165 +2504882 +2671660 +1743430 +1081199 +1129062 +816286 +1641784 +1440154 +2403114 +2342459 +1258240 +103811 +1440145 +2504873 +2211669 +2211684 +1965372 +2211746 +1509025 +2070958 +557374 +2702322 +2671611 +2211654 +2211650 +2211583 +1588031 +816320 +1258250 +1928874 +1587997 +557346 +2211565 +1891931 +2211638 +1699267 +2276822 +2095609 +350228 +1759023 +1928857 +1699242 +103837 +1891902 +2504855 +1891925 +2342448 +1588099 +2758213 +1891914 +1281877 +1258268 +282884 +2403134 +2671600 +1389427 +2671625 +557369 +2714224 +1588019 +1588035 +1587999 +1588055 +1928956 +1509026 +2403153 +2211693 +24074 +557352 +816289 +1587983 +2211680 +2403117 +1070052 +200563 +350223 +2211655 +2543310 +1699264 +1129067 +1991824 +1715773 +1588098 +2419776 +816354 +640748 +894334 +1650032 +2671668 +2614243 +2504881 +763176 +1281883 +2543324 +1928954 +1991821 +1281906 +2403140 +24066 +1699250 +1588044 +2211633 +1699273 +2211752 +2342449 +2364088 +2671580 +2614249 +1281901 +816293 +24050 +1033211 +1440149 +763172 +2732948 +2211616 +2095613 +2211722 +2671683 +1281872 +1699292 +816311 +353028 +1641775 +930537 +1337473 +2671663 +1699289 +2211598 +1305372 +1440103 +2671630 +2403110 +1928877 +640751 +1743427 +2006918 +24049 +287128 +2671604 +2211658 +2211768 +103823 +2671679 +2714205 +2671635 +1440129 +1928936 +2211591 +1929074 +394194 +322526 +1928992 +2211853 +2814203 +1929032 +2504897 +2813642 +2813030 +2813845 +2814822 +2813458 +1929035 +2814795 +2813395 +1020851 +1928994 +2814055 +2845513 +2211800 +2814078 +2845835 +2813226 +2342474 +2671755 +2845534 +1641798 +2813207 +2814242 +1049676 +2814192 +1929104 +1305394 +2342462 +2813734 +979406 +1929136 +2813264 +1129072 +2812978 +2845829 +2845683 +2813219 +2813077 +2812979 +2814509 +2813940 +2813664 +2813674 +2813862 +1297874 +2813172 +2813768 +2814611 +2845502 +2814615 +1588152 +1759042 +2845618 +2419825 +1929072 +1129069 +2814211 +2814858 +24079 +894345 +2814168 +2813392 +2845471 +350232 +2813760 +1049684 +2814687 +2813097 +2814423 +2814328 +2814501 +2814558 +2211814 +2845436 +2845815 +2813747 +2813470 +2814061 +1265250 +1929109 +2814666 +1020908 +1081209 +2813099 +2211775 +2814347 +2813590 +1020850 +2814829 +2813844 +2845539 +2814217 +2845607 +322536 +2845720 +322551 +2813645 +2845631 +2814436 +2814731 +2814928 +282888 +2813550 +2845555 +2211804 +816428 +2845566 +2813346 +2813299 +2813274 +2671723 +1809197 +2342464 +2814029 +1929087 +2814711 +2814403 +2813422 +2814497 +2814786 +979381 +2813788 +2813424 +557406 +2813215 +2813121 +2812990 +2211824 +1641810 +763181 +2845464 +2814221 +2813951 +1929043 +2813987 +1044358 +2813953 +2812985 +2813809 +2814164 +2813706 +2211849 +979419 +2813148 +2813762 +2845446 +1258273 +2813428 +2814460 +2845775 +2813917 +2814519 +2814563 +2814869 +2211831 +2813635 +2813710 +2813229 +2814276 +353032 +2814726 +2813682 +2813391 +1929169 +2813010 +2813566 +1440162 +185811 +1049697 +2813336 +2814599 +2813539 +1131109 +2814441 +1929159 +2813323 +2814797 +1929166 +816400 +1020843 +1020857 +979394 +2814054 +2845725 +1928964 +2671709 +2813190 +2813564 +2813634 +2814868 +2211823 +1929052 +1929102 +2813736 +1588145 +2845483 +2813514 +2845650 +2814388 +1928993 +322543 +2814741 +2845443 +2814613 +2813817 +2814463 +2813460 +557425 +2814533 +2814369 +2831572 +2813685 +394186 +2814678 +1641818 +2419852 +2813793 +1049677 +1281929 +2813365 +1020846 +2845441 +640775 +1929094 +656186 +2813004 +1929067 +1929057 +2814760 +2813253 +2813872 +2813837 +2813795 +2813805 +2831593 +2813332 +2814439 +2813578 +1929029 +2845601 +2845691 +2419804 +2814806 +2813907 +2814851 +353033 +2814475 +2814380 +2814737 +640762 +1588125 +2845656 +1258304 +640788 +2814318 +1743452 +816387 +2814823 +816418 +2814561 +2813559 +1929140 +2845479 +2814424 +2814857 +2845461 +2813804 +2813455 +353034 +1929079 +2211794 +674389 +2814920 +2814112 +2813445 +2813143 +2813741 +2045387 +1047099 +1020840 +2814008 +674390 +2813406 +2814488 +2813835 +1929128 +2813585 +2845671 +2814782 +2813764 +2814083 +2813497 +2812986 +2814026 +2814382 +816405 +2671719 +2813678 +2671729 +2814370 +2813415 +2211798 +2813142 +1929127 +2813945 +2814641 +2813892 +640765 +1939030 +2814077 +2813265 +2814828 +2845666 +2814430 +1929022 +1929154 +2814891 +2813857 +2813906 +386232 +2814721 +1928973 +1929026 +1929068 +282900 +2812997 +1258286 +2813098 +2814479 +1265242 +640796 +2814767 +2814903 +1480063 +1118189 +2342494 +1297875 +2813275 +2813536 +2814437 +2813028 +1809194 +2813993 +1929121 +1033216 +1840259 +1929202 +1020942 +1891964 +2504919 +1047106 +979427 +1106857 +894387 +211837 +1965382 +185866 +2814993 +640819 +2815010 +185875 +2815094 +699494 +733993 +282938 +70653 +1929197 +2814991 +640853 +1170280 +1297889 +185848 +640867 +2671782 +2815074 +2815079 +246495 +1891992 +1258307 +2671805 +1743483 +1906749 +2671800 +2671822 +894380 +2403187 +1205660 +1098160 +2614279 +1231391 +2815097 +1088434 +1258312 +1248325 +225742 +1020913 +1641835 +2671849 +185829 +322576 +185815 +361722 +322565 +1106860 +185873 +255625 +1715786 +381754 +225738 +656192 +1679892 +185828 +1891953 +2683399 +1929193 +1699335 +282918 +1588175 +1699315 +1337499 +297097 +2671827 +1265255 +1390775 +816439 +1891991 +2815062 +2403170 +1368282 +1679893 +979456 +2815135 +2516024 +2211875 +947717 +1892008 +1891997 +2614293 +2211904 +1337514 +557448 +1106868 +1044365 +1743476 +2403177 +2211892 +2211878 +361726 +1337510 +2815082 +2504907 +1891982 +640869 +322570 +1588189 +1809203 +70642 +640825 +2671835 +1020930 +2403174 +1743469 +979448 +70643 +2504910 +185854 +640847 +1523020 +185858 +1081233 +1641837 +557441 +381756 +1641825 +2211891 +1248317 +2403192 +2815013 +2504923 +1231393 +1929196 +1152714 +1679894 +2671784 +381743 +1939039 +302545 +1297886 +640829 +455360 +1929183 +1743504 +2815018 +2815043 +1743472 +2683394 +816435 +894371 +1360224 +1809206 +2671838 +1020932 +1106866 +1049713 +1205668 +894424 +1588248 +1818755 +640978 +557467 +674522 +1650044 +1098175 +2758219 +2211928 +1768179 +2002084 +1523023 +2614311 +1969872 +1021024 +1641859 +1205666 +455365 +2671873 +1360239 +1386162 +674508 +1129120 +322606 +1297892 +1020981 +1118207 +717440 +1020966 +185890 +641060 +947746 +640987 +641063 +1588214 +734009 +185914 +225752 +2614300 +70667 +381759 +2045391 +1892069 +2516039 +2342528 +1020993 +246504 +734017 +2419861 +2614306 +640920 +1389432 +674526 +1641931 +641052 +1743510 +1258325 +393525 +1641885 +1641941 +1129121 +225751 +1360236 +1892012 +1892034 +734000 +2738942 +2686085 +1106893 +674471 +1368288 +1258323 +1360228 +894405 +70661 +2614324 +297102 +1070055 +979477 +1368301 +1281936 +322585 +674434 +1641890 +2403222 +674470 +472884 +1588213 +211846 +1840267 +381761 +1373009 +1129097 +1955154 +1248331 +2626975 +322579 +1892053 +656193 +2516033 +641120 +1021001 +1390787 +557469 +727038 +246512 +2671869 +2306190 +185930 +1020997 +1641884 +1106872 +641035 +727036 +185892 +674529 +979464 +322635 +1641862 +1641909 +1337524 +1390778 +2403216 +1020969 +1021044 +2626971 +2626980 +641055 +1641933 +816444 +1892056 +894434 +640919 +2066285 +2626974 +2614326 +1906771 +979480 +2671876 +1020995 +1314041 +979483 +2403202 +699500 +656195 +381770 +1021019 +1969874 +2690122 +322584 +640917 +1641866 +1892062 +322614 +282979 +734010 +1098166 +1129098 +1297910 +322588 +297103 +1965389 +185925 +1892057 +640909 +2003528 +1098167 +1345841 +2002082 +246521 +381777 +322604 +1818757 +1106888 +1021007 +1715793 +2342526 +1258324 +2719806 +1523024 +640940 +640979 +1368295 +1480091 +302554 +1588211 +1170281 +255629 +2364093 +674482 +674460 +641125 +1641856 +1231405 +894423 +640983 +1892029 +1129117 +1021018 +641088 +979468 +1368291 +674474 +640955 +1480089 +1021005 +674451 +2614338 +1955149 +1345839 +2626964 +185918 +70670 +640982 +1588272 +185943 +1021075 +1297926 +641247 +641234 +1929236 +1743576 +1929234 +24090 +1337537 +185935 +1699359 +1991843 +2728583 +1641995 +1929232 +2211993 +641220 +1641960 +641163 +1523034 +1044406 +70676 +557472 +1944068 +2045402 +1337534 +2211964 +2758226 +381798 +1248367 +185945 +2671914 +2683423 +1679895 +1297922 +816453 +2006922 +2504953 +1258327 +641187 +1743523 +771227 +185955 +1021081 +816454 +1588280 +2626984 +1523041 +641160 +2738952 +2671908 +1743594 +2671904 +2671913 +641197 +2271223 +641165 +1368309 +2211972 +2614345 +1231423 +1152716 +1929241 +1118220 +2211995 +1373018 +103897 +1650049 +1081246 +641231 +1281939 +1906795 +641186 +1679898 +674564 +641139 +70685 +894491 +2614340 +2758228 +1021095 +979497 +894520 +1021115 +674557 +979491 +2626986 +641222 +641246 +717450 +1440184 +1085893 +1081241 +1129142 +2671927 +1743556 +1440185 +641175 +1129146 +393559 +1641988 +1641986 +674549 +2671925 +2211987 +1106908 +1033244 +641141 +557475 +2504963 +1699363 +1345850 +2364103 +1021066 +1980766 +1044409 +1588278 +2719814 +1205678 +1021073 +2671928 +1980773 +641188 +727046 +2211959 +103896 +641258 +2211943 +1980764 +2211988 +1021116 +2671896 +1929237 +1588261 +641182 +2211938 +641228 +282996 +1743558 +2626988 +1021083 +322647 +2045401 +1297913 +2211947 +185953 +641199 +894490 +2714246 +1337538 +557496 +2671895 +1129140 +1980768 +1641984 +1480113 +2614394 +894598 +1194429 +2504971 +1049730 +641340 +1368329 +2212042 +557514 +894566 +641295 +641264 +1314055 +2614409 +1368326 +2212075 +1509064 +674614 +185996 +1955160 +717453 +2714268 +641426 +283003 +734041 +1373033 +1588359 +1980798 +1949254 +2364114 +2212015 +2212043 +894599 +1021143 +2006933 +1021131 +70697 +930573 +674590 +283018 +2614428 +1248368 +894548 +557508 +1297949 +1021149 +1721357 +1368324 +2614420 +1360282 +771230 +894546 +641415 +894578 +641366 +1021173 +2212028 +674591 +1297940 +1929248 +2671966 +2419884 +1743598 +717452 +1929265 +894609 +2614418 +1360260 +1642024 +894615 +1360267 +641304 +1809219 +2728609 +2614390 +1118229 +1809220 +1743668 +1314054 +2702332 +1980797 +641376 +2671978 +283026 +2419869 +2403252 +641331 +674585 +2342567 +1809218 +1743611 +894581 +2403256 +2342564 +1588346 +1955156 +2403267 +1345857 +2403243 +674610 +1480124 +1743635 +2732955 +1929283 +2671991 +1991863 +2364117 +2758233 +2714281 +2719833 +557502 +2728605 +1588323 +1314075 +1588339 +1305408 +674627 +2212025 +283025 +1952253 +2714257 +185977 +641377 +641266 +1231428 +1642006 +1991860 +1642031 +557520 +1523051 +1368313 +2364109 +979519 +2403251 +1360269 +1523050 +734032 +283032 +641327 +2072141 +2271237 +1297962 +1368333 +1021162 +641318 +894562 +1944071 +2306203 +641301 +1588337 +2212081 +2671996 +735960 +1440204 +283013 +2504979 +2403247 +2714264 +2342586 +1743671 +1044415 +1314074 +656207 +2212076 +246541 +2614364 +2686086 +2342583 +70693 +1021174 +1281951 +185999 +2728606 +641375 +2342542 +1840276 +557512 +2212017 +816497 +1980788 +1892131 +103909 +1305419 +2516052 +2714252 +322662 +816495 +2306201 +894564 +1929259 +1991862 +1021175 +1642040 +2740732 +2006928 +2212026 +1360257 +1021144 +641348 +1021137 +2364110 +557515 +641314 +1305421 +2671956 +1368332 +2403241 +557525 +979529 +283015 +1965411 +930575 +674572 +2403269 +1509057 +2714272 +894580 +674632 +656223 +1980825 +1081273 +1699393 +699518 +816509 +641455 +2614481 +1164889 +1057392 +2419889 +1231435 +1509076 +1929324 +2212122 +727082 +1373070 +2672012 +2013119 +1929307 +2505068 +2683431 +2403280 +1337548 +2342593 +1360297 +2403281 +2758257 +1980841 +2672052 +734046 +2614486 +557630 +350238 +2505103 +1642046 +2342597 +2342608 +2212152 +1929309 +1980854 +103926 +2505041 +1929327 +103928 +386238 +1389447 +1991875 +2614487 +2505077 +1809260 +2505019 +2516057 +979591 +1809263 +894624 +557626 +656214 +2614432 +979579 +1373080 +1929321 +1337563 +2342652 +1231453 +1305443 +1021198 +1980810 +1281970 +283040 +979588 +1258352 +2342660 +2505065 +2672022 +1281968 +1840283 +699514 +1699373 +1944078 +1809289 +1194442 +2672010 +2505034 +1929323 +2672030 +979542 +283039 +1699398 +1818769 +2212154 +930585 +979554 +495450 +1070069 +1373094 +656209 +1588394 +1892175 +557538 +1360285 +1980807 +557632 +1991884 +1980820 +2672029 +816573 +2516056 +1081271 +2403282 +1305442 +2342667 +2614438 +557566 +2342653 +2342646 +2505028 +2013118 +1281969 +1809251 +369296 +979609 +1164888 +1809287 +2403288 +1305433 +1440225 +1664382 +1281961 +2212123 +1721358 +1809234 +930582 +656226 +2672017 +1021177 +656225 +1305434 +2095644 +2614488 +816516 +2002096 +2505007 +1337569 +557633 +1809230 +1373071 +2614464 +2672014 +1337557 +1715814 +1929305 +2505089 +2505078 +2342641 +1337560 +2672044 +1892170 +103919 +979540 +2505050 +1440226 +1588436 +2006948 +1373092 +2342594 +2614429 +1699391 +2306215 +2614446 +283047 +1129154 +1389440 +2342614 +2095660 +2212100 +2342662 +2505079 +2505053 +674650 +2504990 +345173 +717458 +1658514 +2019519 +2505000 +1929348 +1106929 +930609 +1021253 +186053 +186023 +641548 +1129161 +283094 +255643 +1248425 +211887 +947842 +641535 +495451 +2353665 +186081 +2271284 +2212227 +734056 +1248424 +1642056 +641567 +1642107 +1360311 +1821975 +1480175 +186130 +1205705 +894628 +2505129 +283088 +1135217 +439584 +283093 +1743694 +1156938 +2505169 +1076146 +297110 +255644 +70774 +331898 +1929355 +2306268 +211872 +283061 +2342670 +70718 +734048 +472898 +894709 +1205701 +1588471 +495460 +1118239 +2271261 +2683435 +70772 +322678 +70781 +425583 +1397226 +1769372 +1386173 +283092 +816588 +1782569 +2729359 +1106914 +1769349 +1721364 +1360304 +1809304 +947853 +331896 +1194444 +70743 +246564 +1665774 +1906813 +641552 +1060798 +1642092 +186104 +2732961 +894710 +979614 +894630 +1769401 +1840300 +1281972 +1480177 +641569 +1265296 +1314087 +1205692 +2732962 +1057393 +2212255 +2353663 +186065 +331901 +472957 +2505162 +1205734 +2505108 +1076202 +2729362 +894697 +1480164 +1509090 +246571 +322677 +2212205 +1170296 +1205690 +2306259 +1588468 +947794 +483389 +1743696 +70777 +2353676 +1440233 +1906809 +2006949 +1818777 +641518 +2271259 +2690137 +186073 +1588484 +1840297 +2702350 +2705766 +1756665 +1642118 +947813 +1665767 +369297 +439583 +2543338 +1164902 +1265300 +1076139 +246580 +283099 +1231473 +297112 +1345867 +1164899 +1076136 +1248459 +1665766 +2690150 +186098 +1684882 +1021279 +1386182 +1248441 +2505133 +246554 +70712 +2403296 +641550 +1106921 +641553 +2212283 +70732 +1523080 +717481 +557640 +1021270 +1642076 +1386169 +1684861 +2212241 +1076169 +70765 +1665768 +283098 +717476 +2505139 +283115 +1076198 +211861 +1248407 +1156950 +1588451 +1684884 +2271252 +381821 +1684858 +2403306 +1785602 +1769384 +283141 +1706571 +2543347 +1164900 +1345868 +2505118 +1509089 +1248442 +283112 +2690147 +734054 +1642068 +1076186 +211860 +1480179 +947812 +1699411 +1588453 +1265303 +283095 +353045 +894644 +1076185 +1205736 +1480148 +894689 +2280049 +381826 +750192 +2729368 +1205703 +1588474 +1679917 +1588452 +2427176 +103940 +1076166 +930594 +1892203 +2369028 +1368342 +930602 +70779 +1509096 +2690138 +186094 +2505116 +1523058 +1642104 +439593 +2743729 +2543352 +1642073 +1248404 +1076161 +70715 +1642067 +641540 +1156959 +186117 +283108 +503270 +1076165 +1892209 +1129160 +186114 +2271256 +1156963 +894639 +393576 +1248457 +2306266 +717483 +1840295 +894655 +641519 +2342668 +1939067 +2815151 +186043 +2212219 +341910 +1785613 +947841 +1684845 +1076181 +381805 +341919 +1248445 +641472 +186095 +1654648 +1642058 +1642087 +2369027 +1892191 +1906818 +2212264 +1314083 +1140585 +472923 +674654 +186047 +431737 +2369031 +1205693 +2729365 +1397215 +246578 +1248391 +70730 +2212272 +2369030 +947829 +1684874 +1081278 +1939072 +1021220 +70704 +2212243 +246559 +283079 +322669 +331903 +283144 +894651 +1194454 +246566 +641574 +393570 +331926 +483530 +104016 +2212369 +1699457 +2212336 +2815180 +2505265 +186164 +2505259 +2815217 +2443009 +656240 +699551 +2306327 +2306298 +557661 +1588511 +1679922 +2683437 +750203 +483483 +472973 +483453 +1170321 +1588599 +1588516 +483571 +1588653 +331921 +1231529 +439630 +2212380 +404710 +483585 +699543 +2672100 +1164918 +503272 +2505277 +70806 +2729372 +404702 +1248488 +1231508 +2306309 +455403 +1929362 +2815208 +1588540 +495517 +2614489 +1070081 +1164966 +455454 +483437 +2443028 +2505289 +104019 +1057402 +483576 +211893 +1076208 +2212322 +1164962 +1809334 +1152728 +1070082 +1588640 +2306280 +1057411 +472990 +2212360 +1085915 +483501 +2212365 +186135 +404681 +1679938 +1164947 +1396200 +2505183 +674667 +750214 +1782579 +472993 +1156993 +1134026 +483533 +1057422 +483554 +1588590 +2614507 +225790 +1231530 +2743738 +2010013 +1588500 +400654 +2505249 +2505219 +1081301 +1248469 +739385 +2505214 +1588598 +930637 +930655 +472996 +455420 +1588698 +2306321 +186166 +1699469 +1231512 +1140595 +1588638 +1679935 +1743702 +1164954 +739373 +1892238 +2443019 +2403315 +1194463 +816593 +1081348 +1699459 +473010 +1588670 +404692 +225808 +1588544 +1176691 +2758263 +2614514 +2505193 +473011 +1081344 +2614513 +104003 +1231507 +1081338 +483468 +2815200 +473004 +246609 +905797 +1699424 +1057412 +404683 +1248463 +186139 +1378880 +1699419 +1743699 +472965 +225847 +2212345 +1679932 +483557 +739375 +1085913 +225838 +1980863 +641589 +404719 +1679934 +1588600 +1588709 +225817 +1762770 +1588608 +24123 +495513 +1194459 +1588654 +2212321 +200579 +186173 +2443011 +1809327 +70810 +1509111 +1588642 +356292 +1588705 +930634 +1588585 +1081346 +1088439 +557700 +2505285 +2505279 +1699462 +472998 +455431 +2212368 +1892233 +930652 +104040 +1588556 +2212324 +455455 +1588688 +930645 +816600 +1699449 +1081289 +1699432 +1231537 +186141 +2306303 +70811 +750198 +1152730 +1509127 +1164925 +2212354 +2212312 +2443015 +483473 +2758265 +483505 +1588623 +557663 +1231517 +1588518 +103984 +674666 +2614492 +1140597 +1378879 +1164957 +1588689 +1588573 +641585 +734058 +455442 +1194466 +1057424 +200588 +2815196 +483535 +104013 +557674 +2306312 +557655 +699560 +1081280 +1699439 +483511 +1509122 +225778 +472987 +2505271 +2505247 +2212498 +2212405 +1743721 +302578 +979723 +1047112 +1588754 +656259 +1337624 +2212510 +1281985 +1129184 +1756683 +1588810 +734063 +104087 +1297981 +894785 +104093 +1305465 +1892275 +1314117 +1305475 +1944096 +641712 +302573 +557787 +2212519 +2306335 +1743749 +557709 +1314102 +641661 +1314109 +1480209 +2212400 +1939090 +2342703 +1588743 +393577 +816629 +1231553 +186247 +1955163 +1588784 +2212493 +2403364 +1991903 +674700 +1642152 +2614542 +1129178 +2212414 +2105301 +2006961 +439635 +557742 +979702 +1980882 +2614540 +1440288 +1588805 +1892250 +2614561 +2212509 +2403339 +1440313 +2714320 +322697 +699575 +674680 +1129186 +2095684 +1406585 +1391305 +225873 +557786 +641696 +2614533 +894735 +1743740 +1588814 +2725092 +2006957 +1588718 +2212455 +2009300 +2212505 +1650063 +1440266 +2364128 +2714303 +1588769 +2614530 +979678 +979720 +771235 +699574 +1756692 +1480198 +1021314 +186253 +641641 +2212437 +979673 +1118249 +455458 +641665 +104078 +2815219 +1337633 +1360333 +2009299 +2095728 +1892294 +2505310 +894731 +641630 +104101 +2614605 +656251 +1305479 +2686100 +1440309 +557744 +1588764 +2025980 +641682 +1715825 +2212432 +641706 +1588734 +2212517 +2306331 +2364135 +1129185 +736592 +2212514 +1892315 +1588765 +557726 +1892287 +1047110 +1314123 +70820 +979718 +2419902 +1699479 +1281981 +186239 +1021336 +2212566 +1892305 +763187 +322705 +1345876 +1360344 +641632 +1440253 +2212507 +1281995 +2105304 +1047109 +283158 +1305476 +1480195 +979722 +1588728 +1588790 +2095708 +2714307 +2686101 +641718 +24142 +1743789 +1021331 +2505306 +979709 +1743773 +322719 +1743732 +557713 +816648 +1480214 +2212534 +1118265 +816614 +1944100 +104065 +1743708 +1440254 +1021337 +1743738 +979712 +2614611 +283157 +2614526 +1699472 +979699 +1440280 +699584 +557760 +1588788 +1231554 +1440276 +186227 +717499 +1955165 +1176692 +816690 +2364140 +1588761 +1360335 +557757 +2672104 +1305483 +656275 +2095717 +2543361 +1588804 +979704 +656261 +2714293 +1509136 +104088 +1743729 +2353692 +1368374 +1373100 +2614551 +557768 +894730 +104089 +1949260 +255657 +1373095 +1129181 +1715820 +674689 +1642148 +2672124 +2212565 +1391552 +2212417 +2403347 +1955167 +322710 +381830 +1368369 +1281979 +2714306 +1021339 +979670 +2095697 +717498 +2614568 +1440305 +2614590 +2364141 +1588749 +2702364 +1118281 +1929407 +1768190 +1231589 +656306 +1699491 +1588869 +1991943 +2831626 +2714377 +557898 +2862403 +2505315 +2873945 +1588870 +1743801 +2743747 +1929406 +656314 +1305555 +1743796 +2873969 +1305565 +1756693 +2009307 +1081372 +2862370 +1743831 +2702383 +557892 +1892352 +674701 +381833 +1258386 +557802 +2845850 +1360387 +1991958 +2831657 +1991962 +1588858 +2306337 +2714367 +1391309 +2692933 +557833 +2873956 +2672161 +2873964 +1743803 +2614661 +2702379 +2672149 +1965432 +2002121 +699607 +1588833 +1440316 +1743806 +2831615 +2831646 +656291 +2815241 +656308 +1440319 +1588857 +1231588 +2732972 +1194480 +930665 +750217 +1743821 +1360359 +1980916 +2614682 +1360395 +1743818 +557823 +1980909 +2831631 +2614636 +2403374 +557827 +656301 +1118279 +2672157 +1991967 +1305567 +2873966 +1098208 +2732971 +816704 +656315 +2364150 +2212599 +2714368 +1588834 +1743808 +2692919 +1991933 +2714329 +1231571 +656292 +816709 +1360379 +2831638 +1991955 +2212588 +2862374 +1360360 +2009312 +2714357 +1282020 +1892318 +2862408 +1756695 +1892326 +1996950 +1337644 +2702381 +1305556 +2614675 +2815235 +1231560 +2672169 +1360390 +1991942 +2212603 +1980915 +2686109 +1305551 +2873952 +2831618 +2614622 +1996952 +1707468 +1282006 +1980926 +2873965 +1337636 +656323 +1809352 +1360422 +2614756 +2212769 +2403388 +557905 +2672198 +1588917 +1231603 +2212721 +1282026 +1699510 +979764 +1699502 +1588877 +1033279 +2095747 +2212718 +557973 +1440358 +2614748 +2505324 +2002133 +1337666 +2212706 +1892379 +2212687 +2403418 +2702403 +1033282 +225881 +557930 +1759073 +2403411 +1373112 +2212749 +1360424 +1588894 +816728 +369308 +1440335 +2212751 +2212679 +2692944 +2212648 +1098212 +1588892 +1965464 +2009316 +1892384 +816729 +2212621 +2212616 +2212659 +2306346 +2702405 +979746 +2614704 +2403421 +2006985 +2672174 +2725100 +1699506 +2419918 +1440330 +979761 +699617 +2614740 +1991973 +2403389 +2714384 +1892370 +1305630 +557914 +2212688 +1337651 +1929436 +2505328 +1305588 +1118286 +1588924 +2212764 +2095741 +2714400 +1282082 +2212650 +1047114 +2212625 +2815249 +1809350 +2212698 +104120 +1929441 +2212710 +2045466 +1440350 +1305614 +2702402 +557970 +1440347 +1965460 +1929422 +2672215 +2702400 +2212644 +2212693 +2672172 +2403427 +2419930 +557927 +2419940 +1588905 +2306340 +2306345 +1360401 +699616 +2702401 +2614737 +2505337 +2306347 +1929439 +2212728 +557919 +2212765 +2212682 +2614760 +2737462 +2758279 +1944377 +1298012 +2702504 +558198 +2702424 +1305667 +2845877 +558266 +2543425 +1965552 +699622 +558082 +1952284 +1944336 +2702437 +2725148 +2364160 +1944207 +1282298 +1944143 +558203 +1337741 +1305691 +1396205 +558268 +1944129 +1965531 +2743762 +558066 +656515 +1992031 +1282260 +1360479 +1996961 +1743858 +558096 +2686188 +2686177 +2725137 +1944328 +1944244 +1305656 +1944307 +2614787 +1944147 +2847971 +1305812 +2007002 +2543420 +641770 +1965604 +2714416 +1282212 +2690172 +1944142 +656389 +2702497 +1305693 +2733035 +558094 +1743869 +1305701 +1337771 +1965579 +1373129 +656452 +1944283 +727118 +1282252 +1373120 +1282125 +2862414 +2714550 +2714439 +558068 +2729384 +2732990 +1282146 +1944373 +2403439 +1965601 +1305731 +1360460 +1965529 +1952279 +2403447 +1282294 +2862425 +641795 +1944296 +2702448 +2672252 +1282093 +1965533 +2702453 +1965486 +1282291 +2714430 +1282152 +1980960 +558032 +2702499 +2693014 +2702469 +1282400 +2725135 +1944156 +2733017 +641773 +2686201 +1360468 +2403442 +1337678 +2702417 +656395 +1282087 +1965626 +2403453 +674720 +2614816 +1305677 +2686157 +2702489 +1965547 +656486 +2737449 +1992038 +1944408 +1305684 +2714481 +1337751 +1305718 +1282337 +1360543 +1952271 +2006987 +1944128 +2725133 +1715838 +558097 +1965576 +1992041 +1944183 +1743864 +1282105 +2614823 +2831676 +1965627 +1949266 +656458 +1980974 +2729388 +558272 +2748873 +656501 +1298014 +557992 +558234 +1980959 +2686187 +1965622 +2692996 +1282263 +2692992 +2686159 +558246 +1360512 +2845867 +2702479 +2702554 +2693018 +558033 +1360522 +1944288 +1944251 +641826 +2862440 +1305776 +558206 +1944169 +2847966 +1980941 +2686203 +558145 +2364173 +1965527 +1944151 +558201 +1965567 +1282361 +1944370 +2737468 +1980969 +727112 +2714492 +641781 +2686131 +641799 +2702510 +2614835 +1282170 +558127 +1944276 +558039 +2732988 +557990 +558253 +1282370 +1952277 +2364172 +2733011 +2714496 +558252 +1282280 +1980965 +1980981 +2692999 +2714558 +1944397 +558161 +1360558 +2672255 +1282301 +1282350 +1360527 +2737465 +1360514 +2702505 +1360426 +2692966 +1944340 +2862448 +2614802 +2543398 +558124 +2737445 +1373142 +1298008 +1337726 +2543408 +2692957 +1337776 +2737446 +1337713 +1965634 +734071 +2614788 +2845866 +2845904 +1949279 +699630 +656429 +2614818 +1360456 +1282405 +2743770 +1944258 +1337668 +558048 +1965501 +1282207 +1965471 +1305785 +2702423 +2862428 +1337742 +1944284 +641750 +558235 +2702422 +1282393 +699633 +1980971 +1396206 +1337728 +1944187 +2543421 +1996960 +1944198 +2714415 +2702495 +717509 +2686120 +656339 +2672250 +641797 +1949298 +2686197 +558084 +1965518 +2672254 +2862424 +2364157 +2862423 +1360549 +1282274 +2845890 +2714556 +558040 +2831675 +2714411 +2725174 +2714479 +2702455 +2686133 +2702428 +656496 +1337671 +1965646 +1305728 +558143 +2714526 +1944294 +674729 +2614813 +1282084 +699647 +2702434 +2702430 +1282214 +1949268 +2845871 +558022 +656347 +1282390 +2714417 +2702529 +1282183 +2847965 +1337775 +2543401 +727125 +656377 +1944133 +2403478 +2342798 +1070102 +2342776 +2729395 +816868 +104135 +1981038 +1588953 +2095797 +1021346 +2672307 +2095794 +1944416 +2505399 +2505404 +1081394 +930687 +2740737 +1081388 +2672345 +2672276 +2672341 +1440461 +2725180 +816916 +1944436 +2702577 +2306359 +1152739 +816814 +1589016 +1057433 +1509177 +1486416 +816877 +1098236 +2007020 +104136 +1440406 +1589088 +558324 +2672265 +2403500 +816834 +2212801 +816873 +2614934 +1118294 +816786 +1057434 +2212792 +816795 +1588970 +2212832 +1965695 +558415 +763193 +1337809 +558333 +1258402 +2403559 +2743783 +1440450 +2212887 +1384434 +2614951 +1509225 +1282459 +2212871 +1892396 +1033294 +2518004 +2543466 +1699545 +1981043 +2342773 +1589056 +2543446 +699669 +1965665 +1809365 +1360609 +2737488 +1892397 +1440408 +2614987 +558411 +2212919 +558412 +1486417 +104164 +2505359 +816810 +1892446 +2342793 +1360600 +2212985 +1743902 +2733054 +1384435 +2443055 +2306378 +1588994 +2212819 +1282471 +24147 +1840340 +2342753 +1231619 +2306400 +1337859 +2342771 +1589032 +2306403 +1892451 +483599 +1588986 +2714591 +2403476 +2815274 +930675 +104186 +979775 +2672297 +2672350 +2714610 +2702570 +558405 +816782 +979785 +1282434 +2403495 +1440405 +1944440 +2614838 +2095775 +2831680 +1406588 +2342790 +1118298 +2212948 +1642164 +979789 +2443041 +2614919 +930689 +1892407 +1981018 +1664401 +2213018 +1509166 +1892437 +2212849 +1965692 +816859 +1929465 +1840329 +1892444 +2672331 +2403520 +1944425 +2714603 +1588956 +2758296 +255673 +2212877 +2505396 +1743890 +816923 +2815278 +1194485 +816808 +1389453 +1282479 +558298 +699677 +1679959 +1892436 +558321 +2403564 +2743784 +1699546 +674760 +1440409 +225887 +2505360 +2740743 +816771 +1981020 +699674 +2342797 +70835 +1282474 +1699544 +558404 +1965674 +1642166 +558385 +1588997 +2212813 +2614896 +2403505 +2505385 +1588983 +641854 +2614846 +763198 +2815272 +2614852 +2505374 +1840317 +2758309 +816858 +2212854 +104191 +656561 +1589071 +2737483 +2702566 +1081387 +2614938 +1337833 +2714608 +455466 +734077 +2212771 +558401 +1194490 +558418 +1282423 +816799 +2505378 +2672291 +930691 +558402 +1231628 +420636 +1981025 +2614996 +816920 +70836 +2306397 +1929474 +2614916 +1509163 +558339 +2672302 +558355 +2505422 +1057439 +2342766 +1194499 +1965689 +2364192 +2702586 +2672333 +2212970 +1981015 +754791 +2505353 +1588944 +2306381 +104193 +727137 +2733046 +2342779 +2672317 +816825 +2672313 +656556 +1699537 +1509183 +1118299 +558360 +1892450 +656550 +2831682 +1589087 +1440386 +1944424 +1282456 +2306373 +1118303 +2614973 +1944438 +2733040 +2614913 +1589035 +2212934 +894797 +2213032 +2403511 +2095778 +2702565 +1715847 +2614926 +816918 +816763 +558302 +1406591 +930692 +816809 +558372 +2403479 +1440381 +1081392 +2737493 +104128 +1440393 +1098232 +2543461 +1282454 +2725191 +2729392 +1337828 +2095754 +2212987 +1588945 +1282461 +816768 +1588987 +1384432 +816792 +483596 +1282464 +763196 +558314 +104151 +2306377 +1965706 +2615018 +1337865 +558459 +2403587 +1298020 +1131152 +2505429 +1589090 +2615024 +930708 +1440469 +1840341 +816949 +1642176 +1098246 +2815312 +283191 +1360624 +1360622 +979844 +1650081 +641920 +2862451 +1098242 +1305838 +1929477 +2070979 +2815284 +641939 +2815305 +1081395 +1118321 +1589097 +641938 +641897 +979828 +1589110 +894803 +1337864 +1021374 +1981066 +894804 +2095804 +2353696 +2702598 +2095801 +2672381 +2543507 +2672370 +341927 +1360632 +2672383 +816951 +2403626 +1743919 +2815302 +558428 +816933 +1892480 +1892496 +1085925 +1314185 +656566 +816935 +979845 +2714638 +1743935 +1509229 +2615019 +1337878 +2815283 +656573 +979840 +1282511 +1314177 +2615000 +1345896 +816932 +641865 +1021362 +1440476 +1098248 +1231638 +1480237 +750222 +1298019 +1098254 +2672359 +1955178 +1057442 +979827 +2615016 +1033306 +1345892 +2815313 +641860 +322725 +283194 +1098251 +816952 +1986408 +2615031 +1298022 +2505431 +641868 +455474 +2403625 +699685 +1642169 +1231635 +1892483 +2403597 +894815 +2615017 +2007021 +2714627 +894802 +717516 +656564 +2342806 +1373156 +1337877 +246619 +2702597 +2306408 +1314172 +1949306 +674784 +558451 +1265336 +558496 +2213062 +1509239 +1589198 +674805 +1684895 +2403639 +727148 +1070114 +2672395 +2002159 +1298040 +1021407 +2213073 +642136 +322740 +2353701 +817015 +1892598 +1081399 +1368398 +386253 +894886 +642040 +2873992 +2095823 +2213076 +1892540 +1098277 +1337907 +455482 +2342820 +1785638 +1098274 +2045480 +2815335 +186349 +1118347 +641970 +2403633 +816979 +322766 +558472 +1509264 +369323 +1021421 +1589197 +1892641 +1440494 +24161 +2066360 +386254 +2364220 +2271362 +2364228 +473044 +104209 +1176694 +2271330 +642001 +2213173 +2045485 +1480250 +1298034 +2045500 +1840397 +2013131 +1986421 +1337896 +1360660 +1368399 +1345902 +1523101 +2873999 +2045503 +1480246 +2815328 +558487 +283199 +674820 +1440486 +2403653 +2615050 +1589181 +1654672 +1892667 +1248506 +322748 +1118333 +947892 +1044450 +1021423 +70871 +2672414 +641997 +369327 +1906838 +2273585 +1589210 +397949 +2213180 +2045509 +642042 +642052 +1265338 +1345912 +1892638 +674810 +2874005 +2702605 +979881 +2213162 +641968 +2364207 +70870 +642035 +2874002 +930711 +2403641 +734122 +1944456 +558515 +1840354 +2213165 +1892633 +1589191 +2213096 +2024857 +1743946 +1642190 +1258415 +2873993 +1642230 +1368410 +246629 +283203 +816973 +1939098 +1131154 +1992072 +641974 +186347 +2002160 +1589219 +1840391 +1523115 +297118 +1298031 +642007 +455479 +1892552 +979865 +1892561 +1480244 +642125 +369329 +1360646 +2831691 +2845921 +1642228 +2213051 +2874004 +104224 +816966 +186287 +2271334 +1892678 +642109 +186304 +734124 +2271360 +322759 +816982 +1892576 +1969900 +1033317 +1650082 +642116 +302610 +1258421 +1782593 +2213087 +1721390 +2066347 +1044448 +2505449 +381846 +1665800 +1129214 +1098269 +642029 +1373158 +2672410 +1840369 +1892668 +642093 +1892599 +558548 +930713 +369334 +894891 +2342824 +1944455 +322738 +909199 +1892584 +186327 +894858 +979862 +1509247 +2845933 +742747 +1589151 +2615044 +1892609 +734104 +2342822 +2045508 +1345900 +186305 +1892659 +1509245 +2615057 +2728622 +558471 +742741 +1337889 +1664403 +1892615 +894862 +1654665 +1231663 +2213088 +1044453 +717538 +186351 +2342812 +947889 +656588 +1892628 +1965717 +369332 +558488 +642110 +2213097 +1391561 +1589171 +1523110 +894878 +2733060 +1992081 +1992071 +186332 +1986416 +1768195 +1981084 +1986413 +104245 +642138 +674796 +699702 +2627005 +2045482 +817000 +2095825 +2213098 +641975 +894867 +734115 +2213111 +674818 +1892581 +1248514 +104238 +2364203 +70866 +2045497 +1892556 +2002157 +816993 +1650087 +2419954 +717535 +642062 +322774 +2543540 +283215 +894924 +2045511 +1589323 +979921 +1929510 +1589282 +2444885 +1231672 +642153 +2213214 +1589273 +1589331 +1231677 +558583 +1756698 +24182 +1929494 +246633 +979922 +1509275 +104268 +1129224 +699712 +1265345 +558590 +1929500 +1929512 +817029 +979926 +1376822 +322770 +283219 +322771 +24177 +2403700 +2095861 +674827 +656597 +2403683 +211904 +1981101 +287136 +2683444 +2615099 +2213205 +331929 +930723 +283220 +1231665 +2306443 +1070120 +642171 +2615070 +2403701 +1231686 +558594 +2505466 +1969903 +558582 +1589319 +894930 +24179 +1706590 +2045516 +1440527 +2815349 +1699605 +2045519 +763222 +1759088 +1021434 +2815356 +979912 +1589304 +558579 +1194541 +1715874 +1106959 +1076229 +2403692 +2369046 +2027440 +2403730 +558591 +2815351 +558571 +2403709 +817068 +894919 +1892684 +1021430 +771248 +70891 +1743952 +24185 +473050 +2672454 +2672448 +2714657 +2095835 +1152742 +2045531 +2815337 +2364241 +2815345 +1809371 +1642238 +1173665 +24173 +1965728 +2505468 +1699575 +1992085 +1231678 +1337915 +1129220 +2702611 +2213253 +740181 +381850 +1589314 +558570 +1248525 +2615100 +1892691 +2615096 +186379 +1906842 +1164990 +1231674 +558577 +24168 +2686259 +1021449 +104291 +2213222 +1699591 +2271365 +642157 +104282 +1440511 +717548 +2815484 +2213276 +1021485 +1194556 +1969911 +2543595 +2690201 +1642268 +1298098 +1480275 +2615199 +2045550 +1360713 +642337 +674829 +2672476 +322787 +2543578 +1892763 +1965745 +1743960 +2714676 +2543567 +1368455 +2543598 +1231704 +1282552 +2815381 +2007028 +1314214 +2690200 +1360704 +642305 +642252 +2066369 +2874094 +2874039 +2213345 +1314212 +1033330 +2693029 +186408 +2505482 +2874084 +1892723 +2213297 +2815372 +2702618 +1981142 +1589385 +186411 +2815404 +1373161 +558606 +283243 +1368441 +558618 +1298075 +2728629 +674867 +283242 +2364255 +2045539 +717549 +1298097 +717551 +1986428 +642245 +1033331 +2733074 +2615181 +2615113 +2815502 +642291 +1589394 +1282557 +2403754 +742752 +1106966 +1744009 +1337946 +1721401 +1892773 +2543600 +1892762 +2615175 +1282546 +1360684 +1314247 +2213309 +979974 +1929533 +1699615 +322779 +1654677 +1840417 +1360705 +1743981 +642285 +1106969 +1744023 +979971 +2403758 +1992119 +1044468 +1360742 +283246 +1305874 +70898 +2543587 +894933 +1360724 +1282559 +104300 +322800 +2672486 +104305 +2066382 +642256 +817086 +1033341 +2364253 +1248526 +2213300 +1345928 +642239 +2743803 +2403742 +386258 +674842 +2095873 +1360697 +1892706 +2874061 +1129248 +1949317 +642362 +2066387 +2693038 +2403737 +455489 +2095871 +2213278 +186425 +322794 +1944461 +1840411 +1509292 +1706595 +1589391 +1258436 +979960 +2733071 +1118382 +1756708 +1642262 +1679974 +979962 +817080 +1744022 +674897 +674878 +1589348 +1021458 +1743983 +2714679 +1589378 +1965737 +1715884 +2002182 +558644 +894946 +1305873 +642322 +1440543 +894992 +1391325 +1906851 +1654681 +1298072 +2002164 +1480268 +1298084 +736621 +674866 +674887 +1944468 +255696 +2403767 +1650102 +1440540 +1981165 +894952 +1480265 +2690203 +734167 +2403766 +734169 +1743974 +979976 +1965751 +1981128 +642206 +1986440 +642225 +642309 +1589352 +2213275 +2543584 +1021467 +2213279 +947912 +322806 +2505486 +186417 +674849 +2874024 +186423 +642294 +1298106 +1305876 +2213317 +1480271 +2874052 +1044482 +473055 +2543576 +894971 +2543592 +674854 +2815406 +2213348 +1360751 +1231711 +674850 +322802 +255691 +2213336 +1085933 +699729 +2815500 +1642256 +642296 +1368450 +817088 +2615165 +1955191 +2714660 +2615121 +324406 +1892738 +1744011 +2403759 +558623 +369342 +2690217 +1955196 +642345 +2690213 +2095867 +2714687 +894961 +2273586 +1654682 +1509290 +558639 +2690195 +1715878 +699724 +771250 +558628 +186409 +1337925 +2815453 +1368435 +558634 +1992098 +2874041 +1248529 +1642257 +1360735 +186399 +894948 +2045540 +1892757 +2615156 +894970 +894934 +2013138 +1939113 +1337979 +1744068 +1589413 +2815616 +2419973 +1744086 +1360803 +1589425 +1589464 +817158 +1892791 +2403850 +699753 +558766 +2815652 +2403844 +2725226 +255704 +980032 +2815592 +2213383 +2403856 +2505497 +558738 +1589441 +1929563 +817130 +1440552 +979996 +2213405 +2009340 +1589452 +1118399 +980006 +1744059 +656629 +1337976 +2615234 +104312 +1194569 +817112 +699762 +1981185 +817163 +1440570 +2002192 +2615226 +642372 +1509324 +283256 +1892788 +1305905 +558755 +1337991 +1360801 +1384466 +1231732 +2045563 +2815655 +2815579 +1840436 +1338000 +817123 +734174 +2686293 +1337974 +895004 +1360807 +2403820 +1298107 +2403811 +1589442 +1589436 +2353704 +1305956 +322827 +1440554 +558735 +1396223 +1944493 +455507 +1744024 +1509308 +1440567 +1194568 +2271381 +2007047 +1589450 +1589400 +1929561 +225925 +1744054 +455498 +322828 +558787 +2815526 +656662 +1360779 +2815638 +1338005 +2213384 +2403831 +817126 +1360782 +2213355 +2815681 +283251 +2615225 +1098305 +656636 +817116 +1509312 +558712 +1021496 +2815574 +2702638 +980017 +1305949 +699736 +1282570 +1360763 +1589421 +817181 +1715893 +1892798 +2443066 +1033358 +817179 +817129 +104333 +1049744 +1360787 +2615214 +1440546 +1679978 +1373178 +2543620 +1892812 +2733080 +2815588 +2815599 +104316 +1337989 +1480277 +2815576 +656657 +750240 +1589414 +1589460 +1305933 +642378 +642375 +1282591 +558775 +1360786 +1305919 +979990 +1360760 +1744074 +2403846 +2403824 +104353 +2815697 +2672507 +1360843 +104351 +104336 +1892815 +1118393 +104320 +1337972 +1589427 +2815625 +1892774 +1194575 +1305944 +1044485 +558764 +1965758 +1338003 +2815581 +2815596 +483617 +483629 +1589408 +1721405 +2403825 +656639 +1258445 +104325 +980024 +1282577 +2403872 +1699630 +2505493 +200610 +2306474 +558760 +736626 +2672517 +1098299 +1282583 +558744 +1194588 +104322 +1258455 +2815603 +2403814 +1744080 +2672528 +2543616 +1360838 +1744044 +2815700 +1992136 +2403836 +2213374 +1944492 +1981195 +1744048 +1376832 +2815589 +2543625 +2009341 +1589481 +104317 +558784 +2403865 +642419 +1044492 +186451 +1305971 +1744103 +558837 +1258463 +1360846 +642457 +1992150 +2672542 +558824 +817191 +1929576 +1338012 +2672551 +1021524 +558811 +642491 +2874298 +2615252 +1965773 +2874156 +817218 +2862477 +1992163 +2874351 +2874296 +186454 +1981197 +1194603 +322835 +2874335 +817223 +2874215 +322853 +642393 +1965778 +895016 +740183 +1368473 +1360859 +1314295 +1756720 +1305966 +322834 +1021515 +1650125 +2874301 +736629 +1589538 +1650124 +727181 +2862466 +322850 +2213426 +817205 +1106973 +1589531 +1589526 +186455 +1589560 +2874214 +980081 +558831 +674933 +1969919 +1047127 +2874321 +558803 +2403914 +2862472 +1992153 +1298112 +2874332 +642438 +1892829 +895017 +895025 +2007052 +1131163 +642406 +246642 +2874213 +734202 +1589568 +1360864 +1194600 +656676 +2874233 +727185 +1033363 +1118409 +2213440 +2403922 +558813 +1118425 +2672554 +734183 +2874333 +2874171 +1759102 +642450 +2874334 +1258464 +734190 +322854 +1939116 +1644930 +322833 +2815709 +2271382 +2862480 +727179 +2874139 +1021501 +1589549 +2213432 +674948 +558795 +283266 +980067 +699763 +642401 +674927 +1376836 +642474 +2045581 +1305978 +1194602 +734186 +2874168 +642398 +1118411 +642484 +1744112 +1929567 +1298119 +1840446 +1265361 +283295 +1642356 +70949 +2369053 +186515 +186493 +2815768 +2815966 +1298136 +642501 +1642332 +2862483 +895084 +1265390 +2615271 +1706606 +2815981 +1258474 +2271394 +1642333 +1589573 +558858 +2403942 +1759104 +2815886 +186605 +186490 +1314316 +1265367 +2369056 +2815793 +2815754 +895049 +1642357 +1589586 +2815923 +1642340 +322915 +1021527 +2815889 +2815876 +1589609 +2403937 +2815888 +1165002 +186528 +674992 +322875 +2815904 +1440582 +2403945 +1589587 +1589604 +1589598 +1021535 +225931 +2815805 +2213462 +186549 +70909 +2403952 +2213446 +1314323 +2815980 +674993 +2815938 +1480288 +1642309 +2403962 +2213470 +322896 +2271406 +2815912 +186589 +2862485 +2815873 +642586 +734217 +1021536 +895062 +2815796 +895074 +1589595 +895070 +2815777 +186548 +2815743 +895104 +186538 +2271404 +1589596 +186516 +642599 +980090 +1021561 +322908 +2213474 +2027446 +2815918 +1021534 +1589612 +1706613 +2815784 +817228 +1376845 +642542 +736636 +2815928 +895085 +2815745 +322889 +322903 +675005 +1021540 +2627018 +322890 +322878 +322874 +642564 +322920 +186518 +1021550 +1706611 +186479 +1654689 +895079 +186467 +1589607 +895092 +1892854 +1033380 +558880 +2213545 +1650134 +1047135 +2714745 +1373191 +1076235 +642848 +675064 +1944525 +2728643 +1440599 +255722 +558878 +642703 +1642382 +1944518 +656746 +283301 +558865 +1021586 +2615299 +1129270 +1650139 +1699649 +1480291 +1440604 +2213493 +642635 +2213478 +675096 +1684904 +1360888 +1744129 +1044504 +642726 +1118429 +1314349 +1654694 +2213511 +1949339 +1314356 +1589615 +1044510 +1231767 +642832 +1992178 +817239 +1021576 +675092 +1981206 +1744131 +2714736 +930766 +895136 +2002201 +817231 +1589644 +642706 +2403973 +2095895 +558935 +2615307 +1955201 +642699 +675084 +558861 +642738 +656734 +2714721 +642802 +1480304 +2213508 +1744116 +2728642 +2213535 +675049 +2342856 +186622 +1306010 +642843 +1892859 +2714725 +736651 +1085937 +1992176 +1440588 +1589657 +186636 +2213509 +1929600 +1305997 +642711 +930771 +642790 +1589634 +1376852 +186620 +2714747 +980112 +558927 +1929579 +642677 +2213529 +656720 +70956 +1368492 +2403994 +1118431 +2403977 +2024881 +1944521 +642746 +1744121 +1440583 +1314365 +1589628 +2404013 +2615302 +1929578 +817246 +1338026 +2213528 +1440601 +1338021 +2714705 +895146 +2271415 +1033387 +895152 +2404009 +675093 +104380 +1986456 +104379 +642647 +1480296 +656754 +2403975 +2213515 +656721 +1650131 +1995519 +1298138 +642653 +675041 +642794 +2714699 +1314344 +642713 +2714746 +1981218 +1338029 +104376 +2714716 +2404005 +1929585 +1992165 +675109 +2714696 +642757 +1106982 +1305992 +1589649 +675102 +1314341 +642778 +2213481 +736647 +1265405 +642688 +642792 +2714711 +895129 +1929599 +558895 +1480292 +186641 +642771 +2009345 +1314364 +675026 +558915 +2725227 +1305990 +895126 +1744122 +1955213 +1440605 +1929595 +895120 +895160 +642797 +1949342 +2714723 +675022 +1965797 +2095919 +2404020 +1406597 +2615340 +1338031 +1057457 +1644931 +2672582 +1165004 +558950 +1265407 +2013144 +1205807 +2364294 +1892868 +1589662 +947931 +1840461 +70963 +2615337 +186662 +1642388 +642895 +930774 +717584 +70979 +930781 +642893 +699786 +1282620 +642872 +699782 +1314370 +1589663 +1906858 +1440618 +1715911 +1892879 +1486429 +558949 +246649 +1205804 +1135227 +1170330 +302662 +225937 +1205809 +2728651 +1440625 +186671 +225945 +740185 +1265409 +70980 +1298148 +734229 +895162 +1298141 +1744142 +2443070 +1345950 +1589668 +200613 +2213558 +361756 +1949343 +2369068 +1944532 +1480319 +1098323 +1338045 +1769408 +1106985 +322937 +104400 +1282618 +930784 +905809 +2364304 +1589665 +322948 +1152745 +558942 +895190 +1684905 +393592 +1440615 +980130 +2095920 +2369072 +2615325 +495575 +895164 +642863 +283307 +771260 +642890 +2615318 +642856 +1523139 +186680 +558972 +104423 +2862493 +558980 +1906861 +817317 +2369075 +2862491 +1944534 +817349 +1033413 +1744196 +1744188 +1589717 +1589715 +1306019 +1840470 +1021650 +2672589 +895238 +322985 +2105330 +2027455 +980159 +2686318 +283328 +817394 +2615358 +186700 +24222 +895240 +817373 +1129281 +104452 +24234 +1047136 +1759112 +1759114 +980163 +71025 +71012 +2816028 +1642402 +322960 +1756739 +2404031 +1480337 +1440650 +186713 +186714 +186688 +2213587 +1033414 +322955 +186679 +1699658 +895209 +1654711 +1098328 +2690239 +1314372 +817321 +980141 +1440636 +1021655 +1282633 +817361 +1744184 +1818797 +817358 +2862500 +947940 +499420 +71036 +817362 +2505519 +771263 +980150 +2672604 +771262 +980192 +1440653 +71030 +2816014 +2672613 +361759 +2672616 +104435 +1589750 +2419990 +1892886 +1021653 +104439 +1589733 +1248566 +1157005 +71021 +186686 +186687 +1106988 +2672633 +1131165 +1440646 +1744201 +980155 +1047140 +1021648 +2615376 +322996 +1892889 +2672590 +71045 +2213619 +2615346 +1744173 +2683454 +1589678 +642928 +2213607 +24240 +1699653 +1589708 +817341 +1589719 +2615359 +2213571 +1642416 +71032 +1744190 +2816015 +1044531 +1589714 +1194625 +186681 +2686312 +558994 +1892885 +817353 +1044527 +817340 +2024886 +817311 +104438 +1131168 +1106995 +817343 +1044544 +1044534 +1589686 +2672602 +1044543 +255731 +1044524 +763241 +1744149 +2518009 +980152 +895208 +1509361 +324419 +1892882 +1033416 +1480339 +71047 +24226 +1265416 +1033405 +642924 +1654705 +2672626 +559082 +656841 +381879 +2543640 +1892924 +2213634 +1589764 +1360950 +642974 +727202 +2213656 +1057460 +2686322 +642964 +559103 +1282652 +2404067 +2816213 +2213630 +2714813 +2816049 +2816151 +2543656 +225954 +675119 +1360929 +104474 +559019 +2213664 +2686330 +2690248 +2404086 +1338101 +817424 +2816186 +1981263 +2816200 +1981248 +1679991 +2816064 +2543647 +1944554 +2816131 +2693068 +2002209 +2690247 +559030 +2816150 +1338115 +2404063 +656784 +1929639 +2816117 +1378904 +104466 +2702646 +1360932 +1440660 +1929628 +1744217 +1981269 +2874364 +2615413 +1106997 +2816138 +2686328 +2816177 +656833 +2733091 +2816130 +817438 +2404088 +2095933 +2816115 +559029 +2816165 +2002219 +559045 +2404053 +2714790 +2693045 +2693084 +1840489 +1981251 +656790 +642943 +1081415 +656770 +2213675 +1282647 +2045587 +1338092 +2213633 +1744224 +1892917 +2816211 +1965826 +1360934 +1509374 +1033430 +2342874 +1986460 +1509386 +2816077 +656791 +2615423 +1650162 +2693067 +2816042 +1298166 +559105 +2816203 +2733098 +2816176 +1360942 +2213676 +1360958 +656826 +2213636 +559055 +1282661 +2816120 +1944551 +1715920 +1338066 +2714785 +2002225 +1840484 +2419998 +2816039 +2213646 +186725 +225960 +483645 +1981265 +642973 +727204 +1981242 +2816088 +2816083 +1929637 +2714777 +817449 +642945 +1231796 +1589768 +1440662 +656776 +1981243 +2816195 +2714804 +2816097 +2002210 +1992186 +1589765 +1892925 +559096 +1944557 +302683 +2743814 +2714774 +699808 +1440664 +642961 +2816185 +1338093 +2627028 +2714798 +699806 +1944565 +1384474 +2213693 +2743816 +1282657 +1906862 +817413 +2714815 +817451 +656796 +1360952 +2095932 +1360940 +1644934 +1944550 +1892932 +2543651 +2404071 +1965816 +1509412 +2342879 +1892985 +2213780 +1650188 +1118487 +1744273 +2213934 +2693093 +1306068 +1118489 +1892941 +1306092 +1981295 +1282759 +559336 +2505539 +2009350 +559166 +1282720 +1992223 +1944587 +2714896 +2002236 +2725258 +1360995 +1258521 +656921 +2714966 +1929682 +1440690 +1440682 +1996976 +1589817 +1440741 +699833 +817464 +2615540 +1440785 +642977 +2342875 +559224 +1338147 +1650186 +656892 +2672666 +980220 +750248 +104515 +104547 +2342890 +1840511 +1231835 +2213949 +1338216 +2213841 +1338151 +1306086 +817502 +2095977 +2404181 +1338129 +2615507 +1589928 +1373200 +2816262 +2714976 +1440768 +980243 +1047149 +1440777 +2672731 +656846 +1440750 +1981294 +2615436 +2213959 +1338127 +2615599 +817525 +2615674 +1644936 +104500 +1258508 +1373202 +186728 +2615652 +2816272 +2615427 +1840497 +1440812 +1338215 +1440752 +2816227 +1360974 +1715943 +1929678 +2364334 +1282751 +1892936 +1033452 +1744310 +104496 +1715944 +2213790 +1440795 +1589948 +2714983 +2714939 +1360993 +2404241 +2420016 +1440766 +1929650 +1892991 +2214028 +2615479 +1699669 +2702686 +2672725 +2672758 +2672709 +2715006 +2045633 +2733110 +2214070 +1282740 +2404172 +2213721 +1981317 +1282729 +2615690 +2714846 +2543680 +2714910 +1231826 +1440755 +2816228 +2045598 +642981 +1338183 +1965858 +104527 +2672693 +2714930 +1282716 +2404199 +2213812 +2672695 +1338171 +1118497 +2615488 +1509401 +559157 +559301 +1589864 +369375 +2214060 +2615701 +2213787 +1744318 +2213906 +2213924 +2213783 +1338150 +1589958 +2404252 +2672749 +1440753 +2213883 +2714921 +1338195 +980249 +2690251 +1360985 +2213761 +2816251 +1282721 +1118477 +1944573 +2342898 +2213844 +559244 +980226 +1929711 +817484 +2672785 +24266 +1338192 +2693115 +559149 +2714892 +2714965 +1440704 +1981326 +104485 +1231823 +1981309 +2543752 +980250 +763270 +559163 +817563 +817541 +2702662 +2543741 +817548 +1589877 +2672786 +2213889 +2213980 +2404120 +1744256 +1338203 +2342903 +817501 +1944590 +2213825 +1744351 +980208 +2213972 +1231836 +1809399 +2714891 +1589931 +1361002 +559321 +817496 +817529 +1118507 +2615647 +2615593 +2543711 +2404118 +2364329 +2816290 +1992237 +2693097 +980211 +1298169 +2733115 +1231824 +2095969 +2213879 +656877 +2214048 +302693 +1944610 +1338158 +2213833 +2213842 +2816260 +2615484 +1033444 +2404188 +2714969 +980236 +1996975 +1231832 +2816291 +1509415 +2615518 +1033460 +2714964 +1440757 +1306079 +2404151 +2214064 +559151 +559325 +2045620 +2543730 +1840504 +386278 +2420033 +2505546 +2342909 +559169 +559344 +2702697 +2615600 +2714861 +763253 +1892956 +2672692 +1361017 +2615627 +2002237 +1744329 +1231821 +2045637 +2420053 +2702689 +2404227 +2693092 +1282757 +1338121 +2342920 +2045608 +2672664 +817531 +1033449 +104529 +559318 +1258514 +2364359 +1589905 +2213897 +2213925 +980275 +2714849 +2213895 +2615586 +104499 +1306082 +1306085 +2213789 +2615588 +2404278 +559191 +656859 +2213752 +1589857 +2364348 +2702672 +817460 +2214030 +559179 +930817 +980222 +1033445 +2505526 +2816278 +1306076 +1759124 +2214071 +2443077 +2615509 +1944588 +2404178 +1338187 +2364340 +559273 +2543746 +1282774 +1098344 +2543729 +2615663 +104484 +2714950 +1440705 +2404153 +1033455 +1981341 +1650201 +2213729 +2045614 +1589855 +2615630 +2543678 +1944619 +2420006 +2615673 +2672756 +1715938 +1715930 +2213969 +1282775 +1965855 +2214050 +817482 +2364336 +2615528 +1440770 +2714880 +104546 +1981324 +1992206 +1282683 +2702706 +2816296 +1981312 +559167 +2404231 +2693099 +2693098 +2543675 +742773 +2342884 +2733109 +2045696 +2213888 +1231817 +2213870 +2714901 +1744299 +1440698 +559261 +1118499 +1981330 +1744317 +2615665 +2420037 +104538 +2615442 +739402 +2505531 +1047150 +895259 +2045667 +1360976 +2615450 +2095954 +2404100 +559254 +763266 +2715019 +1258507 +2213939 +2213818 +2693094 +2672797 +2095960 +2404222 +559242 +559252 +186734 +656919 +2213705 +2070984 +2683457 +1440702 +895261 +1231814 +2725260 +1589922 +1338213 +2213998 +1338210 +2693113 +2213936 +2213971 +2404259 +104536 +1406605 +1992216 +1338177 +2714859 +930814 +2672744 +817492 +559267 +1360960 +2404324 +643071 +817601 +283347 +2415253 +643057 +1265443 +1952312 +1361045 +2342928 +2672957 +2715023 +1386196 +1480358 +1361040 +1642434 +2702709 +1440820 +735987 +2404352 +1893037 +1129304 +186760 +771268 +1314397 +1361062 +1129301 +895273 +2342960 +1590012 +186749 +2686372 +1231847 +817609 +2683468 +2615708 +1373228 +1590000 +255745 +2342968 +817606 +643107 +643100 +2672955 +1047156 +1992258 +1992249 +2672930 +1840516 +2672881 +2672969 +1590018 +1893003 +2278742 +1033485 +1361039 +735986 +643060 +1361064 +2420077 +559350 +734235 +1944633 +1373209 +1373226 +643032 +559349 +2027462 +2420074 +734250 +1744372 +1992257 +643080 +2276837 +1642420 +1744369 +1021702 +1944635 +2672849 +1314384 +2404306 +2369079 +2420079 +2214121 +2672940 +1298176 +326113 +2543763 +2342938 +1590005 +2686366 +2404331 +2683458 +1265447 +1021707 +1021674 +2271435 +1480351 +2404283 +643050 +2615719 +2615718 +2214127 +2672979 +1231857 +1021669 +2672858 +1590023 +2715032 +2672835 +2404327 +1523146 +643073 +2543758 +2045700 +2615703 +1992262 +1744411 +2672976 +1021685 +1650207 +1373210 +1021693 +1589975 +1021667 +2342944 +2342966 +643028 +559378 +1361032 +1118531 +302704 +2672818 +1744418 +1589976 +2690258 +1440841 +643054 +1892999 +2672928 +2672908 +1338225 +1047157 +1440827 +2672902 +2816313 +2404309 +699841 +1590017 +817604 +2404285 +2404298 +727219 +734234 +1480367 +2672926 +1893029 +2683462 +734248 +2672941 +735988 +2672808 +302697 +980281 +1744364 +559374 +2672909 +2404333 +2672904 +1893030 +1589980 +2715031 +643118 +643081 +1893021 +643103 +1373238 +2214112 +2715026 +1744358 +1021665 +1929728 +675175 +104585 +1893038 +2672878 +386289 +1306103 +1440840 +2672977 +1992250 +1282786 +2271432 +1744367 +2672811 +1338251 +1231874 +817620 +186776 +2278750 +2615788 +104617 +1981378 +895312 +1265466 +1992271 +895306 +1744472 +2725293 +1361066 +1338243 +656963 +947958 +2306545 +1265460 +1384482 +1590070 +1590062 +817640 +297139 +2007085 +2404394 +186809 +1440865 +1840524 +323020 +1981369 +1231870 +186783 +1057461 +1906884 +2007084 +186800 +2443082 +734265 +1231868 +2342995 +1361067 +643155 +2404376 +186803 +1939143 +495593 +1248598 +2214151 +817624 +186778 +1590056 +2627041 +1509445 +1248603 +727222 +1231871 +1258534 +2342977 +2214210 +1590042 +1744466 +1118540 +369384 +2420090 +1118542 +2673016 +559416 +1590085 +2045723 +1642495 +1929751 +2615798 +643156 +905814 +1523158 +1345984 +381892 +1345982 +675207 +1642488 +1590052 +473083 +2214176 +323011 +2404410 +302706 +2615820 +1361078 +2673005 +2404419 +2404407 +2214164 +1231876 +2673028 +1893051 +1044567 +643137 +2271453 +2543764 +1906888 +2342999 +1590088 +1194645 +2673030 +186805 +1129307 +643152 +323018 +186766 +2045718 +1893052 +186781 +1345975 +980308 +1893083 +643168 +2740753 +2214197 +1642469 +2045720 +905815 +1298197 +1759133 +947953 +947952 +2214213 +2404390 +386300 +2214207 +2615766 +2306541 +2615809 +1282821 +1314413 +283355 +643151 +717623 +1107002 +675193 +1744474 +2740755 +895308 +1590086 +186807 +643142 +1265451 +326114 +643158 +386301 +2615737 +1981368 +1590063 +323019 +1361070 +1744444 +1759135 +717611 +1361068 +895327 +2673038 +1590029 +2045726 +1440846 +930837 +1248599 +2070985 +1118535 +1265456 +1282805 +2733126 +2615768 +745488 +2343015 +643148 +1338252 +1440849 +1282798 +2404397 +186801 +2615732 +104595 +2673039 +2271458 +734264 +1893066 +2343019 +1906875 +1338258 +356299 +1981364 +393605 +699848 +2278752 +1298195 +1809424 +643194 +1590099 +1231904 +2214218 +2816325 +1486440 +2214245 +1021728 +1893131 +104641 +1893174 +1509454 +1744530 +1929774 +2673077 +2702723 +2702734 +1744540 +1744554 +559438 +1809419 +1680006 +817689 +1345998 +2306546 +2343028 +283368 +2214293 +2214277 +1929775 +2673048 +2702727 +980327 +643185 +1664415 +104652 +1590114 +1194667 +225974 +2615858 +200621 +1744532 +1929833 +2214253 +2343067 +2214280 +302723 +1194674 +104657 +323030 +2343074 +559418 +2214262 +2214230 +1194681 +980356 +2214235 +1893122 +2673062 +980351 +817663 +895347 +559457 +2543774 +1590159 +980317 +2343039 +1590110 +369390 +1782597 +2214316 +1744559 +1840545 +2343060 +2214240 +283365 +2420107 +1440883 +2306549 +1654728 +817662 +1440886 +1840550 +225984 +643198 +656966 +1282831 +1440893 +1440874 +1744523 +356303 +1929805 +104656 +1140620 +1165011 +1929760 +1893156 +2728657 +1965883 +1893154 +980365 +980326 +1744557 +1929771 +1231912 +323036 +1378908 +24279 +1480387 +1893169 +1118546 +2505585 +302718 +1744550 +2343029 +2045734 +2070986 +559427 +225985 +699858 +2816334 +2343045 +2673089 +1590177 +186825 +1929806 +2673082 +1480388 +2343047 +2214247 +2816336 +2505594 +24274 +1893173 +2816330 +1809409 +980353 +211930 +1744558 +643199 +1590137 +104650 +980335 +1440891 +1590156 +980344 +1715961 +1893135 +2306553 +2364390 +2364395 +817661 +1744539 +1361090 +2045731 +1338286 +1173677 +1744534 +980343 +817705 +1098371 +1929831 +1231922 +559432 +1590168 +2354579 +1929811 +1929767 +1590154 +1840539 +1893134 +1590107 +2420119 +559440 +1650216 +2343070 +2214274 +1744496 +2505580 +104640 +1361104 +104668 +1258564 +2045776 +980392 +1590219 +734273 +2214361 +1893201 +1590204 +643219 +1744633 +1965899 +2816359 +2096033 +2271480 +2673148 +643238 +2443088 +1033521 +817709 +1076241 +1744635 +1098383 +643255 +1282837 +817742 +1231931 +734280 +1590267 +643247 +186873 +1070137 +104694 +483671 +1744570 +1098414 +1194690 +1590224 +947971 +727230 +1098418 +1391337 +1033525 +1590230 +1981388 +2027474 +1893274 +1590335 +643277 +2010016 +1314426 +895372 +2673120 +1098433 +1338353 +1590319 +2002249 +2364400 +104686 +1929868 +1085942 +1338343 +1033518 +2615909 +1893328 +559560 +727231 +980408 +1118596 +717648 +643254 +2343085 +1744672 +1893247 +1840579 +1965891 +895368 +1684912 +255773 +503306 +2343083 +1893216 +71093 +2343105 +1893324 +1118581 +1893305 +1715973 +1642513 +895360 +930872 +2673166 +1033515 +2505606 +817766 +895397 +1231963 +559522 +717637 +1440908 +817765 +1258557 +1338295 +1715990 +2615934 +2673151 +980391 +1809444 +699901 +559541 +930885 +980400 +1021747 +1590240 +2002252 +643251 +71101 +1265472 +1057465 +1650233 +817717 +2673167 +2214375 +283376 +643314 +2214359 +1590237 +817758 +1590278 +1590182 +1590266 +2214488 +817727 +503316 +324423 +895381 +1129314 +2505612 +947978 +1021742 +2673161 +1965885 +1021765 +559474 +246678 +2543788 +2615942 +2214513 +2505627 +699876 +369395 +930869 +1523164 +2543811 +323071 +1981399 +1893255 +2343079 +1840566 +1060805 +1044598 +1744615 +1057469 +2615920 +2505600 +1129317 +559577 +559513 +1744638 +1699696 +559534 +930894 +895371 +1509500 +1809449 +699922 +1744661 +643252 +734274 +1205833 +1981392 +1509506 +2066418 +2673128 +895395 +2045756 +1170337 +2702737 +499442 +1118555 +225998 +1893250 +2214428 +817777 +1744653 +559473 +1509505 +2673150 +643220 +455547 +2214377 +2615901 +2214381 +643304 +2615964 +1044587 +2686376 +1744589 +1893236 +2627048 +1782601 +817749 +2702738 +2214470 +1590279 +1118566 +1044591 +817794 +559585 +643316 +643296 +186847 +1231940 +1173680 +1265469 +302737 +2673181 +1590199 +283374 +323068 +495596 +1509513 +1590257 +734279 +675230 +643346 +1282832 +1981398 +2070996 +1840576 +2443090 +2214486 +717640 +1265474 +1893223 +2404515 +643337 +2505602 +2615899 +559505 +1033534 +2096045 +2615881 +1893248 +495595 +1361117 +559542 +1590191 +1194692 +1929906 +559540 +1118565 +895389 +255779 +1118591 +186877 +2543808 +1699695 +2002248 +1509495 +930880 +1338307 +2214437 +643313 +186850 +559525 +1929858 +1314433 +1361140 +1893321 +1590229 +455545 +104665 +643241 +1118578 +656987 +1893340 +643243 +186863 +1044596 +1590238 +104703 +1654733 +1893342 +1098415 +2343103 +643343 +1590183 +1509498 +1165015 +2214484 +386308 +1044602 +1744750 +1981409 +2702740 +381904 +1840606 +255782 +1361161 +1965910 +895406 +2364435 +2615981 +2615995 +1107016 +895404 +1044601 +643402 +817838 +2758327 +643389 +2816362 +895428 +643375 +930909 +2616010 +1840608 +675259 +1231968 +2343124 +1033558 +1893399 +2725302 +2214551 +2214576 +1965911 +1107014 +2364433 +2007097 +1298211 +2702753 +2343113 +2693129 +369415 +1081432 +1376858 +1944657 +1282850 +895438 +1929953 +980465 +1893354 +2702742 +980482 +1306147 +1021771 +734290 +1265476 +2616014 +980473 +2066424 +2404537 +643370 +1893431 +369416 +323075 +1194719 +2690282 +1840607 +699935 +1929933 +1744724 +559591 +1744707 +1480407 +2404534 +2002258 +2690270 +1480397 +1680039 +186893 +1929939 +643374 +369413 +1744732 +1744743 +895420 +2543834 +302744 +1840604 +1373246 +1929969 +1314452 +1590380 +2214526 +763280 +2343112 +2364426 +2673233 +2690281 +2715045 +2715071 +1231981 +1744696 +1258570 +2066423 +386318 +1893480 +2715056 +226009 +1809460 +1021781 +1699705 +699954 +2702749 +895424 +2364436 +699964 +1338374 +1346014 +2364430 +1744730 +1893425 +980472 +1744709 +1361171 +1893461 +2543827 +699934 +742786 +1590384 +727242 +2615997 +675253 +2715054 +2007099 +1231969 +2364428 +1314450 +1440918 +1684915 +1410224 +323074 +2702745 +1361167 +2673222 +1981404 +1314442 +2733145 +2214582 +1231993 +302749 +1098441 +2733136 +1650242 +930907 +2027475 +2715052 +2214533 +559600 +1981405 +2013152 +1152752 +2420148 +895445 +495602 +699957 +1098443 +1929941 +1893428 +1231984 +2616012 +2690275 +2443092 +736662 +2045795 +431748 +1590387 +895419 +717664 +1929949 +1929944 +1893355 +2725305 +186898 +1929942 +323101 +246685 +361778 +1523171 +2007105 +323099 +361774 +1265487 +1248650 +1893534 +473101 +657012 +473112 +1205857 +255792 +495630 +1480410 +1590428 +2025996 +739410 +1194728 +1194733 +2845992 +473122 +1893536 +2306580 +361763 +283427 +559632 +2505676 +2673303 +1306152 +980495 +1744759 +1118666 +439665 +980496 +717673 +71107 +1744760 +104730 +2026003 +1118649 +2673281 +2616048 +1033567 +211943 +1893499 +1088456 +2683484 +361773 +186924 +283416 +1205858 +323081 +1939183 +1893528 +1076253 +2404550 +186929 +386322 +495632 +455556 +2816379 +495625 +2505673 +1785649 +369420 +425610 +1893552 +1118658 +817844 +1759145 +71117 +2343142 +1205842 +2505685 +2096065 +2673301 +2096057 +495609 +483724 +1176711 +2683485 +1205855 +1194740 +930911 +2543844 +287169 +980492 +2816371 +1129331 +2505682 +455564 +1744770 +559615 +1024168 +2404545 +503326 +1248658 +495623 +1232026 +980506 +283430 +1021796 +2673261 +643441 +1021788 +1893524 +2443095 +1205848 +361772 +2715084 +1893492 +104717 +1893525 +473124 +559635 +2353719 +559640 +1939174 +643414 +1893523 +1021797 +742794 +439668 +930916 +1118660 +2543843 +1258576 +2505677 +1929974 +2845991 +495635 +1893490 +495605 +1070143 +345199 +1893544 +287164 +283434 +302750 +1205850 +361767 +283422 +1232018 +2026002 +1969946 +1265480 +2616058 +2543837 +381908 +1939172 +980508 +495616 +2673300 +1070147 +1021794 +1744774 +1076248 +369419 +1768211 +24299 +1248628 +2505671 +1986466 +473162 +1590424 +71111 +1194738 +381906 +1893557 +2306579 +473134 +2758328 +2816369 +283436 +1893514 +473158 +302757 +643420 +1440931 +2505666 +1590416 +1480425 +2846068 +2066439 +717683 +1397232 +226025 +1107042 +734340 +1642557 +1969948 +1969965 +439683 +439676 +1410226 +1129380 +71150 +1893573 +643544 +1590448 +2690396 +356310 +1480434 +727247 +643553 +1021897 +675283 +734347 +1346028 +2690385 +2404630 +2690389 +643446 +643496 +930925 +895524 +2690378 +1248698 +186952 +2690296 +1021926 +2690332 +1021887 +1480416 +2404575 +1021894 +2002266 +1840631 +381915 +2846056 +1176718 +1368541 +980544 +675299 +1721436 +895512 +909223 +1665811 +895529 +895482 +323193 +439691 +187001 +2271487 +1248728 +283466 +2306601 +2013153 +1642596 +2846029 +643517 +186938 +1021928 +895490 +1981439 +1021893 +1368546 +2404598 +2026014 +323191 +1981433 +1248707 +323232 +71128 +455590 +1664422 +1986475 +1955232 +104750 +503345 +186993 +2690289 +1642600 +734345 +1165022 +323114 +1642587 +1248712 +2846020 +1194748 +2690397 +643455 +1021870 +455592 +980534 +2690303 +1021854 +1021879 +1076270 +1590446 +947998 +1654743 +1248692 +361788 +643538 +473188 +1157015 +1995526 +323176 +323208 +2002268 +675272 +734344 +187013 +211951 +717694 +2066444 +980526 +2306602 +2404580 +2846061 +1107061 +1265503 +675296 +1893585 +1205906 +211947 +1840618 +323219 +2690375 +283446 +1642559 +1368549 +283457 +643567 +1986492 +283498 +2066432 +1076257 +2715088 +1930001 +1939185 +186982 +187004 +1893595 +71125 +643476 +817859 +2404564 +1756788 +323129 +2024941 +1939205 +323113 +1205872 +1986476 +895509 +1642558 +643518 +2690387 +2846018 +2846048 +2846062 +211953 +323152 +2690325 +323119 +1265495 +323204 +1782606 +2214596 +1642555 +246706 +323144 +643502 +1248691 +186965 +1135230 +2690313 +1282855 +187009 +283487 +381919 +1314470 +1044634 +675286 +1721432 +643589 +2690391 +1893588 +2013158 +1995529 +2404585 +71139 +323155 +2686400 +1194759 +323226 +771278 +1361185 +1107023 +1665812 +1509545 +283472 +559646 +2690374 +643452 +948014 +1762772 +1840623 +2690307 +1314469 +1049778 +895546 +2404573 +2846047 +699985 +1680045 +1654740 +2686391 +1642584 +1129378 +246726 +1248734 +473201 +283470 +2690310 +1590460 +1930007 +226024 +1930008 +2690299 +2715090 +734311 +1590461 +1995528 +1098470 +1642567 +186971 +1939194 +1129372 +2816384 +1049776 +895478 +1021898 +2846063 +1590441 +1721443 +186934 +1744789 +675277 +495638 +643579 +909224 +1680044 +1346037 +1021867 +186981 +473180 +473176 +817854 +1248702 +186979 +1022036 +283587 +283593 +104772 +187150 +495661 +1480443 +2420169 +503347 +1044637 +1021986 +369464 +386343 +559689 +717726 +643708 +1930029 +323240 +675359 +345216 +1361187 +350246 +1135234 +675355 +2505710 +1590494 +643773 +1248776 +473268 +283528 +2705801 +1248770 +1022014 +1170346 +1590482 +1049781 +2702789 +734363 +353096 +1523200 +393640 +643759 +1893635 +1248774 +1840671 +643663 +2007115 +1258600 +1021957 +1368563 +1930019 +381974 +2673319 +353090 +948036 +1930027 +2343173 +283580 +948041 +657031 +1893603 +1033578 +643776 +2214641 +643713 +1021984 +643821 +1258606 +187055 +1368573 +1368564 +1744795 +1232085 +643642 +483821 +495647 +2702786 +643738 +559688 +2705802 +643745 +1744802 +1744824 +1361208 +425619 +455606 +255815 +736691 +742801 +2816398 +1107069 +2007113 +1486456 +353099 +187096 +1129393 +2702792 +657019 +1258591 +643725 +643700 +675307 +187099 +1258596 +742803 +439695 +643600 +382004 +1642647 +2505736 +2758335 +1642660 +1306155 +750271 +71165 +393645 +1590503 +643616 +1021994 +386356 +2404635 +483782 +643785 +1480441 +734399 +2705804 +1165032 +1642618 +742811 +2705814 +643655 +675358 +483798 +2705811 +1021980 +1361202 +1314473 +1744801 +2728671 +1744796 +2715092 +2002272 +393634 +895569 +643674 +559659 +2353724 +2505703 +643710 +1033579 +1232080 +283603 +643629 +1118682 +2715096 +734382 +1642657 +1021991 +895557 +817863 +2214659 +1232087 +1070153 +336809 +736704 +2627053 +1699714 +1744805 +1840668 +2702761 +736696 +345206 +2505721 +187100 +1744814 +1756808 +1744825 +675343 +717720 +559654 +1232069 +2002281 +2505697 +2443096 +980559 +734404 +495700 +1590465 +1165025 +817867 +643744 +393626 +643741 +1021992 +734359 +1022034 +425618 +2214650 +675309 +187065 +675366 +483800 +734354 +483811 +503365 +2214609 +455609 +1642634 +2002280 +353095 +734389 +1590464 +1590468 +353104 +323264 +1590474 +736709 +71170 +381966 +2715097 +187157 +734370 +2271498 +2013163 +255813 +643675 +2420171 +734394 +495696 +1022020 +386336 +2758331 +495683 +1170352 +283595 +24304 +1022030 +187082 +643827 +1265511 +1361191 +643797 +1022001 +1756799 +2013169 +2343168 +483802 +1809475 +187141 +2673330 +336806 +980545 +345217 +495702 +283606 +2673357 +323273 +393630 +283600 +643767 +1021975 +323268 +2673337 +2026015 +2343170 +483780 +1906934 +187088 +734391 +1840677 +1523199 +1391341 +369447 +675353 +255811 +643870 +1893712 +980589 +1930066 +1098508 +643833 +559707 +559722 +1893728 +980599 +1893756 +2007127 +980604 +734425 +559812 +1194770 +1194790 +2214731 +1033589 +817904 +1368604 +1232112 +2702797 +2002296 +559701 +1258620 +643943 +1022062 +1944668 +1716029 +657077 +643933 +559801 +909229 +734459 +1118723 +2733161 +2002300 +643874 +643847 +734413 +1165039 +1361242 +1440950 +187180 +675425 +1590532 +1338441 +2505745 +717746 +895583 +1840707 +323291 +700016 +2702796 +2271524 +657041 +369472 +734420 +1098504 +2024952 +187177 +1022063 +559811 +1098486 +643923 +2831727 +1338416 +1930069 +1361227 +1650250 +2728680 +1590546 +930942 +643834 +2214680 +817902 +1642671 +1070157 +2343176 +717757 +1361244 +104792 +2715120 +1930055 +1258627 +104799 +734407 +2616084 +323286 +2505742 +1809484 +1306158 +657058 +1744856 +2831714 +226045 +1338428 +425621 +643921 +1893787 +675373 +1840712 +2733168 +559742 +1346054 +1930067 +1906940 +1361221 +1893798 +657048 +1118702 +2673410 +1022051 +2715140 +246757 +2214672 +1085958 +1893809 +1590576 +2616116 +895613 +675376 +2616096 +1258610 +323275 +2616091 +2673409 +2002293 +643890 +323293 +895607 +1699724 +734439 +2673412 +1906939 +1590577 +2404644 +1992322 +1107082 +1165034 +2715121 +1995542 +1232162 +104789 +1893682 +980591 +503370 +2271531 +980609 +369468 +2420185 +734423 +2733162 +700021 +2715116 +323282 +1590545 +2420175 +1194778 +559729 +1995544 +1194797 +2715125 +2364471 +1744889 +2420173 +2214662 +1969977 +2024956 +2214726 +930937 +895609 +643959 +1170354 +455615 +1118691 +817890 +2690439 +1986498 +1306163 +1338419 +2616087 +734409 +1981445 +1744864 +283629 +1044660 +1721468 +559713 +727265 +2343190 +1306161 +2214679 +1893723 +2002297 +1509562 +2831702 +559783 +657059 +1384516 +1509563 +1368608 +2214760 +187164 +1992321 +1258626 +1258624 +657042 +1118730 +1590536 +1590566 +1930060 +1384513 +643942 +739415 +2733167 +2364477 +1744854 +895589 +1893810 +2364462 +1744831 +559800 +657078 +559716 +1033585 +2214784 +1965942 +734426 +2673390 +1930047 +2214704 +283630 +1368600 +1930064 +2364486 +104801 +386358 +2214717 +1893791 +1650254 +1076293 +323285 +1965951 +1965946 +2214683 +817881 +643948 +483828 +657056 +1194784 +1893680 +643837 +675392 +2616114 +2271520 +1070154 +187175 +1129420 +817901 +1684935 +2096089 +675412 +2096104 +734438 +2831700 +1118712 +1893797 +1981456 +2214701 +1893660 +1338429 +657043 +187173 +1314485 +1981472 +2024976 +1768220 +2616158 +1248815 +2816431 +187210 +1590582 +2214789 +1590610 +2010020 +1930101 +1232287 +1996982 +1194808 +2616193 +1306175 +2673430 +1282871 +2846131 +1930076 +1173691 +1232218 +1376875 +1232291 +361798 +455667 +1680064 +2096120 +644004 +255831 +559820 +1173692 +1699734 +559871 +675438 +2846108 +455642 +331946 +2505774 +750282 +2002323 +1194811 +1590612 +2673431 +817946 +895623 +980660 +1893845 +895619 +1258635 +1022089 +2846099 +187205 +2846117 +1930089 +2616177 +1965982 +1157028 +323307 +643989 +2816492 +2816504 +1642690 +297168 +336827 +2404663 +1232257 +2214801 +643999 +1298255 +2214787 +1509569 +255827 +1523209 +2002310 +1057492 +1232295 +473277 +1022091 +559826 +700056 +341948 +1098519 +382032 +700045 +2816459 +817929 +455657 +657102 +2214806 +643984 +2673453 +495706 +404736 +2214827 +1396247 +1338463 +2816442 +2214826 +657104 +643979 +2673432 +1684936 +644008 +1992334 +1022074 +2816508 +2505758 +1070165 +323311 +1965971 +2616182 +2673429 +483909 +1930092 +2846154 +700057 +2616173 +1140634 +700062 +2364496 +2024971 +675437 +2007133 +1248800 +2816411 +483856 +1248822 +495730 +1809502 +1590608 +700063 +2505765 +1076299 +2616155 +2009360 +1282870 +2733176 +2214799 +1044662 +1996984 +1248810 +2673456 +1024171 +1930103 +2505792 +2024966 +455646 +439706 +255834 +675439 +1232245 +980652 +1033595 +341950 +104826 +2816438 +559816 +2816542 +369517 +1893838 +1232168 +369502 +1939228 +740196 +1893815 +283640 +930961 +2505796 +1969988 +643990 +905831 +361797 +2214832 +1248836 +2816533 +1590595 +2673451 +2816479 +369513 +455650 +1033593 +1981477 +2846153 +980617 +2816402 +1232298 +1906943 +2758342 +1049785 +2013178 +817923 +2816512 +1232231 +2096125 +1346067 +657117 +1338464 +2673434 +895626 +2673447 +817937 +1129430 +1265542 +1232222 +817950 +2616187 +1338468 +2816507 +455659 +2214798 +483891 +483838 +559859 +2616186 +1981470 +1930082 +1930075 +1981464 +187206 +104824 +1590614 +382027 +2816493 +817948 +905827 +2002322 +2616195 +255829 +1107089 +2002326 +2505799 +895614 +1680070 +1129428 +382008 +2404667 +2846138 +559841 +2505773 +323343 +1338488 +283688 +302780 +1098535 +2353739 +187252 +1386223 +1338482 +750286 +2404681 +1060825 +323331 +2616246 +1969996 +187228 +2733206 +2616247 +1818817 +895665 +2026028 +2271544 +895639 +1176728 +1590650 +895655 +2683497 +771284 +473314 +323352 +2214885 +187281 +104851 +255839 +2616239 +1338498 +1944671 +1346088 +1906947 +1232335 +2505836 +393664 +1654762 +187231 +2343215 +2306637 +1118752 +2404696 +1135237 +2673468 +246770 +1205955 +2733184 +1965996 +1298264 +2616226 +2343217 +1744923 +323329 +2404695 +439713 +1076305 +2505822 +644071 +187226 +1939246 +2728695 +980684 +187257 +2616229 +1232329 +734474 +1680072 +473323 +1346079 +455675 +1232318 +1346082 +1232330 +644038 +1205956 +369537 +1338483 +1248841 +644062 +980688 +2728694 +1642697 +1205940 +187214 +1893870 +1590629 +483946 +1642711 +1384525 +1022114 +1965988 +644023 +283691 +323321 +559883 +255838 +2505831 +187232 +1965994 +930967 +1346089 +2343213 +734472 +717795 +323353 +187236 +393661 +1966004 +187239 +1248843 +24311 +2673486 +2874376 +1338493 +1194825 +2616224 +1248851 +1361262 +1642699 +1386219 +1590646 +255841 +644084 +393662 +644081 +1782615 +1107108 +473319 +1076311 +2404690 +2616265 +2733183 +1338472 +455676 +283670 +895676 +675444 +1642724 +1893874 +187286 +187245 +1022113 +1107095 +382049 +2002331 +1346076 +2306635 +727273 +1759150 +2616206 +948065 +2673482 +2816556 +948078 +2505829 +439712 +1906950 +323340 +1044674 +2306631 +1134041 +2214848 +187249 +1338500 +1248864 +895628 +1298268 +1590632 +2616244 +2404688 +1057493 +1744935 +1176725 +817979 +559879 +1248837 +455674 +71194 +644067 +187280 +895645 +1044667 +948080 +817959 +1893861 +1970007 +369532 +980685 +1744938 +1076325 +717809 +2616347 +24339 +1782624 +1665827 +255845 +644089 +483984 +1129461 +1170359 +948083 +2002346 +2616295 +700111 +71233 +483977 +1590717 +1129465 +1440965 +717798 +2816574 +1809549 +559966 +559891 +1894001 +369544 +1098545 +1205966 +2715164 +1906952 +2733233 +455703 +323359 +246789 +980702 +739422 +187294 +1893957 +1248914 +1165058 +559893 +1840757 +2096128 +473407 +700115 +1076333 +341953 +644110 +71223 +455720 +750289 +559960 +495748 +559969 +1893943 +382072 +1392596 +71232 +559937 +331959 +345230 +1376878 +473376 +1930148 +1939247 +1232445 +483994 +980706 +1894036 +226107 +727283 +559973 +483988 +226092 +1744951 +473371 +1894032 +200653 +1893922 +818000 +1338503 +559900 +473334 +2733210 +734478 +1232423 +1509592 +382081 +1338511 +1248917 +1248912 +717825 +700097 +1939249 +455740 +226113 +226079 +1194842 +895679 +1809542 +1894010 +980708 +2816655 +455748 +734491 +700094 +1076320 +739424 +2002342 +1107117 +1076317 +1205990 +1590708 +644095 +700105 +1809531 +2673503 +2733222 +382079 +353109 +226117 +1361268 +331953 +2616334 +1782623 +2505875 +1170361 +1076343 +2715174 +455763 +1699740 +226103 +1400280 +382073 +2214904 +2673506 +742851 +455758 +473400 +1650259 +2816575 +1782627 +1232361 +1205988 +341954 +644136 +1194886 +495741 +1248894 +750303 +1152764 +473378 +1176731 +2013186 +431770 +1893958 +503386 +2743856 +2715166 +1205998 +323376 +393675 +1981489 +1118767 +283701 +104874 +717807 +473336 +455747 +1232407 +361818 +1809540 +1165062 +369551 +1194845 +2693140 +1248869 +1893997 +1894034 +393669 +700079 +2616338 +2214891 +1939253 +2733229 +2343227 +1135240 +2816627 +1809535 +644143 +1590677 +71231 +483995 +1809536 +331948 +1893917 +750300 +740202 +323356 +361812 +483990 +283699 +717816 +1894065 +2616299 +1194893 +734477 +2343224 +1232346 +559964 +1744960 +2816606 +2616276 +2214903 +1893953 +1894035 +2616325 +2443112 +393672 +455684 +1232364 +187299 +2443111 +369558 +1706626 +1205965 +700078 +302796 +1157038 +1509594 +1893926 +104873 +499466 +24317 +1744959 +2816635 +1893923 +1893920 +1194914 +2616301 +2816649 +455723 +2816631 +369550 +1338513 +2616311 +1194909 +1744962 +1893956 +1699746 +717806 +1893954 +104871 +1664436 +1194847 +559910 +323360 +1893972 +2013190 +734479 +1721487 +2353744 +1509595 +1176736 +1165068 +1981495 +980727 +2816666 +2422018 +2816670 +1744967 +2816742 +1840800 +104905 +2543867 +1265564 +226126 +1194931 +473435 +2543875 +1338524 +1590718 +255872 +1809554 +2025012 +2404708 +1265561 +1894116 +484000 +2816682 +1680090 +2404709 +2214958 +1840790 +1022156 +1232453 +2816782 +1944679 +1140655 +283728 +717827 +2505892 +2816712 +980734 +2816663 +2816781 +1906961 +1248961 +2505902 +2422026 +1033609 +1248960 +2816747 +1085965 +2543881 +473433 +2816767 +1785665 +1152767 +2505883 +1152766 +559997 +2422019 +1248984 +2816688 +1134048 +1232504 +1523221 +980741 +1894117 +2816774 +2862520 +2025005 +2214938 +1170367 +369559 +2543882 +2616386 +2214960 +1894071 +2404712 +1088465 +484016 +2214920 +980747 +1400289 +2026036 +1894090 +930997 +2816679 +439752 +1170368 +495771 +1206012 +455779 +1996996 +1384532 +2673543 +1769432 +1232470 +1590723 +1265570 +484019 +1944683 +2214911 +1265562 +484018 +2816752 +1840783 +439749 +2816762 +1809570 +559988 +1440980 +1590726 +104900 +400667 +818014 +2673536 +2816789 +1338517 +2025006 +2816758 +1118785 +1930176 +1232457 +1894102 +1173705 +1135243 +1206008 +393676 +255864 +1840788 +1840808 +2505888 +1894121 +1840782 +1930185 +2816792 +1944677 +2673549 +2214959 +2214936 +473449 +1818823 +1118778 +1248951 +1361285 +1840779 +1118828 +1894161 +818030 +2025019 +104941 +2616425 +255934 +1098589 +484072 +495790 +739429 +1232558 +1361293 +560029 +484051 +473517 +283734 +1098585 +1818828 +560066 +1085970 +455825 +1232574 +473491 +560088 +700161 +560052 +302813 +1930215 +909243 +700208 +2816872 +386381 +734502 +499474 +1894188 +1384535 +1022161 +1346100 +2505944 +499501 +1206029 +727296 +361828 +473474 +1642744 +473475 +473470 +727286 +455824 +2214966 +1249001 +1118802 +2505918 +2715182 +1232569 +2673612 +560097 +1258682 +717840 +1930240 +1118794 +2420199 +2673563 +905836 +226164 +484131 +455798 +1118788 +1118818 +302825 +980806 +495794 +700170 +255966 +484197 +455785 +1248993 +484089 +455873 +1930315 +255914 +1258698 +495813 +2096139 +255910 +2420214 +1840819 +2683502 +484120 +484137 +484158 +742859 +104984 +104974 +350252 +283772 +1590758 +1894214 +2343266 +495781 +369598 +255889 +484122 +2343247 +700217 +345235 +499486 +2543889 +1265582 +104975 +1930319 +1894203 +283783 +980799 +484135 +297178 +2673627 +484055 +484058 +560067 +323412 +369623 +1930289 +187307 +24352 +717836 +1744989 +473521 +302810 +226151 +2673652 +1680098 +2673645 +2505946 +71243 +2096138 +499476 +499491 +1232514 +1894219 +200670 +980789 +1930312 +1930253 +2214981 +2343243 +2505969 +404755 +484053 +1894236 +1022164 +2505908 +439776 +484192 +980760 +2343268 +255959 +1194953 +1744996 +1939274 +484168 +455860 +818036 +1894232 +560111 +1939280 +1173711 +455810 +484117 +2616421 +2353748 +455874 +503387 +283747 +473479 +484186 +484103 +484075 +484092 +283779 +1206026 +226134 +1165090 +2673599 +739433 +104965 +369571 +1129495 +742865 +455853 +2846177 +1057506 +473525 +345237 +736728 +226133 +302806 +255958 +2505938 +1590744 +1930306 +283740 +1930304 +455847 +226172 +484096 +1258713 +455809 +1440988 +1194959 +386399 +226141 +1509622 +895687 +255918 +484068 +980772 +473518 +2343287 +1265581 +1782633 +104923 +657138 +1590747 +1590770 +283760 +1894220 +2343242 +302803 +560013 +484164 +560014 +503420 +386394 +1165092 +255950 +1165077 +473494 +1930216 +255897 +503408 +560035 +2343270 +495789 +700198 +1480463 +1118789 +1930278 +283751 +455842 +503414 +104993 +255881 +455792 +1258687 +484136 +324441 +499480 +324436 +1894177 +283771 +1232517 +980759 +1809587 +1894231 +1894174 +350250 +2505920 +1232520 +104990 +980769 +503413 +560124 +1894170 +473520 +1232579 +255962 +2343295 +382094 +1809590 +283802 +2505929 +2343277 +226157 +484153 +560040 +742863 +283742 +345244 +560032 +560110 +1118813 +2343256 +336845 +323401 +2673641 +104944 +24383 +255964 +948091 +499494 +2506014 +1590826 +336849 +2673724 +980839 +2543903 +1840844 +2673721 +2673674 +2404732 +473538 +1098597 +2816940 +2543895 +1745044 +1840848 +2215097 +1378939 +1939296 +1194979 +560195 +734514 +1338545 +1306192 +1699792 +2673670 +105012 +455895 +187319 +2420235 +1745057 +1590872 +455906 +1165100 +560226 +2215086 +187325 +2506015 +2343350 +1768230 +1232698 +1745131 +1590903 +2543932 +2543938 +473549 +560265 +2009365 +1745019 +657219 +484253 +2215075 +2505991 +1930365 +1338544 +1699785 +2543916 +2404730 +1232685 +739460 +2816916 +1930337 +484262 +980897 +818066 +700271 +283811 +1894321 +455963 +2002350 +1232783 +2673677 +1894387 +1930348 +255967 +700300 +226183 +1070199 +727311 +657218 +980876 +1930366 +560158 +1206041 +1745141 +657202 +105050 +1384545 +503425 +323434 +895688 +657208 +1590828 +657204 +1992374 +2215008 +2215173 +980872 +2543942 +1232680 +560238 +1118842 +1249024 +1809617 +1930340 +1338583 +1745062 +2427179 +657205 +2862521 +2422027 +1944693 +1338554 +1165102 +818067 +1361298 +71250 +473542 +2846191 +2505982 +2862529 +187317 +2831738 +2215049 +369646 +742877 +2007167 +246820 +560178 +2306647 +1930350 +1759154 +2506007 +1206033 +1745068 +1590887 +1745129 +1306189 +105004 +2616456 +1966037 +2007175 +2831743 +1376881 +200675 +2215164 +1944690 +105074 +2673702 +2862538 +2045836 +980850 +2616455 +1249012 +2673778 +105054 +1070196 +105073 +700264 +369662 +700269 +2505999 +1232640 +1306198 +2846225 +1118854 +455888 +2214994 +2874414 +560232 +1232607 +1338606 +2071001 +2306648 +1249011 +1232677 +1930376 +742882 +1129498 +1930336 +2543897 +644177 +2215141 +2673679 +1441003 +818068 +1232774 +1378954 +1716066 +700335 +1232613 +2271555 +2673757 +1249038 +1745149 +1076362 +455916 +2215011 +560247 +1022177 +2846205 +560198 +1118873 +1232696 +1894402 +1232650 +1249028 +1590797 +1140662 +1232611 +2816944 +1944686 +560135 +1118875 +657199 +473534 +980835 +2816943 +2673658 +1232625 +1680112 +1022171 +2506049 +1840853 +1642747 +980880 +255976 +1894349 +750332 +742893 +1232714 +1894328 +2215032 +2725331 +1894366 +2816926 +484243 +1590884 +657255 +1338602 +1684956 +1745034 +657203 +1232675 +1232645 +1232656 +657181 +1098617 +2506033 +1195001 +818089 +1232684 +1361303 +455912 +2215131 +1590881 +2616447 +980874 +560261 +2673761 +369633 +1745128 +2673749 +2673719 +2846228 +2831742 +455909 +657244 +1809637 +2543924 +1338582 +484263 +1745048 +2215029 +2215132 +1745029 +700249 +455951 +818080 +2816937 +1590847 +750331 +1173714 +1170374 +2862536 +105072 +1745100 +2846211 +1590874 +2025034 +2506039 +734521 +2673714 +2420233 +2343311 +657250 +2673662 +2506008 +931015 +1930354 +1992371 +2420234 +345249 +1590857 +1022174 +1840838 +1992360 +1195018 +2026043 +980886 +1232688 +2506003 +1590814 +1232754 +105067 +2702802 +1306202 +2673730 +2831747 +657158 +1680129 +302847 +657195 +283814 +657188 +2045829 +1378948 +2215076 +105008 +1258742 +1338603 +484255 +2543902 +1118887 +1338565 +1118840 +1232706 +105025 +560258 +1396261 +1745151 +560263 +323425 +484257 +1699762 +2816946 +980818 +2215034 +1118882 +1384539 +1338577 +1894323 +2816893 +657240 +2673717 +226184 +1590813 +1809633 +2215079 +1194993 +717858 +1840836 +1098611 +560199 +255978 +1440995 +323436 +2862537 +657216 +1809620 +2343335 +455920 +2343340 +1745015 +1165098 +2743866 +2214993 +2506047 +2025036 +1232710 +1195009 +2874410 +455903 +1745060 +2343344 +1840852 +1232665 +2702800 +2422029 +2693146 +2007155 +1642755 +105052 +1118891 +1282893 +495832 +1966032 +560304 +1361367 +2420263 +2725351 +560377 +1894425 +1232810 +644231 +560365 +980907 +1338670 +1894513 +560341 +1992399 +1282909 +2616547 +2715258 +2343385 +2215211 +1944705 +2420253 +2673802 +1949400 +2862580 +1650274 +2862581 +657256 +1590953 +1699796 +1361330 +657298 +1361390 +353117 +2013202 +1590968 +1258776 +1509654 +2616521 +2343361 +1306237 +1745175 +818126 +560343 +1306275 +1590909 +2673846 +2007185 +1894431 +1894515 +1118918 +1894448 +283817 +2673791 +1306265 +2733251 +1306216 +675491 +1894559 +644200 +1258763 +2215208 +1391352 +2215229 +484295 +2616554 +1642763 +1840870 +2702828 +1306252 +1441008 +499524 +1590970 +1258795 +700371 +1894550 +1894420 +2673844 +1894565 +2616513 +657259 +675497 +1282903 +1441013 +1650275 +1306224 +2673835 +2715231 +2215183 +1258777 +2725345 +1195031 +1384552 +2506067 +2758388 +734527 +499523 +1894413 +1590919 +1840869 +1306260 +1338640 +1981539 +1118909 +1930409 +1930421 +644222 +560329 +727321 +1232822 +1894452 +1590951 +1894409 +2616556 +700356 +1258765 +1894438 +1441016 +2862554 +2404751 +1894556 +657293 +1992380 +1590966 +1944717 +1840867 +2343372 +980916 +675494 +1650270 +484278 +1650278 +1992388 +1654770 +484288 +1944703 +1894560 +484289 +2007193 +2743873 +1282908 +2758372 +1944716 +2271560 +1338631 +2673822 +560342 +2862579 +700381 +2404755 +1406614 +1894537 +1745202 +2862584 +1840864 +1590942 +1373270 +2616502 +2215207 +1894524 +2673843 +1232794 +2673848 +499518 +717872 +560358 +560277 +2215189 +1894464 +2420275 +1338663 +560348 +1338634 +2420254 +644242 +2215187 +1022193 +980909 +1894518 +644204 +700361 +1894487 +2404780 +1306233 +2715250 +1232816 +1894502 +2404769 +2616487 +1894512 +1173717 +1650277 +1981547 +2404770 +1441009 +1894544 +1361341 +1232800 +560369 +1894542 +2215209 +1590930 +1384558 +980904 +1745173 +1368638 +2215215 +1745157 +2702836 +2002368 +1930401 +2758377 +1361370 +2715210 +1768232 +980919 +818127 +2420248 +644239 +2616537 +818117 +2733244 +1232789 +1361386 +1306227 +700357 +736739 +2616523 +386417 +2343388 +657258 +1361393 +2616488 +2343371 +1258773 +1930405 +1338652 +1361355 +1306206 +2343390 +2343368 +1992382 +739461 +560335 +657302 +2673838 +2404756 +560344 +742898 +323443 +1509642 +727323 +1944746 +2673858 +105122 +1745255 +1930463 +1840874 +2025051 +1373306 +2215337 +2404785 +2725410 +2693159 +2404832 +2816985 +105176 +1591010 +105179 +2715302 +2215355 +2002374 +818164 +2673870 +727331 +2343403 +1282914 +1894604 +2404835 +105199 +2215245 +2816990 +818179 +1306295 +895702 +2817021 +560468 +283825 +1118955 +2673875 +1306293 +2506081 +980939 +2215263 +560434 +980948 +105170 +1389462 +1389464 +1282971 +1759180 +675505 +657313 +1282983 +1591015 +2673871 +1591035 +2215240 +1894612 +2616574 +1981548 +657346 +2096156 +818172 +657336 +1373302 +1441055 +1992421 +560449 +1809648 +187346 +2404826 +2627070 +1033645 +2215246 +1591049 +1441045 +2616567 +1745275 +2404830 +1195039 +2673891 +1992427 +1118942 +2215403 +2215294 +2215303 +1033644 +1258821 +2616591 +1282931 +560403 +2816995 +980940 +1591022 +105149 +105209 +1930509 +818175 +1047179 +256008 +980958 +2215258 +1894581 +1981563 +2404790 +1745274 +2404842 +2817020 +1258823 +1282986 +1809646 +1591051 +1591055 +1373293 +818146 +560483 +2271562 +736000 +980956 +1282940 +2215265 +2215399 +1098649 +1361403 +2215238 +735995 +71255 +1591014 +2276849 +1282970 +1970021 +560481 +105180 +1306291 +2306661 +2817038 +2725422 +2725388 +1373277 +2725405 +2702846 +1282951 +2215259 +560463 +1282979 +2215261 +2404802 +1509658 +1282926 +1894579 +818165 +1992413 +1894601 +105164 +2404817 +1282966 +1966063 +1165117 +1716081 +2543956 +1232831 +739462 +2404810 +1944723 +2506079 +657338 +644256 +2831782 +1591002 +931039 +2215255 +1894575 +2725393 +2045854 +1282915 +1759176 +2673864 +1338690 +2045842 +818141 +2276844 +2404786 +1930470 +818151 +2616586 +2862587 +1840881 +105131 +1107135 +1258849 +1894655 +1906989 +1346113 +1745336 +700402 +386427 +1966095 +818254 +818274 +644351 +1283026 +1314540 +1283005 +818241 +644308 +2725454 +105264 +1745317 +256022 +1745386 +1283044 +1981618 +818281 +1745368 +2616650 +948102 +2096170 +644306 +560490 +1992447 +1441091 +1759185 +931060 +1282996 +980974 +2743877 +386431 +1033670 +187374 +1022203 +560540 +105250 +1745361 +1894626 +1509665 +818213 +2066458 +1759186 +2686417 +187364 +2616638 +1098663 +657383 +1314546 +1981592 +1249050 +2215451 +1283018 +1298287 +1338721 +560507 +560558 +1509675 +1509671 +560542 +1745355 +1195046 +2306665 +980999 +1680139 +2215485 +1745345 +980993 +818234 +2045885 +323446 +1033652 +2673943 +1894664 +1930522 +895719 +1650285 +105266 +1952323 +2003542 +717878 +246828 +1992450 +495838 +1966090 +1338742 +1282994 +2817068 +1591097 +256029 +2215468 +1981572 +302889 +2743878 +1509679 +560547 +675532 +818275 +105267 +1361442 +2415262 +386429 +727341 +1509684 +1894665 +2404867 +105252 +2740772 +818211 +1022205 +644349 +1591079 +560499 +2215450 +1930517 +818198 +1441090 +2616601 +2215456 +1745319 +2543972 +2215424 +2715328 +1894647 +187383 +1232866 +2045900 +1846905 +1265612 +2343419 +2616639 +71266 +717879 +657361 +2404885 +895752 +2404886 +2343426 +302872 +1283013 +1441087 +1314544 +226225 +2404875 +1361440 +818223 +187361 +2404896 +727340 +1509674 +2215501 +1118981 +2725464 +1022197 +105221 +1981591 +24414 +1966068 +1981610 +1107132 +2686413 +771291 +1306306 +1680141 +1098662 +818245 +2215413 +187402 +1642766 +2215415 +1591087 +1930531 +895709 +931047 +2443134 +1265610 +1283032 +2817054 +644333 +1591119 +1441079 +2096169 +1361434 +1745399 +1441088 +644277 +2673922 +1981637 +2215449 +818288 +2673945 +2616635 +24415 +1033666 +1265617 +1642781 +734538 +560538 +1338751 +560559 +2616630 +2616597 +2045903 +2007206 +1654774 +2715336 +2415264 +246824 +187396 +2543975 +1118975 +1265627 +1591095 +2045887 +2543980 +700398 +644315 +2404888 +1716091 +1768234 +895758 +1441093 +283838 +1894640 +2506084 +1981601 +1745343 +644311 +187375 +2673920 +1361441 +1249055 +71262 +105249 +1361452 +1745400 +1894641 +1745374 +2616622 +2404874 +2725467 +1745320 +1338712 +1930533 +1085973 +1232886 +644383 +2673966 +2673946 +1650320 +256033 +187434 +1745440 +187435 +2215555 +2725475 +1118997 +1981647 +1745443 +675614 +675569 +1098678 +1298295 +187420 +675604 +2673974 +1283047 +560572 +1265646 +1486475 +560601 +1840904 +1265654 +657387 +1373323 +675585 +2215535 +1906990 +2215525 +1232873 +931062 +560588 +1306313 +2096182 +1591193 +1745467 +1258855 +1650300 +675613 +675605 +644397 +1840894 +657394 +981020 +2702865 +187438 +560600 +2715350 +1265652 +1033698 +1894695 +1258874 +657419 +1650317 +2616666 +1258859 +1195065 +1745464 +2544009 +981042 +2740775 +1756854 +644388 +302912 +105288 +2404937 +657403 +2215615 +1047191 +105302 +644376 +1759196 +1650308 +2276856 +1265651 +2544003 +2276865 +1591134 +560608 +382123 +369694 +1232882 +1373324 +700413 +1981642 +1265653 +2673975 +1118996 +1258872 +2725484 +675581 +644398 +644402 +1591131 +1232889 +763307 +727347 +644413 +1591150 +560621 +2271578 +302916 +2817078 +2404921 +1745452 +2215526 +2404946 +2673949 +2404971 +1509704 +2215613 +675573 +675583 +931061 +2215562 +734543 +1129512 +386436 +2616673 +1894678 +1591154 +2215544 +2215551 +2693174 +1721496 +105280 +187418 +644411 +1314555 +700415 +187422 +1591195 +560598 +2817071 +1338762 +2506089 +1298301 +727349 +2702866 +560631 +187425 +675562 +2616659 +675574 +1930547 +302932 +1338752 +1894693 +1966114 +1314560 +1930589 +675561 +560614 +1338754 +2215547 +981019 +256032 +675594 +2673970 +1338755 +1509700 +302903 +1966100 +818308 +1591144 +2215598 +895779 +2616678 +644393 +644428 +302915 +2404928 +323458 +1966104 +2725473 +1173721 +187413 +1809651 +1745429 +1966101 +657390 +736021 +2715364 +657413 +560580 +2271582 +644486 +2874461 +1930608 +1119015 +1894719 +2673980 +1981659 +1818835 +700422 +1361494 +560652 +1033706 +1591243 +2364544 +2544021 +560706 +2725501 +2616755 +560693 +1361479 +750366 +2673976 +1441109 +727361 +1745505 +1406617 +1361470 +734547 +1022233 +2616723 +818348 +818363 +2874440 +1044708 +2616735 +1283086 +644485 +2715376 +1441136 +1745507 +734544 +1283093 +1070217 +1699835 +2715412 +2215657 +560638 +560714 +1258887 +1509721 +2343458 +560710 +1338767 +1249071 +1441147 +644452 +2616701 +2874452 +1361478 +187466 +1480478 +1840909 +1361493 +2096210 +1591237 +187459 +105342 +2096208 +981060 +1930607 +818349 +1306327 +2096213 +1441107 +2874467 +2817085 +2506094 +1258888 +2616766 +1745484 +1591262 +1930604 +1441118 +2737510 +560651 +2616741 +981074 +1441154 +2715406 +657456 +1745524 +1840923 +644465 +2758401 +1930605 +2874476 +1745487 +2215683 +2616737 +2874492 +1441106 +657458 +1361489 +2874522 +246830 +727359 +2616770 +2096215 +2715381 +1441137 +818333 +323461 +2616744 +2215680 +1441127 +2719851 +644468 +2616719 +1373354 +644500 +2874460 +1306326 +1745509 +2874544 +1232906 +1283085 +1745474 +1402875 +1283114 +105336 +2616710 +1745513 +2616762 +560653 +2096209 +818330 +2846253 +2874499 +2215650 +2544024 +2725503 +2343441 +717895 +948107 +2616764 +2725492 +560676 +1591235 +1373349 +2874528 +2544017 +657455 +675633 +1591221 +2616730 +1894720 +1745497 +1441134 +1384571 +931069 +2215685 +1258904 +560771 +1232939 +981098 +1591362 +1338787 +1044710 +2506101 +105354 +326127 +1591347 +1591334 +2674035 +700436 +1033715 +2215795 +1591304 +1930671 +1699842 +2405036 +700440 +1033721 +1591313 +700432 +2045940 +1298314 +105368 +560738 +1591333 +931079 +644517 +736029 +763322 +2215714 +560767 +1944784 +2215801 +560728 +105356 +2405050 +1591348 +2674016 +2544025 +1591381 +1930680 +644530 +981110 +1047203 +105360 +1966126 +818462 +2343461 +2674051 +644507 +1930643 +1591290 +1591337 +1131211 +2215779 +1258895 +1745533 +2674098 +105364 +644526 +644511 +2674065 +105370 +2674120 +818438 +981128 +2215800 +2405048 +1591325 +2405070 +895819 +369699 +560739 +1759208 +1930630 +2045925 +1338793 +2045950 +981090 +302947 +2405034 +981109 +2405073 +700450 +2343460 +302964 +1745568 +1591282 +2616800 +105371 +1992473 +1930631 +2215803 +1283161 +644520 +700435 +1119046 +2215738 +2616797 +1930635 +2420302 +1283156 +1338785 +1591326 +1591281 +560749 +727364 +763324 +2364553 +1745567 +2364555 +2405017 +717898 +818406 +981126 +2343467 +2405046 +1022249 +895811 +2674079 +2343482 +1894738 +2674030 +1906994 +2007214 +2096222 +1894743 +1509731 +200680 +1119060 +105382 +560794 +560751 +818411 +818458 +1591340 +895815 +1650328 +1930676 +1591303 +1338799 +981121 +1591279 +818385 +2405026 +1119057 +2215824 +187482 +644524 +560748 +818403 +2096219 +287209 +105348 +818473 +2674082 +700437 +2215767 +2215711 +818404 +1314568 +818418 +1930644 +1591316 +2690445 +657488 +2045991 +1361523 +105405 +2027493 +1306349 +2420321 +2686434 +736037 +1509742 +1894790 +1894775 +2405112 +1306339 +1232950 +2215904 +644535 +2027487 +1441188 +2674156 +1966129 +1591439 +24444 +818495 +1119068 +187489 +1265662 +1338812 +2405092 +302974 +1699867 +2045988 +2405145 +1591437 +1591426 +1283188 +1759248 +1373370 +2674181 +105402 +818520 +1361541 +818483 +2686437 +1930694 +1966132 +742904 +560820 +2544031 +1338808 +560797 +2674174 +2686439 +2674173 +1894792 +727374 +2215899 +560851 +2405163 +105407 +2405134 +981149 +1591454 +1033730 +1258911 +1283177 +2544033 +2405127 +105441 +2405151 +2405133 +2674212 +2215836 +2674185 +1894789 +818554 +2702883 +560822 +2686440 +1338811 +1642813 +1930714 +818552 +1314570 +1759253 +2674145 +2343484 +1591495 +981158 +818559 +1699868 +2045986 +2045985 +644545 +1944806 +560825 +1283167 +2715430 +2674146 +1591445 +1441199 +1944818 +1361531 +1650338 +2405130 +2405119 +1894784 +2616843 +2686443 +560849 +2364566 +1044712 +1044713 +1373376 +1894778 +1992482 +1373398 +2737511 +2405090 +2420312 +1258908 +1894774 +1338810 +2420313 +105406 +1591417 +226240 +1373371 +24439 +1591451 +1894767 +1338807 +981144 +187493 +763328 +1373382 +1486490 +1745608 +2046004 +1745598 +1745607 +2364584 +2343507 +2831792 +818565 +1840950 +1033752 +287214 +1258927 +1591517 +24451 +187499 +2686450 +24463 +2071089 +1930735 +2702939 +2215939 +287219 +818632 +895839 +1591514 +2071005 +105455 +1944855 +2705821 +2096254 +1591532 +1944831 +2354609 +2071044 +1338828 +226247 +2364580 +2046054 +1441224 +818662 +2071033 +1098702 +2215931 +24488 +931100 +2354614 +981163 +200684 +1441210 +818653 +2215920 +1591522 +1680148 +1098712 +297191 +1258926 +2046038 +287220 +1716116 +302983 +2071037 +1930742 +818592 +24445 +2354596 +1232960 +818575 +2354619 +2045994 +1406629 +105477 +2027506 +981178 +1338819 +2046060 +226245 +1441261 +981170 +2071013 +2027501 +2364573 +1195082 +1716115 +2071007 +1441238 +105486 +2686455 +2071027 +905859 +2215918 +1654784 +1509755 +2046023 +287224 +560897 +1441225 +1840958 +1591512 +763345 +905861 +1441240 +484320 +1930732 +818628 +1441266 +369713 +1441270 +2215919 +1306351 +2002380 +763342 +2702888 +2046052 +771296 +287225 +105488 +818650 +1944860 +1406633 +105472 +1441227 +24466 +256049 +1406631 +818641 +1486489 +2616885 +2616864 +763354 +1591539 +2215936 +2046062 +2354625 +1232963 +302986 +2364582 +2071019 +1944868 +2364579 +2046058 +1840942 +1152780 +1840938 +2096274 +24482 +1591508 +187500 +2071031 +105452 +818645 +431806 +981204 +2848004 +1591577 +187509 +484326 +105520 +1756858 +2831805 +560929 +818776 +1591596 +1591551 +1509771 +1119102 +105563 +1441318 +226252 +1944882 +981206 +763358 +1441290 +1033784 +560955 +473577 +24538 +1389476 +2616903 +1361547 +303029 +187508 +560936 +1406634 +1759266 +1232966 +2096278 +1650362 +1441350 +1406641 +1441324 +2616912 +2215969 +2616910 +1022255 +1441337 +105541 +484329 +24548 +2831818 +105573 +818800 +2420331 +484341 +818706 +1441331 +1441342 +2027519 +105515 +644565 +200706 +818760 +386455 +1406638 +2725530 +2847976 +2046090 +981209 +1033823 +2215992 +1283244 +105527 +1441288 +644580 +1591552 +1119101 +1283248 +1441279 +256054 +1441322 +105547 +981200 +1591588 +1033827 +644575 +2674225 +1930767 +818720 +2343523 +560959 +187515 +1441361 +71318 +1119091 +763356 +763375 +1119081 +1119086 +1441348 +2343509 +323474 +187505 +1509768 +105543 +1768238 +2420332 +105528 +105589 +1283235 +303003 +2674227 +644564 +2215954 +981186 +1098723 +303012 +2096276 +1044722 +2007217 +1642817 +24542 +560925 +24530 +1441360 +1486495 +105534 +24521 +2343511 +560930 +1441341 +187516 +1716127 +1033820 +484335 +1699873 +1759260 +1044721 +473576 +1119095 +2216022 +2369098 +981203 +981231 +2343513 +560963 +2831801 +484325 +1441302 +71301 +818823 +2046085 +24554 +981198 +2096279 +1745619 +1966171 +1699870 +818735 +1033825 +818816 +818773 +302996 +1591627 +211995 +1361556 +187541 +256061 +560984 +561000 +1642829 +303035 +1232999 +818941 +1840982 +1699880 +981255 +1283279 +1406656 +1298324 +2364615 +1129527 +303056 +382154 +2216064 +763398 +71346 +763400 +2405248 +105625 +1939314 +2343525 +1650386 +1759280 +818857 +1098738 +303044 +1930784 +1650388 +1441382 +2216094 +105700 +2686481 +1033848 +1894833 +187556 +1283257 +2216084 +818840 +1298323 +105623 +24605 +763413 +818861 +1650377 +1930780 +1591669 +763427 +1591644 +187575 +1233009 +2216044 +256066 +1654793 +1699881 +1591640 +369723 +1265673 +1650371 +2544058 +1033865 +644588 +560992 +1022283 +818917 +1283274 +1949425 +895889 +303039 +560985 +2216108 +24595 +895899 +1591702 +1033846 +2831824 +2276905 +256058 +2686477 +187548 +1283272 +763426 +105667 +1283261 +2544048 +1033838 +1716132 +2405213 +105690 +1044728 +1907002 +818938 +1338865 +1441386 +187555 +2405244 +382155 +105670 +226254 +2405219 +931135 +818885 +763406 +763393 +187564 +1033842 +303041 +1441384 +187585 +2027520 +1265668 +2405194 +1591697 +71330 +2715439 +2831836 +1283311 +187542 +1944914 +323476 +818940 +1966186 +818894 +336861 +105672 +1338870 +1088472 +981241 +256071 +2831823 +2831826 +1591689 +1033845 +1981704 +2715446 +909253 +1249075 +1441399 +2216111 +1283278 +1314575 +1894850 +2674243 +1966184 +105676 +1233001 +105696 +283859 +303034 +24580 +2216087 +1441407 +303066 +297203 +2216056 +24609 +2405211 +2216052 +1650368 +1047228 +303037 +105657 +246832 +981261 +2405222 +2276900 +1283306 +283862 +1283264 +105666 +895902 +1283298 +1258930 +1195137 +1591720 +473585 +1509804 +105817 +2616932 +1591777 +1650396 +819056 +818996 +819063 +105765 +369731 +657524 +2616917 +2369101 +1591817 +717907 +287254 +1441429 +981307 +1591796 +1759291 +105798 +1745674 +819054 +818972 +2616936 +1170376 +818961 +105738 +2286125 +819031 +1098747 +2216171 +1591775 +561019 +1894910 +1642839 +1930833 +2405282 +2216224 +1509817 +2364629 +1591722 +2216158 +1944919 +303089 +1283323 +1441427 +2096314 +2674252 +2216194 +1441463 +2405260 +1233032 +1716138 +2216172 +1338883 +763431 +1981707 +226265 +1768240 +2405285 +561016 +1894894 +1944923 +24634 +981278 +1258937 +1258939 +819034 +2216227 +24633 +819002 +2046134 +2096312 +1591734 +1265680 +24620 +361839 +561062 +2046148 +763442 +818984 +24640 +200712 +818980 +2686504 +905889 +2216183 +717908 +303099 +1907009 +1745673 +981298 +1650394 +1745675 +105726 +2216138 +1930826 +1591750 +105815 +2616949 +561026 +2096302 +105751 +2216213 +1894898 +1233024 +2415280 +1165119 +256073 +336862 +105746 +2096307 +819017 +1591820 +657520 +2046150 +1930830 +1591727 +1591728 +393707 +1745665 +1258935 +1033881 +1591733 +105808 +1206068 +2096309 +473584 +105818 +1441452 +700490 +303105 +1907010 +2096315 +1338885 +24622 +1195142 +657522 +819041 +818978 +819005 +1930809 +561045 +1306362 +303090 +24644 +2686505 +2690454 +1650395 +1930815 +1721503 +561056 +1745669 +303110 +1930839 +1338903 +1981720 +819073 +1930849 +1361577 +2725570 +2216333 +1441498 +2674279 +2817135 +2216302 +2715470 +2686520 +1768241 +948120 +187599 +931162 +2616962 +2846275 +2096322 +561142 +2715473 +2686519 +1591861 +71359 +819141 +2725576 +1745714 +2725575 +2216246 +819081 +1509842 +1306366 +1441467 +2693183 +895924 +1283338 +657542 +2674295 +386467 +1283337 +1022296 +1081492 +2674285 +1591865 +2216287 +1233038 +1338897 +226273 +561087 +187610 +1486502 +1283331 +675678 +2364635 +2216296 +657555 +2306687 +2216294 +2216261 +187605 +2719859 +2216299 +981332 +2216352 +105914 +105894 +1283328 +895920 +981343 +2686526 +1119153 +931158 +1699902 +2216316 +2616980 +2817128 +24655 +981344 +105898 +2725559 +819162 +745492 +931169 +931156 +819173 +2216347 +1441479 +456020 +2216279 +700496 +2216332 +2702968 +561128 +24650 +2616987 +2216254 +2725578 +819098 +2420339 +1930843 +1952326 +105915 +187607 +2733275 +2506121 +2405324 +2674284 +1081493 +644614 +1894926 +356381 +2216346 +819123 +1361571 +1894958 +1509844 +2702965 +1591869 +1361568 +819102 +2817132 +2616966 +1591862 +2046163 +1119170 +561094 +819075 +105893 +2046164 +1361578 +24652 +105863 +644619 +2715463 +1119167 +2686514 +1441480 +1759293 +105843 +1081488 +1591853 +819084 +2071098 +105844 +1406664 +303123 +2617010 +2617042 +2216540 +2405351 +2343590 +981424 +323496 +71371 +1233084 +2674339 +700530 +1119206 +2506156 +1809706 +1195244 +105959 +739472 +981410 +739470 +2216478 +1233113 +727389 +1894975 +24679 +2216367 +981419 +1233054 +1894982 +1258963 +2216509 +819211 +2364663 +2817170 +2617067 +1809684 +2364655 +1165142 +1088474 +981401 +1402880 +2743888 +819189 +2617117 +1841006 +1591928 +24677 +2343565 +1509890 +561175 +2733284 +24663 +24711 +700526 +2817156 +2617056 +1402879 +1809728 +1259007 +71377 +981400 +1809700 +1809685 +1258977 +1745725 +1195182 +1809672 +931190 +2216434 +1895012 +1930926 +1070234 +561152 +1591902 +1591916 +2306717 +1195212 +303137 +2674320 +226287 +1931011 +2715474 +1119184 +1930991 +328646 +2343583 +1233108 +1591901 +420638 +2617008 +2405362 +1930934 +1930871 +700536 +2216506 +1894993 +2817139 +1259005 +1509893 +2617011 +1591941 +382175 +1081510 +819201 +1283350 +105962 +981393 +2617016 +1134057 +24682 +24686 +71365 +1259017 +2306720 +1259013 +2674337 +1707480 +2817143 +1930939 +105961 +1930918 +1809689 +1338919 +2674322 +456035 +356388 +1441505 +1841025 +24675 +1930903 +2306706 +1119191 +1119208 +431827 +1930943 +1930887 +1509850 +931181 +1283354 +2216529 +1745739 +2617063 +2216527 +2617014 +1441517 +1119185 +187623 +1338912 +2216500 +2617038 +1591969 +1930990 +1591944 +1119201 +1258982 +1930932 +1930949 +1406678 +1509901 +2405345 +1233069 +1809709 +1930998 +2817155 +644625 +1745726 +1768243 +1895010 +1930894 +2674336 +1591899 +105925 +1745747 +105940 +287261 +2506169 +2216461 +644624 +71380 +2862617 +2096335 +2617025 +456029 +2216535 +1441504 +2817151 +1195184 +2216499 +1098761 +1930892 +431810 +819193 +1233112 +1406671 +750368 +1129532 +456067 +1361593 +2617012 +1233129 +1081506 +905905 +1233090 +1233100 +2817159 +2817158 +2674327 +2405402 +2216429 +1809723 +1650408 +397965 +24661 +1809673 +561146 +700510 +1195238 +1081514 +1699916 +1591936 +1895011 +981388 +2216485 +1258999 +2271604 +2506152 +2862624 +2674340 +1258998 +2617032 +1591898 +1992535 +2405379 +1259025 +1591955 +2506143 +2216380 +1119188 +1591933 +2216364 +1707490 +1195193 +2617004 +2216524 +369735 +2674353 +456052 +1745730 +819200 +2817164 +1406675 +2216450 +1410233 +1745774 +1509912 +1591918 +1841017 +561185 +1233072 +2343557 +1680158 +1931014 +1258956 +382177 +700537 +2817154 +1259000 +2405399 +2096334 +2862609 +1509859 +763474 +2617055 +2617088 +1680155 +2216526 +24725 +1981731 +2862632 +71366 +456026 +2216521 +1406676 +1821076 +2343578 +1033906 +2216514 +1591994 +1195202 +2405328 +2216494 +2506132 +1070233 +2216383 +1509876 +1745746 +1591956 +981369 +1098759 +1165130 +2617061 +2544079 +1441519 +2617095 +981434 +2817165 +1930984 +1745729 +2617077 +24690 +2617182 +2617171 +1642910 +2737522 +2506212 +675686 +2674388 +386480 +1022311 +1346138 +297221 +734572 +2617187 +2405444 +2674397 +1361605 +734580 +1346154 +948129 +1165148 +717926 +1931058 +2364690 +717984 +187710 +473609 +2286127 +739475 +1523254 +408247 +2617179 +187656 +2627087 +657558 +1895055 +473604 +1895087 +644654 +1939335 +2286133 +1523251 +2405426 +1895102 +361854 +1119220 +1396296 +717970 +71403 +226320 +948125 +1680183 +71406 +2364681 +1022338 +1716172 +1939336 +2617203 +473597 +1402884 +1895072 +561203 +948137 +644669 +1441542 +2216657 +187667 +105988 +1895092 +1841058 +1664445 +2216640 +1314585 +484379 +931224 +2617229 +1592050 +2271626 +717965 +1818840 +246860 +2306735 +2364709 +561191 +981440 +2516074 +675699 +2369104 +1895094 +473590 +1249094 +644693 +895947 +1265696 +1249104 +1338932 +1745845 +2405431 +2405417 +303140 +326143 +819240 +644759 +981436 +644760 +1195301 +484366 +717981 +1907015 +2096347 +495858 +1233172 +2271614 +297213 +1841040 +2405445 +1841072 +895973 +1480518 +2216619 +2096374 +303139 +1206092 +819227 +644660 +763482 +1283358 +2506187 +1140677 +948144 +2405442 +328650 +700573 +1592056 +1206081 +1338929 +1664457 +2364679 +1119214 +1265697 +1206080 +895984 +1665834 +717951 +2405410 +561199 +2617141 +1361597 +895945 +2617134 +1233164 +1361609 +981449 +1841033 +644658 +2369107 +2817183 +1283363 +1298334 +717921 +323500 +1022325 +2216628 +2817177 +1361616 +644728 +382190 +644685 +1044751 +1664446 +2715486 +895943 +931225 +895993 +1716178 +2364722 +1895117 +2271609 +71391 +1088476 +1129534 +187633 +2733302 +717977 +1592046 +382182 +1981742 +2271607 +1745823 +1745789 +2216656 +420642 +644702 +2369112 +1591999 +700574 +1143965 +644675 +2071104 +819218 +1642896 +187673 +1378966 +644638 +2617253 +1044753 +1249092 +717940 +948160 +187647 +2216600 +1361613 +895991 +1895060 +644734 +1809737 +2715477 +2617136 +2674407 +2306723 +1233204 +105984 +1233186 +1592049 +2285040 +1523257 +644774 +896001 +1022328 +931214 +2506208 +71395 +1233171 +1098770 +1195263 +1265695 +1265693 +1841063 +2733294 +644721 +1298338 +2405449 +644653 +1338924 +1745831 +187668 +297222 +644687 +895968 +2216635 +328652 +1716160 +356396 +1195310 +283882 +1592045 +1057550 +2617194 +1654798 +484385 +2617217 +2276917 +981443 +2617220 +1931040 +2617254 +1931037 +644747 +750372 +2364677 +1970037 +700545 +644738 +1768249 +495855 +1152802 +1841065 +473599 +644650 +1841029 +644776 +2343612 +717957 +1895056 +1680170 +1895039 +2369116 +1592020 +246870 +2343608 +644758 +484384 +2617164 +895955 +2364710 +226314 +303138 +1195298 +2306725 +1841078 +2702995 +1249090 +931201 +2617209 +1195282 +1119226 +1680171 +2096380 +1346139 +484376 +1809758 +2617149 +187648 +905930 +561214 +1233242 +1047240 +2343652 +1081521 +2617261 +1841180 +1592197 +1592108 +2096421 +2027535 +2405513 +2674500 +1441586 +561237 +1057559 +1841145 +2216832 +1699949 +981482 +2617262 +1119243 +1680196 +1931136 +644818 +905938 +2216681 +819265 +1509996 +561264 +1745923 +1745855 +763493 +1592121 +1745875 +1841193 +1809769 +1033926 +763489 +200752 +896042 +2420344 +1195365 +2405506 +561320 +1745953 +981484 +2544192 +1931116 +2216709 +1895149 +2703014 +1841113 +2544252 +1592143 +931284 +819275 +200761 +819296 +1441610 +1592209 +1592101 +1809768 +2216910 +1841110 +1664466 +2405465 +2046209 +1592212 +1931104 +1931069 +2343646 +2617332 +2617309 +819289 +369774 +905934 +1745949 +106047 +2027534 +1195337 +819250 +2096441 +2725595 +1195342 +2405480 +1895196 +2216888 +2216819 +819252 +1592085 +2674452 +2216785 +981503 +2674508 +2405507 +1033941 +1745889 +1441589 +2617433 +2216856 +1098820 +2405462 +2216917 +1441591 +1033953 +1441608 +2617283 +1895179 +2846287 +2216729 +105997 +1592137 +1233248 +1745869 +1195374 +1841188 +24745 +2544209 +106051 +2046221 +1895243 +905948 +2617441 +287269 +2066461 +1931121 +2216753 +2617260 +1745964 +561227 +700591 +2617329 +1745927 +1592186 +644813 +2617373 +896023 +763483 +1233231 +369756 +106004 +763491 +1195327 +1509972 +2364735 +561213 +2846285 +1931131 +106021 +2096451 +1981746 +1745943 +187731 +24760 +561308 +1480541 +1233215 +2405517 +1441588 +1592211 +1841109 +2405505 +2544224 +1592126 +1895162 +1441576 +1195356 +1486518 +561288 +2506224 +1841168 +71426 +2216775 +700581 +2405483 +819270 +484394 +2544208 +382196 +1716246 +2544189 +1841148 +2276921 +1745859 +2617355 +2216748 +2674435 +200750 +1759303 +1592169 +819326 +1716245 +675717 +369775 +1486540 +386486 +2216804 +1592161 +1841090 +2306763 +1233223 +819332 +2071145 +657567 +2405476 +1841091 +1098819 +2405477 +2617353 +1745939 +2343623 +2096407 +1441594 +1707510 +1033930 +819330 +200753 +1592213 +1895191 +2544230 +1895192 +819352 +1895119 +1895214 +2364729 +1592236 +303159 +1119267 +2703019 +1745854 +1931087 +2544194 +1745893 +1841154 +1195373 +2216831 +2216700 +2617336 +2216883 +561245 +2674475 +2544160 +1809763 +1119234 +2617318 +2617411 +2096424 +2343632 +819337 +2617265 +2674516 +1033950 +2216872 +1841093 +2443175 +1233238 +2617424 +644804 +819257 +2343642 +2544175 +905952 +2405514 +1033935 +1745928 +1129538 +2544235 +1233213 +1509985 +561230 +200763 +1716214 +2674487 +361858 +819314 +287266 +1306381 +2544226 +187734 +1509999 +2364745 +1592120 +981480 +931286 +2617349 +1592157 +1233229 +2544241 +1486528 +2096449 +2096416 +1441552 +561293 +2216830 +1592184 +1895159 +1441579 +1841114 +1895146 +1841138 +1510001 +1592182 +2544167 +2544211 +1441578 +1098814 +931240 +2046213 +1665839 +2617431 +931236 +369779 +1592179 +1931101 +1841186 +1664459 +1592210 +1441615 +2544220 +1895160 +2506238 +2674451 +1361624 +2617305 +1944959 +819260 +2216782 +1233249 +1441597 +2216926 +2343626 +1283371 +700600 +1931090 +2216746 +2216705 +2343644 +1195330 +2703016 +1931140 +1509973 +106017 +2216927 +1441560 +2544237 +1509990 +2617436 +1699947 +2674525 +356415 +1895235 +1716244 +2306749 +2216853 +1707507 +1650424 +1992542 +763487 +328656 +369763 +2096414 +386488 +2544172 +1173755 +1361639 +2096514 +1361642 +644839 +644838 +369800 +1081531 +981523 +1745989 +2364777 +2285053 +369810 +1592251 +819435 +1441644 +2096521 +2686546 +1233324 +1992546 +106106 +303172 +2862644 +561364 +2617529 +1981760 +981531 +1680198 +700647 +1895250 +1195392 +561350 +931291 +2216934 +1233306 +2216968 +1592292 +2027542 +1841216 +561376 +2617503 +24778 +106111 +1306386 +303162 +2216972 +1298344 +819402 +561394 +2096502 +2617531 +2364768 +1895261 +1283394 +561414 +1716252 +819385 +1119276 +1081528 +644873 +1384596 +2027545 +2617482 +1944970 +1361649 +1233294 +2096479 +2216994 +981522 +2715508 +1510023 +561346 +303167 +1259043 +931307 +2007228 +1233293 +303165 +2817293 +283894 +2674559 +2617516 +1402885 +1841203 +1022355 +2364764 +1441678 +2862651 +382215 +2096505 +2733315 +700670 +981553 +2617550 +1510013 +1981767 +2096520 +1441671 +1966247 +1699955 +1658529 +2216935 +2674555 +561327 +561352 +1592273 +1592252 +1361627 +2216962 +819401 +819423 +561408 +1441684 +1339011 +2096484 +1966250 +1361656 +2364778 +382213 +2617473 +1024207 +71445 +2617520 +981520 +1981761 +644834 +561386 +1195401 +561385 +1389487 +727409 +2506247 +1716253 +700657 +2817320 +187766 +700653 +896043 +1716250 +2216985 +1510012 +1592277 +1098847 +2096490 +1981773 +1931157 +2617508 +106069 +1098852 +2817271 +561353 +727413 +1265706 +106105 +2285049 +2725599 +981512 +644845 +187767 +2817200 +2715513 +1165153 +727411 +1745985 +1441676 +1233320 +2817248 +303166 +2617513 +1373431 +1134060 +226343 +456118 +2096508 +1441652 +819438 +2817240 +1233288 +2817211 +303163 +1022354 +819406 +2617526 +369814 +106071 +2715502 +909262 +24780 +1259052 +397968 +561420 +2817227 +2506253 +2862650 +981516 +561326 +24779 +1664472 +1981764 +2216948 +644882 +561422 +700686 +2506250 +1592268 +1992545 +256103 +1361661 +561375 +1650507 +2725604 +819453 +297232 +1895335 +1654812 +356428 +1716265 +2277000 +1650512 +484406 +1034027 +1746052 +1044768 +2405598 +1044762 +1119308 +1939339 +644916 +1034007 +1650533 +1931168 +2405628 +2617559 +1283415 +1119312 +1283447 +1047274 +644915 +1895311 +644893 +303216 +71456 +1746035 +303206 +2674575 +1119310 +1283427 +2544284 +303211 +1033990 +1746057 +561497 +2276975 +1650458 +1119297 +1650471 +1907030 +2415295 +323517 +1895295 +561469 +2617616 +1265709 +1283454 +2046222 +1033980 +2278773 +1047269 +561466 +303196 +2405616 +1034019 +819470 +561444 +819467 +2276969 +2405644 +303205 +1034031 +1650514 +1650468 +1306393 +1033987 +2544283 +675730 +2405577 +896065 +2617622 +2405601 +303237 +561506 +2617614 +1233337 +1746009 +1441697 +2617585 +763501 +303238 +2276951 +1650452 +1306395 +1283408 +1650520 +1034011 +2405613 +2405571 +1034038 +2276986 +1233348 +2617629 +2674560 +1650506 +1931163 +561521 +1259068 +1895354 +644896 +1047243 +2617625 +303200 +644900 +24786 +1298347 +1047255 +2405648 +1650469 +1047260 +2617599 +1654813 +2405615 +323515 +303236 +2276988 +561446 +561452 +106123 +287289 +1952339 +2276933 +2405588 +2674565 +1650499 +303194 +2617617 +2276936 +456125 +644922 +303189 +1044798 +386510 +2364808 +2862707 +1650539 +2617638 +2674598 +2405664 +2046240 +393730 +1233363 +1129542 +2405713 +1034118 +1907032 +1480555 +1895470 +2405757 +1034182 +1939360 +2415311 +1895416 +644944 +819495 +71471 +1907036 +1265738 +297252 +1047299 +2405765 +819501 +1034084 +2617647 +1034127 +1119320 +1895375 +771309 +326164 +2405697 +2862686 +1895420 +187789 +2405711 +323530 +1931182 +1645550 +2277026 +1841239 +2544297 +495886 +1034173 +71461 +303244 +2277036 +2862679 +561549 +1044810 +1034111 +2278788 +187788 +2518052 +1716268 +1441738 +2405731 +287310 +1654826 +1119322 +1895425 +644938 +1119318 +297251 +1034082 +1265718 +2277010 +1034129 +2277037 +1044819 +2405767 +1098874 +1939346 +1721516 +1654819 +1895390 +1895374 +1650555 +1650540 +2278790 +1895387 +1047286 +1044816 +2405748 +1931218 +326163 +1939354 +1907050 +1931219 +71460 +1034169 +297248 +71470 +819498 +393739 +2544306 +2544296 +1746072 +2405739 +297273 +2364813 +1034132 +1034158 +1650548 +382222 +2617635 +393742 +1044823 +382221 +1931190 +1759324 +2544294 +495882 +1895395 +1034109 +1907047 +1034106 +2405676 +1895471 +1654825 +1645556 +1034119 +1939357 +1931185 +393749 +287314 +326165 +2862677 +1907071 +386511 +2405698 +1907044 +2405691 +2415308 +1895412 +1034192 +326167 +1034138 +896077 +2405751 +1047302 +1441750 +1119317 +1044786 +1716275 +1992557 +2817340 +382235 +2217114 +2715524 +2617652 +2217013 +2674633 +2846301 +2277049 +2846305 +2405809 +1931233 +2674635 +1944994 +106146 +303275 +2217031 +644957 +2725608 +2674609 +2217119 +2617664 +2217022 +106163 +1746094 +1931246 +1895475 +2046253 +106134 +24800 +2217060 +2846315 +2686580 +2217068 +2674611 +1047318 +1841240 +1699968 +2817346 +1759352 +2217154 +2686583 +2277045 +1746088 +561568 +2277043 +106143 +1944990 +1480557 +2846312 +1283472 +1931260 +2277055 +2617654 +763510 +1759354 +106155 +1233376 +819561 +981568 +2405787 +1373438 +1410236 +2405791 +981573 +819528 +1119332 +1746097 +1283468 +819525 +819551 +1441756 +2217025 +2420354 +1746108 +1265753 +1895481 +2674615 +1233379 +2217010 +2271631 +1592327 +1931234 +2674612 +819526 +2217109 +1034204 +1944986 +2686574 +2343669 +2817351 +2874564 +2217144 +1759345 +2817367 +1759356 +1931264 +2703029 +2027557 +819530 +1441762 +187794 +2217168 +2217019 +1441760 +1944974 +187799 +2617665 +106140 +1259082 +1047319 +2217042 +2046245 +2848026 +2343672 +1592307 +1759359 +2817348 +2725605 +1895498 +2725631 +2862723 +819588 +1510051 +2217173 +283896 +1265779 +905965 +2343717 +1259106 +1265767 +1022361 +1022364 +1931295 +981594 +1992560 +212012 +1945009 +2817398 +1895492 +1895503 +561631 +1931270 +2405825 +2007233 +2405835 +981600 +1265793 +2715548 +981603 +2343706 +1119356 +1085986 +2617671 +1259098 +2096548 +981587 +739486 +2725619 +2817429 +1070255 +2343704 +561581 +644971 +2817471 +1939377 +1265766 +1441787 +2217252 +1361678 +1119343 +1931289 +2740805 +1441781 +2405827 +1939379 +1441798 +561598 +1592378 +2617678 +2674677 +675739 +2405819 +2420365 +1592345 +2277058 +1592365 +931323 +106189 +2674653 +2420364 +1699972 +561618 +1361680 +1259113 +2217220 +657621 +2343689 +1895488 +1119348 +2817452 +2715545 +1895499 +1654830 +561612 +1233396 +2415318 +1265775 +106209 +495888 +819572 +2674682 +819575 +1931290 +1081542 +1592400 +1809780 +1131244 +2715532 +657614 +1339032 +981593 +644963 +1081550 +303286 +2096545 +2096547 +2343695 +2674663 +1119355 +2725629 +2617687 +981605 +2617684 +2703040 +819579 +1233384 +1992562 +561583 +1480559 +1441802 +2046289 +2046287 +382237 +1680202 +2217234 +2217214 +2817469 +2674659 +561615 +1895507 +2046288 +1265763 +2420362 +1165154 +499559 +106206 +1944999 +1306406 +2217271 +2725640 +2405817 +1119354 +2217171 +2217209 +2874587 +2874573 +1441820 +700725 +1339056 +561668 +1895518 +1306416 +819628 +1107166 +2725646 +456132 +2217331 +2544323 +303289 +2096603 +1339045 +819607 +1746150 +323553 +561741 +1098922 +2617737 +1384606 +561697 +2420367 +1592439 +2617760 +1746170 +382281 +645022 +1841274 +187851 +1841354 +2217322 +1510068 +106215 +645068 +1195501 +356439 +1233403 +727437 +896110 +734609 +2846350 +2674720 +1592463 +1895586 +1966278 +1176752 +718012 +2405842 +742932 +1841337 +106290 +561678 +2071151 +561767 +700770 +561732 +1206111 +2306778 +2874590 +931344 +386553 +931334 +226361 +2506276 +1645579 +382309 +1895526 +1841251 +657644 +1981813 +1931341 +981643 +369872 +1981799 +2010031 +71485 +1195476 +1361687 +1249157 +561684 +2405884 +2071158 +187876 +1022373 +1057578 +645011 +1716317 +1195431 +473680 +187847 +393761 +561646 +2674741 +561701 +1931338 +303310 +700739 +1195454 +1895565 +2617782 +2415320 +657630 +718003 +1680207 +106277 +675743 +361864 +356443 +1119364 +382290 +1441842 +1841350 +727426 +1306414 +1044839 +226375 +297302 +106216 +981634 +2674699 +386555 +369842 +106273 +700733 +71479 +456153 +1098891 +106259 +2217310 +819664 +1592470 +1981793 +700756 +106296 +1233413 +287340 +561648 +1195432 +1486555 +896095 +819650 +2010030 +71488 +675750 +1384608 +2405928 +2874619 +739489 +2674709 +382241 +106299 +382306 +106272 +644995 +369845 +1119382 +1361686 +2544328 +1981801 +675752 +1098913 +561717 +2096566 +323544 +1195473 +2846331 +187849 +382288 +1361733 +1981810 +2217332 +393769 +2025082 +1249156 +2217347 +2674701 +256124 +2874620 +71491 +106288 +106312 +561647 +283909 +1233426 +742924 +645065 +1821095 +473669 +24829 +473665 +1396317 +981623 +657639 +1206142 +382276 +1339062 +1441816 +561785 +2703104 +1746171 +1841356 +2817481 +2617757 +187839 +2617748 +2544324 +561737 +1592483 +1195421 +2874615 +456140 +1966275 +718024 +2405845 +303301 +1841284 +1346161 +2846339 +2817476 +1195436 +1895564 +657636 +369855 +2096590 +2096572 +1895574 +1441863 +2617735 +1510122 +931359 +1895609 +106219 +1895557 +1107160 +369863 +645091 +200783 +1361694 +2544325 +1716306 +187853 +1396309 +473686 +561742 +931328 +106275 +1044843 +361866 +2617723 +1339072 +2343720 +2703102 +2217326 +1510111 +675763 +645043 +256133 +561714 +2096586 +71500 +2518060 +1034214 +1206112 +645079 +2217407 +1070257 +1143966 +2817493 +1119361 +71486 +1664476 +1034221 +2617756 +819646 +1895559 +2703099 +981615 +106266 +106291 +2217395 +303303 +1966301 +1195437 +2617727 +386556 +645086 +1361721 +200785 +2874583 +1368652 +71489 +1895581 +763518 +1233401 +2217334 +106287 +246879 +644974 +2405904 +644983 +2217317 +187841 +2715574 +2217300 +561784 +931356 +1119360 +718019 +1592444 +369854 +2217281 +700767 +2405880 +736052 +1592472 +1981821 +1592495 +645087 +1339092 +1249162 +2715568 +369879 +1592471 +2874596 +2217388 +1592417 +1841324 +742931 +931346 +645067 +2846353 +1195487 +1895548 +431840 +1592445 +734606 +2846320 +356441 +1642927 +1510110 +644999 +369838 +2703062 +303312 +2874614 +1195506 +645078 +2405878 +1592461 +386537 +1841308 +2703082 +2217346 +2306791 +2405873 +2737528 +1098879 +1283580 +2071175 +905984 +200799 +561826 +1981836 +1283604 +71530 +1966307 +2071198 +1952344 +1119398 +106358 +1895637 +1034243 +2715588 +819729 +24888 +718031 +1087024 +1098938 +763542 +1233451 +106317 +24851 +1952343 +2703145 +2703195 +819676 +2046309 +2046303 +1283587 +1981835 +1233457 +1592509 +226394 +1707529 +819722 +2364819 +1195552 +456165 +819683 +1441916 +1716340 +71534 +1283538 +356469 +1945053 +1664483 +2703166 +1981830 +2071199 +2846391 +1233439 +431860 +2846363 +763543 +2071191 +1152815 +819690 +187894 +2096630 +1510139 +1402893 +2848075 +1283563 +1945060 +1486559 +106378 +2096616 +2703216 +2846368 +24853 +106364 +700775 +1098935 +71533 +356457 +2848029 +1510126 +24886 +2071202 +323557 +981664 +1966338 +1523270 +1895627 +2096652 +1034247 +1306419 +2703138 +2703148 +2848067 +1283603 +2715587 +1966344 +2046336 +71511 +382327 +1966347 +1966334 +561815 +2703131 +1642937 +1441937 +819731 +763545 +1034242 +2703155 +1441925 +819704 +2846371 +2715595 +200798 +200808 +1759372 +2686587 +484442 +1650587 +1339129 +2096639 +1441942 +369889 +2703160 +2096653 +106384 +2690465 +700778 +763548 +2846388 +1721524 +2364820 +484447 +1283574 +1339109 +1406697 +456166 +328662 +2848050 +420644 +1233454 +561821 +226393 +1098945 +771313 +561798 +2703192 +2046300 +1895620 +2848047 +1119385 +819736 +675766 +2703150 +561810 +1034250 +819723 +106354 +1510130 +1283610 +431862 +1945055 +1658532 +187900 +2703208 +2703133 +1070260 +819724 +1119399 +473688 +2217425 +2046324 +2848062 +1140690 +2046295 +645110 +1195540 +484446 +24936 +1699986 +1707535 +2096669 +24924 +1441967 +24908 +2617836 +1707532 +1339170 +819783 +1306430 +212018 +2002401 +2617819 +2217443 +2715598 +1716349 +1997016 +2405985 +2674761 +2405991 +106420 +1966362 +2217447 +2071205 +1283637 +2737533 +2715614 +1298365 +819741 +1952358 +1034255 +2096661 +2748878 +1441972 +1339155 +819762 +2617858 +1339167 +1716344 +2217505 +2737532 +1306426 +561853 +1306428 +2217448 +2617841 +2617807 +2617835 +981671 +1441971 +2217462 +1339154 +1081556 +2725664 +2002397 +2544343 +1952353 +106401 +1361757 +2715604 +226407 +2405984 +2758434 +1997013 +2617821 +1592548 +2364851 +1314612 +200811 +2364849 +1966381 +819759 +2674777 +2306796 +2217498 +1339163 +2733326 +561861 +106387 +1283620 +24916 +1952359 +2617851 +1339158 +2096677 +2715631 +1361758 +2217497 +2096696 +2617827 +2544335 +2443197 +1966366 +106421 +1249165 +2096659 +1396320 +1966369 +819765 +1952351 +2703229 +200812 +2217478 +2506293 +2046346 +1195579 +2066468 +819799 +2674784 +1195581 +1173782 +896147 +1841409 +2617914 +981676 +1442008 +931409 +2046361 +2617904 +1895669 +645127 +1283640 +1981853 +2217519 +1716361 +2617880 +71541 +2002405 +905990 +1510181 +1966404 +2285062 +2217559 +1442000 +200815 +1510175 +1486579 +1339187 +896145 +1361774 +981675 +931424 +2364881 +106430 +1841427 +561863 +1480581 +2096705 +931413 +1195591 +2617886 +1997028 +1895658 +561876 +1510191 +1966403 +1283643 +819818 +1981857 +1195589 +2217557 +1895667 +24947 +1339193 +356493 +1486585 +287363 +1119404 +819802 +1841411 +2002407 +287360 +356496 +2617875 +1841441 +2066467 +1841435 +106431 +819792 +1680214 +1981858 +1664486 +2066464 +1523274 +1966417 +2217532 +1195570 +1716360 +1592555 +2364886 +1707538 +1486573 +1952368 +2544398 +1283646 +1841419 +71547 +2617869 +2617911 +1195592 +1442038 +2518071 +1952375 +561893 +2518070 +1442058 +2544424 +2096723 +1406704 +2354682 +1173785 +2617935 +1966428 +2096721 +2217584 +71551 +1339215 +2096713 +2217581 +2544423 +1966434 +700805 +2715636 +2544438 +1259142 +2544426 +1384621 +226418 +2544442 +456172 +819832 +1442052 +2420375 +1952370 +1442045 +1442065 +1339217 +2544429 +1592583 +1486604 +2217579 +1841443 +931428 +1442030 +2703236 +1592578 +561899 +2703235 +1510201 +1339202 +1895673 +226417 +2703232 +2046376 +1339200 +561907 +1361779 +906002 +2217604 +819826 +2217607 +1283661 +2096734 +645140 +1044850 +369898 +1442039 +1107167 +1044857 +473713 +1044866 +1368673 +2406036 +1283697 +2354697 +2364980 +2364952 +2271668 +1129564 +1298458 +2066485 +187937 +2096771 +2617955 +1895690 +718046 +2071217 +1368655 +495913 +1339229 +2355169 +718148 +1841577 +1706630 +1298443 +2217637 +297314 +1298431 +473710 +2831880 +2369141 +1841549 +948208 +1378980 +1841513 +2271699 +700815 +106444 +1298438 +2217653 +2617951 +718171 +2217663 +1841585 +2364938 +645266 +1410242 +1480594 +1298434 +2271657 +473708 +71554 +2406039 +2544472 +645322 +1022390 +561925 +1368666 +2355162 +2071218 +283923 +473692 +1022392 +1841572 +246905 +1523282 +2271700 +2544568 +645304 +645144 +2096776 +906006 +2105403 +1907104 +645254 +2846429 +718153 +1759374 +1249173 +246897 +675785 +645155 +2406044 +1818845 +718108 +645335 +1592588 +645298 +561928 +1298421 +645262 +1841584 +1129583 +1298451 +718098 +718107 +2544494 +2364935 +561919 +226424 +2096759 +1346210 +718135 +645291 +700812 +718080 +1841475 +1044873 +718072 +1306444 +187924 +1841521 +718125 +1642986 +473719 +675773 +2364971 +657668 +1346189 +2364966 +1841457 +2617965 +2831887 +2046388 +1841459 +718062 +2427976 +1249175 +2364939 +2846459 +718161 +718141 +473707 +1841517 +1841469 +896207 +1592598 +718122 +675818 +473706 +2544489 +2544571 +1129584 +1642969 +2285069 +739497 +1129588 +2364950 +948219 +2096760 +2544578 +1249179 +700828 +1945099 +718156 +1129592 +645332 +1298445 +2271661 +2364985 +2544576 +1283698 +645163 +2846422 +2096770 +1314618 +2072146 +2105389 +2406046 +2364941 +361878 +1642952 +2217659 +2364905 +1339243 +645211 +2364909 +1895691 +1298418 +1523295 +896218 +246893 +645159 +718179 +1746218 +763565 +771321 +187930 +2406035 +2066487 +718066 +718058 +2544481 +2544480 +246899 +1298399 +819858 +2105393 +382337 +2544523 +2354685 +727453 +2617956 +2355170 +2066484 +2096768 +1044870 +896179 +2355163 +2285089 +323561 +1298411 +1249168 +2427970 +456183 +2846417 +1022384 +1206193 +645289 +2271698 +819857 +2072159 +645199 +2072151 +71555 +2848090 +2343757 +1339252 +2105408 +1592602 +2364976 +2544551 +718121 +1368670 +1986519 +2364991 +2846416 +896211 +187934 +1298420 +645286 +645316 +718075 +2369143 +1022402 +1700002 +2271674 +2217623 +2817502 +2617969 +2544498 +645326 +1642959 +1642970 +645177 +2544520 +2066491 +1368662 +718064 +2217615 +718073 +1966440 +1206178 +2617966 +1298369 +1195604 +495911 +675805 +1265823 +1206175 +2544491 +2544533 +718173 +1642979 +1642974 +645224 +2071220 +1970057 +1841581 +896206 +948211 +675797 +718174 +1389498 +2271672 +2544485 +1684960 +2355182 +2072157 +896166 +2627113 +645317 +2406041 +2544543 +361875 +1098967 +645179 +2544514 +2105394 +2364903 +2364931 +287370 +71567 +2715660 +200830 +1283707 +561993 +1510234 +1510239 +2715675 +1997034 +1206206 +1907132 +948230 +2725683 +1721531 +1945114 +1368680 +2544588 +1952396 +2544602 +2725676 +1283793 +2690481 +2690476 +1480626 +1592638 +1283759 +700843 +1955247 +2715755 +2737542 +2046412 +561970 +1746254 +1966450 +1283768 +1249184 +1895704 +2715712 +2703299 +645363 +1034281 +24975 +1306462 +1129596 +2365022 +2715768 +1339308 +1665849 +2427199 +2002416 +2427987 +906010 +2365025 +1339299 +1841607 +2737538 +1907123 +2758437 +1406713 +819901 +2733337 +1442073 +106449 +1361806 +1283725 +2715760 +896249 +2703256 +2715732 +2703276 +2217694 +1378986 +2617989 +2544642 +1060840 +700855 +200827 +1822011 +382353 +1759375 +2010034 +1306465 +657675 +561950 +2703284 +24972 +1480615 +896236 +1841616 +2544597 +1361803 +2674800 +2343763 +1841599 +700860 +718217 +2066500 +1841604 +2617979 +2725681 +1249183 +1098976 +819864 +1952385 +561977 +2705830 +1592636 +1298485 +2703257 +1283766 +1841605 +819888 +2715726 +106445 +2544587 +2715771 +2715687 +1966479 +369900 +1339295 +1206217 +1700004 +297324 +2737540 +1339301 +2217698 +819870 +2703247 +1339258 +1966471 +645369 +2725677 +2733354 +1966464 +1939416 +2046427 +106450 +495918 +1970072 +1970083 +2715673 +2010038 +819895 +1841594 +700863 +2544629 +1022405 +1022407 +1442114 +896247 +1821998 +2046405 +1945136 +561946 +819882 +1945125 +1945122 +675822 +1721532 +561955 +2420380 +645366 +1107188 +2369162 +1895708 +1119420 +2306815 +1129594 +382354 +1368679 +1707543 +2743912 +2618003 +2725693 +1195633 +896244 +2217683 +561964 +2010032 +561948 +1746251 +2617991 +1283764 +2690480 +1592607 +2686626 +2096803 +1107194 +382355 +1952377 +2618002 +2010036 +1044879 +24982 +1945133 +1206230 +2715701 +1107187 +2027577 +106451 +2105417 +1592606 +1945137 +2686639 +2703249 +718203 +2703297 +2217672 +700862 +948233 +1044878 +1339313 +2096817 +1510230 +2705837 +2690488 +2715661 +1442071 +2544653 +1746252 +1107191 +24970 +2725678 +1195660 +1841667 +1206248 +2066511 +1283800 +675827 +393782 +1945184 +382374 +287390 +187972 +1298511 +2618190 +303372 +2343778 +431870 +1592667 +562098 +1283807 +2544795 +1966545 +1895739 +2737558 +2817547 +562053 +2618109 +2715810 +948242 +2046462 +2618114 +2046459 +1762795 +1841636 +2715780 +2066503 +562097 +1442135 +2618131 +1173790 +645400 +727460 +1099017 +1379428 +1195643 +1895752 +1841659 +1339368 +25005 +819964 +2618045 +1981928 +562101 +1510260 +2544695 +2365071 +1981903 +700896 +2544784 +1034308 +1949460 +1895742 +187966 +2715820 +2096912 +1650611 +2544803 +2365097 +1087034 +819928 +896270 +1034298 +1339360 +1034304 +2096888 +1107196 +562039 +1406722 +2071246 +1339413 +2096863 +1195653 +1361810 +2096906 +2544789 +562043 +1361836 +819952 +2618182 +1665858 +2618123 +2217758 +1966565 +246916 +2066507 +1966504 +2715777 +25011 +356522 +1895761 +1339394 +2544753 +1997046 +1895727 +562050 +2817545 +2285111 +1966557 +1945166 +2096854 +2105421 +1195666 +356521 +1945164 +1966508 +645484 +645463 +1841644 +1523306 +2096831 +356516 +2406126 +1762791 +1895766 +1406726 +2544771 +187969 +2217786 +287381 +645468 +562086 +1119429 +1895759 +2217736 +1981929 +1152820 +1339348 +562022 +2544779 +439821 +1099018 +2817541 +562060 +2365099 +2518098 +1368689 +1480630 +106478 +906027 +1841624 +645476 +1510291 +2725706 +2733370 +1716415 +2737557 +2217743 +742940 +896277 +2618100 +2544766 +742941 +1361837 +2096835 +1206252 +2733375 +896282 +1406723 +2544735 +287383 +2365063 +2285108 +747609 +2618143 +1034286 +2406111 +2715784 +106487 +819945 +1510281 +187977 +2618121 +1173789 +1907138 +819973 +2096882 +2096886 +2002434 +1298516 +1107203 +1931375 +2217730 +1654842 +1981919 +1306472 +2703320 +2365042 +1206246 +2217716 +1195644 +2217766 +2096837 +1945152 +2365040 +1283819 +2544694 +1762801 +1510266 +931480 +2705848 +1707545 +1510302 +283938 +1650610 +1339371 +2046450 +1306467 +356520 +2066513 +1480645 +2096866 +386578 +382366 +1680233 +1592645 +1986530 +2618084 +1759376 +1107197 +2271711 +1650602 +200838 +1822032 +2544678 +2010054 +2217747 +2831890 +1306476 +2046482 +562057 +1107201 +2217772 +2096867 +1966511 +1895754 +1931381 +2544703 +2443208 +1684963 +906029 +2618161 +2343786 +2686645 +1233499 +2696040 +1099016 +2096880 +2715813 +1716410 +2217722 +1643000 +1480632 +1966519 +1510243 +200833 +1298524 +2618125 +1283836 +1384630 +819943 +2096876 +1510288 +1283815 +187967 +2518094 +1129600 +1379001 +2343785 +2544747 +718218 +2544697 +771329 +1746286 +24996 +645466 +1966527 +948238 +1523314 +1981908 +297342 +2544693 +1510287 +1386239 +2277089 +2715812 +645415 +323607 +2715779 +1022414 +1981905 +187956 +562047 +1396331 +1339406 +2518095 +896275 +1129599 +1841643 +1442121 +1716414 +1486622 +2703313 +700884 +645405 +2544788 +1361844 +1510326 +1700013 +562135 +1643014 +1034331 +562119 +1665862 +2406144 +2618243 +2544833 +931501 +896344 +2071283 +1966581 +2427208 +700941 +1099026 +1087048 +1044920 +906053 +323609 +1173808 +819982 +2618263 +2618237 +2618266 +981705 +2618215 +1907154 +1044907 +1442167 +562136 +820035 +393784 +645534 +1907153 +2071274 +896324 +2217809 +1654846 +1895792 +1841704 +1107244 +820029 +906041 +645531 +2071315 +1841711 +382403 +747616 +1592698 +896323 +819984 +820041 +1195682 +2544830 +2544828 +439838 +562116 +1442168 +382392 +2072172 +1173838 +1173819 +1480668 +906043 +2217810 +2406156 +1480673 +1665866 +1895788 +2618257 +1044902 +1022420 +439896 +948290 +1907150 +1746326 +1970105 +2217808 +562143 +1966578 +1442154 +1895783 +2096919 +819986 +896334 +1044916 +1044906 +1907152 +1931386 +1070266 +1997054 +562130 +562139 +439876 +1841670 +2627136 +1716434 +1895796 +361904 +1746325 +2406153 +1119438 +2071302 +2544837 +1339438 +1970113 +439866 +1841681 +2072175 +1339428 +1592689 +1716430 +382385 +1107246 +1707555 +820002 +1809800 +948275 +1044917 +1480654 +931509 +1665863 +1442173 +896320 +187996 +896366 +2544819 +287394 +2306824 +948285 +763589 +1022425 +700914 +1746332 +1592686 +439836 +361898 +1841721 +562137 +1895778 +382387 +2406163 +931485 +1107217 +187997 +1643009 +1841685 +675837 +1895789 +820026 +1346238 +1523332 +645524 +297359 +1233509 +2071287 +1981949 +1523323 +1716441 +1939426 +657687 +2071269 +2817581 +188001 +1173832 +71612 +2406130 +718249 +1346239 +2217812 +1592677 +456200 +200845 +1107220 +645535 +1486644 +2217822 +2618229 +1841718 +2105433 +562115 +1339431 +645545 +1099031 +106515 +1841715 +906049 +1034313 +1087045 +2618206 +645499 +2618226 +2217814 +1907156 +763583 +1442184 +896307 +896354 +188016 +1173817 +382402 +1907147 +906031 +2096925 +1442162 +2217791 +1107225 +931502 +2071290 +1841708 +645507 +303377 +1841723 +645630 +2096989 +1339461 +1206314 +2506323 +382414 +2862961 +2097023 +2046513 +212064 +1206320 +1949467 +188030 +2217847 +1510384 +2862759 +1997063 +2863063 +718275 +2544854 +1034336 +1907163 +1314632 +2715860 +2862834 +1841759 +2096982 +2862836 +1298565 +2862795 +71625 +2863007 +2863035 +2544933 +2097012 +1523350 +2096979 +1907181 +1129632 +2863026 +2097007 +2862816 +2020268 +1298596 +1047324 +1997066 +562204 +2863010 +1195702 +2285114 +645657 +1966626 +361920 +2544895 +2097051 +1410261 +2618271 +2862885 +287400 +2863060 +369921 +1523346 +1997061 +2862912 +2544860 +1022468 +382422 +718270 +1206282 +896413 +645624 +675843 +2862941 +2690504 +675846 +297364 +2703366 +246928 +562223 +1480715 +645681 +1195708 +1060852 +1306489 +718299 +645595 +2343807 +1510377 +718281 +2217853 +1346246 +2097046 +675849 +820062 +1099045 +1822050 +1680243 +645735 +1107262 +2217833 +1480702 +1283883 +1480709 +2862878 +2627151 +2544918 +2743921 +1680242 +771342 +645597 +1510382 +1195721 +2096971 +718288 +2544942 +1510350 +2365139 +2862768 +2743922 +1129630 +2862907 +1523352 +931517 +2737568 +2862974 +1480711 +25040 +2097030 +1233514 +2817602 +1081566 +2096974 +495930 +1022431 +2862796 +1986543 +361930 +1510346 +1022441 +2862730 +1486658 +1480707 +562171 +1721562 +1107269 +2690515 +1945204 +2862997 +1283886 +473730 +2715834 +2066531 +1523340 +1970130 +2002459 +2217861 +1107253 +297363 +1680247 +2406192 +2007254 +562221 +382453 +2544923 +2007255 +2096980 +1707559 +896387 +645586 +2863017 +382429 +1368697 +2863043 +981721 +1298573 +1107263 +645610 +645651 +645650 +2862867 +2406176 +2862746 +2862892 +1195720 +1510371 +739509 +820069 +1298564 +1249228 +1406737 +2862857 +2862774 +1386241 +2715890 +2096988 +1480703 +1700017 +2618329 +1129627 +2703385 +2862913 +1339451 +2703375 +2862749 +645663 +1841766 +2544856 +2544873 +1298601 +1396339 +2686651 +2862820 +645751 +562200 +1966629 +2862898 +1665872 +283943 +948300 +2863027 +2817603 +2862972 +1486656 +1992586 +2703388 +2725713 +1486655 +2618287 +2862865 +1129628 +2863012 +1746356 +562231 +1716445 +2406204 +2618275 +1895801 +700975 +1361856 +106522 +657691 +2096998 +645645 +645754 +1822049 +2544939 +1107279 +1283873 +2863034 +2874627 +645643 +2516085 +2693212 +562232 +948305 +645705 +2544867 +1060849 +1361854 +2277098 +1283879 +2285112 +2862925 +1249227 +2406189 +2862785 +2427996 +820052 +1339472 +2046523 +1283861 +1966612 +763592 +2715824 +1206305 +1592717 +562173 +645633 +1981963 +2862790 +981720 +188024 +2097029 +1684966 +2862833 +1746359 +645715 +1907175 +645642 +2097039 +2862936 +2544885 +1442192 +562233 +2427209 +700964 +2544920 +1298574 +718283 +1841741 +981714 +2096964 +2690511 +562222 +1233511 +2096965 +2862938 +645565 +2862822 +2862939 +2097067 +2863045 +645671 +931598 +931594 +2618443 +1970166 +1955253 +1206367 +2072178 +1841819 +931565 +1650628 +1206344 +2097160 +1680251 +700992 +1249242 +1592730 +1510478 +2618437 +1022485 +896417 +562262 +1195739 +1982027 +2703417 +106546 +1945242 +2618380 +2618439 +1195743 +981755 +2406221 +2674857 +820143 +382500 +1195734 +1841783 +1480735 +2217964 +188045 +1480750 +896482 +1841788 +1895852 +701002 +1283935 +2217907 +2544990 +700986 +2406226 +763603 +896436 +1945240 +25061 +2733395 +2010067 +71656 +2518111 +1841811 +931533 +1195754 +2506338 +1206362 +2618371 +2353766 +1970141 +645868 +1841805 +1249247 +1173848 +2545033 +106529 +2354717 +2703393 +1939441 +439957 +382462 +2545006 +439922 +1283909 +1034352 +1283901 +2097138 +820121 +747617 +2518122 +1966731 +2217878 +562288 +820152 +2365218 +369930 +1592745 +25065 +2071335 +1195759 +226480 +382466 +1981992 +2406254 +1107285 +1982040 +645843 +1966718 +1643030 +1480753 +439930 +948331 +2705860 +1480737 +2046571 +1523364 +727473 +1841801 +2817665 +2365229 +1746379 +1841772 +1339511 +2518124 +456225 +906094 +820140 +1087053 +2518143 +1283938 +2817616 +382494 +1152823 +645824 +2365159 +226492 +1746396 +645845 +657699 +2406225 +473753 +2545011 +745511 +1396344 +1907193 +645876 +2046570 +1099073 +2618460 +1442208 +473757 +1981997 +1982013 +1746373 +1966644 +820122 +2618365 +369924 +382484 +439923 +2544964 +2703411 +323629 +1510397 +25092 +1339491 +2097161 +1966654 +948323 +226496 +2365180 +1298627 +1480716 +2715934 +1762813 +2420394 +820156 +356554 +1339498 +71678 +2217955 +1283896 +1406742 +562275 +2365224 +1592783 +2097100 +931585 +297370 +2518141 +645875 +2817609 +2863074 +2427217 +906089 +2545060 +473750 +2627159 +2071352 +2674859 +382472 +645773 +1249246 +1107299 +287403 +1206361 +1283920 +981741 +1346260 +1746390 +1306498 +1809806 +1510491 +2010070 +2703440 +1895882 +1480724 +1895847 +1982010 +2217916 +1931415 +2365208 +931538 +896438 +2618410 +1895860 +2217915 +820126 +931581 +2071362 +2618424 +2544985 +71672 +2406238 +1206354 +2217924 +2217961 +2703450 +1966645 +1099103 +1119457 +931553 +2097093 +2406312 +2705861 +1060863 +2071363 +1480734 +1895881 +1361871 +2544949 +562294 +2406296 +2518142 +896480 +1410266 +2518151 +2506339 +2217992 +948332 +1841767 +820129 +1643033 +1716461 +1129644 +1249249 +25074 +2406249 +2071346 +1510406 +645811 +1762815 +896448 +1129643 +562329 +1643035 +2545077 +2817647 +1762811 +382495 +1339549 +562330 +645861 +562286 +226486 +1841844 +2354712 +2066559 +2715948 +2217972 +2733399 +106542 +2217983 +1480748 +645791 +473748 +188059 +2406300 +2743932 +1510480 +1966659 +1982020 +2097089 +2715924 +1592739 +1379020 +2817683 +2406259 +2217905 +1396343 +2518105 +981738 +1107298 +1099085 +1119465 +456217 +2010069 +1809805 +645794 +1107292 +71686 +1746388 +1107321 +188081 +1510454 +2686652 +2544987 +948338 +2518146 +820134 +562255 +1822067 +2306851 +1907185 +645823 +1442214 +1129641 +1510452 +645757 +1361875 +645779 +1283941 +562348 +896441 +106543 +562319 +931576 +382483 +1486676 +2406273 +1283939 +2758453 +657695 +2406264 +2817675 +1592744 +495940 +645759 +562269 +2027580 +456208 +1140701 +2406235 +2817613 +2737573 +2544959 +1523376 +948335 +1233539 +931597 +2010065 +2618446 +2737569 +1119461 +439909 +2618421 +2690525 +645767 +1206356 +1044957 +2545005 +2715939 +1982049 +1523360 +645850 +1107319 +1206349 +948325 +1510405 +931567 +1945241 +1339531 +439949 +1044963 +1680259 +386582 +2627162 +2618354 +2618431 +2544972 +303385 +1939442 +2406294 +931545 +645789 +645873 +2097088 +2748887 +1099093 +1510400 +948347 +188063 +1173842 +1982023 +2071366 +1099113 +2715920 +2758454 +323643 +1249235 +2217931 +1129638 +456218 +2365172 +2618394 +1510490 +212074 +562346 +562302 +981756 +2271738 +473763 +2365182 +1510429 +2046564 +931543 +25095 +562347 +1480747 +2046541 +473747 +981740 +2545021 +2618411 +2743928 +2674875 +1716454 +1982034 +1966653 +2618367 +2817673 +1107302 +1966690 +1361887 +820098 +1283904 +2306840 +2271742 +361935 +2046551 +700997 +212076 +2046535 +1442264 +2071374 +2365243 +25117 +2715954 +2365250 +2618477 +2406317 +2715963 +1034380 +2217995 +763629 +1119468 +2066573 +2703456 +820183 +2406324 +2406331 +1339564 +1283951 +2046579 +2097167 +1283950 +188085 +1486723 +2545109 +1841883 +2097203 +2715955 +763610 +1746411 +2545111 +1044980 +1643044 +771372 +2218004 +763643 +2733403 +771360 +25100 +2217999 +1442258 +297379 +2097176 +1841859 +1592786 +456253 +2046587 +2097199 +2271743 +1970170 +1895892 +562370 +2545101 +1480764 +931606 +562359 +771358 +1841854 +1195775 +1966756 +2545117 +763648 +2618494 +701015 +1841880 +456250 +1746413 +456246 +1486705 +1119467 +1841871 +2545114 +763646 +1057602 +2703457 +1486710 +2545119 +645884 +2097175 +456254 +645877 +701011 +2674888 +562372 +1970168 +1206376 +2097198 +2406346 +1654857 +562361 +25109 +2285155 +1195787 +2406391 +2354722 +763675 +820227 +2545335 +1510584 +562484 +1486730 +2618610 +2354742 +763687 +2618503 +1233553 +2365317 +2545181 +2674895 +226503 +1716481 +1841930 +1195804 +2406423 +1592824 +1283995 +1966833 +106590 +2365283 +2365307 +2218079 +1034400 +701021 +1339599 +2618517 +226510 +2343845 +1406761 +1510547 +1442328 +2218031 +2071428 +1841971 +1809813 +2427230 +2027596 +1442312 +820220 +562426 +2046609 +763678 +2545349 +2715982 +1895903 +2703485 +1486764 +2703502 +2715969 +820288 +2846469 +369946 +562395 +336895 +2545201 +2518155 +931636 +1339621 +1406754 +1746450 +226508 +2545340 +2618583 +657702 +1233568 +931630 +2545174 +1716497 +763652 +2071409 +2725734 +1970172 +25131 +1895901 +25149 +657712 +303405 +2618540 +1284039 +1716505 +1339625 +106613 +2365276 +562397 +2218138 +2518171 +2545299 +1716494 +1523382 +2354724 +1895900 +931610 +2097246 +2674893 +2420397 +1119472 +1284008 +106610 +1841901 +2545303 +2071429 +369942 +2545278 +1966814 +2285147 +2618604 +2218131 +2518161 +562381 +1510555 +25132 +1442313 +1966832 +1283987 +2027592 +562440 +2715981 +1486756 +1592810 +1746433 +1442287 +25127 +2618603 +2737584 +1592823 +2406354 +906130 +2354738 +1442325 +701024 +2218136 +2406403 +1099132 +1339614 +763680 +1306500 +1339608 +2218071 +1966822 +2406372 +1283970 +1510540 +2406350 +1841968 +2343842 +1982054 +1966813 +2406384 +106622 +1510570 +106614 +2097252 +1284001 +2365278 +1746464 +1841921 +2218050 +820196 +2046608 +2406356 +1486747 +1044982 +106605 +1966817 +1592814 +906125 +2545323 +25135 +1592831 +2618585 +931618 +2427236 +2733405 +1099140 +303399 +1680266 +2097290 +2097221 +562428 +562425 +2545354 +2071381 +1931426 +562388 +2218092 +2545243 +2306863 +1486740 +2365287 +2354772 +2545185 +1966826 +1442307 +2365356 +562419 +2002482 +2518154 +1442295 +1592834 +2071380 +820232 +2218088 +820264 +820213 +1152825 +1442318 +1746457 +562391 +1592817 +25141 +1966806 +2046614 +2218052 +1716488 +2674908 +2365265 +226515 +2545343 +2831893 +562482 +2406357 +2545249 +1339622 +2071403 +2846476 +1339605 +2354758 +1931435 +1510522 +1047326 +1650652 +1442298 +1442334 +727484 +2002478 +1966848 +1510517 +1442300 +2046613 +1966805 +1283998 +1361902 +763661 +2365314 +2545215 +1966859 +2846478 +701033 +2618555 +1339650 +1486726 +1339628 +1841949 +2406386 +303404 +1680265 +1339593 +2545176 +2406370 +2071415 +1510514 +562401 +657723 +328688 +1486785 +2725743 +1442372 +1510597 +71712 +1841987 +931646 +2674930 +2506359 +25176 +2218177 +2618651 +2545362 +1195822 +323650 +2737586 +2046633 +2046634 +1442364 +820321 +1841979 +1841995 +2046617 +931642 +1034414 +2618636 +1592841 +931643 +2218221 +106684 +1339664 +2343850 +106646 +2545368 +1650666 +188102 +1119481 +1034428 +303416 +106681 +1680269 +1361913 +2097314 +2627166 +562503 +106661 +2097315 +1206382 +2743937 +1442384 +745513 +1486784 +2046640 +303410 +456285 +2097361 +2846488 +763700 +2046623 +1982087 +1442383 +2406459 +1480784 +303417 +906136 +2097355 +2218145 +2863079 +2817715 +1442381 +2019585 +25172 +2218202 +1306506 +71708 +896512 +2046648 +188095 +2218183 +1592848 +1339680 +2218219 +1284055 +2343851 +2218184 +2846487 +701046 +2715996 +562487 +2354811 +386585 +2618644 +356567 +2310251 +2716005 +562510 +1087078 +2218161 +2046637 +1339661 +1361919 +2046626 +562508 +2218157 +2218180 +1206381 +1265838 +1841990 +456283 +2365381 +106660 +1982088 +562496 +1034420 +1945274 +1939445 +1284063 +25182 +226532 +1249254 +2218159 +1939446 +896507 +1952436 +2715992 +2703510 +25184 +1945308 +1034444 +106706 +1044989 +106693 +820368 +562553 +226537 +2218252 +562546 +562567 +1298665 +1982093 +212083 +896520 +1842010 +562574 +1895986 +2097367 +1895993 +2690534 +106722 +188106 +106699 +820366 +820441 +2716013 +2097374 +2218251 +2716012 +1022500 +1592865 +2406472 +1982113 +981792 +2618678 +303428 +820379 +562547 +1707563 +2097375 +562560 +1306512 +1896000 +1510605 +2007266 +1284092 +2686673 +1746498 +1716512 +1931457 +1966883 +1480786 +106691 +2218250 +820430 +2674931 +1982115 +2618666 +771377 +2406470 +2737587 +1442396 +562564 +456290 +2674933 +1945311 +1746479 +896516 +2690533 +1931455 +1746503 +896524 +1034435 +820436 +2703545 +106724 +2725753 +820433 +2618667 +1895997 +1650674 +1523386 +1523387 +562581 +393790 +1034459 +2618686 +1480788 +1022501 +1107334 +645923 +1298668 +2218273 +226538 +1592869 +2365405 +1284109 +25285 +1442426 +562587 +1716546 +2097412 +2545382 +1982121 +1931486 +1746524 +820458 +2545414 +820464 +1361938 +106770 +1298675 +1716518 +820447 +1119510 +2545384 +2218335 +1896010 +820455 +287429 +820483 +2545420 +336898 +2618708 +820500 +1592932 +106756 +1284136 +2545412 +1952445 +1044998 +303442 +1047331 +820533 +2218282 +1716535 +200862 +2277129 +1284101 +200868 +1442417 +2218352 +2365413 +2703556 +303432 +2097443 +25270 +2218314 +1045000 +2218330 +1931473 +1442401 +562607 +2545411 +106761 +981796 +981805 +25217 +2071457 +25234 +1442425 +820516 +2406531 +1716547 +2874635 +1284134 +2703554 +820468 +1298673 +1233594 +820541 +1034467 +2406528 +1284110 +1716521 +896538 +1107335 +1931484 +1099172 +2071460 +1592905 +562605 +2097409 +2618712 +2545408 +1298671 +1306523 +25267 +303446 +106760 +1099170 +2716040 +2046666 +1952442 +200866 +1022504 +1592907 +2618722 +1746519 +2097439 +2406527 +1592883 +1129673 +1716527 +25257 +2066581 +1339712 +981803 +2545413 +2618774 +2365404 +1284156 +1442452 +2097404 +1339699 +2420403 +1195823 +1982123 +2406519 +820454 +1034460 +1480800 +2703564 +2218331 +287454 +2618700 +2618716 +2071451 +2545405 +2420405 +1592940 +562595 +701054 +1896005 +931674 +820504 +2097410 +1442457 +1931491 +1099183 +2306875 +1306519 +2365406 +1442420 +2046679 +1931470 +2218294 +1721577 +1716548 +287443 +1592927 +1523397 +675873 +2218391 +25298 +2406574 +2703577 +1284178 +734662 +2097456 +1265845 +1842024 +657749 +1654869 +896587 +188139 +1284186 +188136 +1650691 +2406547 +727493 +771387 +1650707 +106792 +2674965 +1480804 +2686680 +931678 +1486789 +106775 +1442470 +1982136 +1654874 +188134 +562629 +701085 +2406583 +1284182 +1361944 +2218362 +1650699 +896594 +2097447 +2353774 +657741 +188144 +2097467 +645940 +1510660 +2027603 +2716062 +2674975 +2618807 +981829 +820576 +2406543 +1592962 +2353772 +1945317 +1480813 +2737593 +1284199 +2686676 +1643053 +1284170 +2618802 +645964 +562664 +382520 +896588 +1442486 +2545460 +1442479 +2406581 +675872 +1480806 +188131 +1480803 +2218402 +820566 +701068 +1284194 +2627169 +675877 +1379442 +1842026 +562617 +1442477 +2831911 +2545479 +981823 +2218399 +1746543 +1361946 +896568 +2343870 +2618818 +1284160 +1654876 +562632 +2545438 +1982140 +645951 +1931498 +1346274 +1284204 +820578 +2271761 +1129674 +2415369 +1700041 +1119517 +2743941 +71752 +1746548 +2406553 +2271756 +1022517 +2618794 +645960 +1896035 +2545476 +2716057 +1022518 +1284162 +2406570 +2831904 +645938 +931683 +2343869 +820571 +2545467 +303453 +2545473 +1643052 +1361942 +2105472 +2716065 +1195837 +701081 +2618988 +2703590 +2506375 +2618877 +2846560 +2097495 +1842042 +1592996 +2506388 +2545547 +2618974 +1024222 +2618923 +1643086 +1982156 +981836 +1982142 +2618848 +2703604 +896629 +948378 +2817739 +1510693 +2817723 +701098 +2071473 +1992609 +1842092 +2097478 +2618837 +2618933 +727511 +1510672 +1361992 +562794 +1510707 +1842095 +2406604 +2846504 +2618874 +1949482 +2443230 +2618843 +1842079 +562796 +2703612 +2545528 +931687 +2306902 +1510679 +1284250 +106819 +2218542 +645990 +1995555 +2365446 +1140709 +2618972 +1119525 +1384676 +1339775 +1982155 +562813 +1896089 +740212 +2618982 +25315 +1945339 +763739 +948370 +562760 +1099207 +2618876 +106832 +1842103 +2218502 +2443231 +2365437 +645992 +1284223 +562736 +25325 +2046721 +1966900 +1982144 +2046731 +2365433 +1361958 +2218550 +1782668 +2365467 +2066587 +1119530 +2306910 +820638 +771394 +369972 +2002507 +1707567 +1384664 +820617 +2618990 +562782 +2690542 +2618849 +2218510 +2748892 +1982159 +2618983 +1782672 +2674995 +1593016 +1842088 +2066586 +2310256 +1707568 +1480833 +1284211 +1842075 +562711 +2415372 +2046723 +1442495 +369973 +2545480 +2506377 +2097503 +1379031 +1842102 +1233614 +701109 +1643083 +2545537 +2097489 +1339784 +226574 +1966944 +2506382 +2846547 +2506398 +1654878 +1361949 +71763 +981839 +1966952 +727510 +1896062 +1746550 +1259177 +727509 +2406590 +2365482 +2758465 +645988 +2353778 +2545550 +2506385 +2506389 +188181 +1721580 +1842068 +2618873 +1746552 +645999 +2846532 +820600 +2846522 +2618927 +2545626 +2618987 +2013214 +896619 +896627 +456314 +1361978 +303458 +1842094 +2545585 +1842083 +931701 +657765 +2218431 +2545567 +2693216 +2618956 +1707566 +2406608 +2545577 +1442493 +1982178 +1284212 +1523410 +820626 +2285160 +1442521 +2618954 +2618976 +1945322 +820620 +2046759 +2365432 +896634 +2406596 +2406607 +2618975 +1339795 +1384665 +2097487 +2725781 +734666 +2046722 +2343894 +2285165 +1099231 +1809827 +1842033 +2545594 +1361982 +562810 +71761 +1442525 +2846534 +1756892 +1339759 +188178 +1982169 +2218500 +1716582 +2406586 +2027610 +1842087 +1966953 +2674987 +2846526 +1982167 +2218552 +2846541 +1195839 +2733422 +2353777 +1119523 +1982161 +1982170 +71762 +2071475 +2343914 +2545565 +820615 +2618867 +562775 +2545613 +188184 +896626 +2618859 +106808 +1945328 +226563 +2817738 +896630 +562704 +2618884 +2686690 +1982151 +2545507 +2545631 +820645 +1510670 +2618941 +2343895 +1707970 +2545608 +1284226 +1680278 +2365442 +1442523 +106823 +2218435 +1361997 +2733417 +2545603 +1233616 +1966941 +1945320 +562712 +2097514 +1680287 +981835 +1721581 +1896054 +256172 +336903 +1643098 +2705896 +948386 +2218582 +1986579 +2002526 +2748903 +1368739 +1442532 +1842122 +2355202 +1298758 +2817756 +562854 +2696076 +646247 +2696082 +1721589 +2874797 +2758467 +948397 +2874697 +1129689 +2703640 +1510714 +1233620 +562824 +1298848 +1955273 +1368725 +2716215 +675908 +2703630 +1480866 +1945348 +1480869 +2737633 +188215 +1945371 +2072185 +382549 +2725823 +2002542 +1970197 +1298784 +1842114 +1339845 +1362017 +675918 +2097518 +2703617 +1298824 +1314656 +646201 +2874762 +675931 +1045021 +2675028 +701137 +2007275 +456318 +1982226 +1982221 +2817772 +1306535 +1480859 +1298787 +646081 +2406687 +981862 +2686694 +562819 +1298780 +1643099 +2716196 +1966991 +2716112 +2406702 +2066603 +646257 +562831 +2874749 +2545682 +1298705 +1298751 +1680290 +820653 +2725811 +1986552 +2343917 +1992623 +2619030 +2690546 +2874687 +1966976 +2831943 +1362028 +646192 +1746570 +2406701 +1386256 +2874770 +646115 +2696081 +2545659 +1206408 +2716175 +1966972 +2619025 +1480857 +1970187 +2817747 +1389509 +2874636 +646060 +2690554 +1368729 +188192 +896655 +2874742 +1982256 +1809830 +1195865 +25337 +646160 +896676 +1970193 +2619006 +1368735 +2874653 +1086007 +1298717 +1480864 +2690594 +727533 +2218579 +1967000 +1298718 +2758492 +1298748 +718367 +1339869 +931744 +188207 +2725797 +2831921 +1970202 +1339843 +1368732 +1643096 +1298730 +742961 +646109 +2218571 +2716130 +1945351 +2716170 +675888 +1986567 +1966971 +646056 +2831929 +2009387 +2703654 +646146 +1362054 +1298760 +2874830 +2716211 +287456 +701147 +2545649 +369980 +1952464 +2716221 +2619028 +1982189 +2716210 +1362053 +2874761 +2705890 +931751 +2696085 +2703662 +2733442 +2696111 +2874766 +1022546 +2874788 +2874665 +1842133 +1346288 +1129686 +2725815 +1298808 +2406684 +1386258 +2690590 +2725788 +2716199 +2619042 +1593037 +1298766 +1284285 +2716200 +2737607 +2716131 +2218563 +2306920 +2046781 +646251 +1992619 +2703644 +1034505 +646038 +2545680 +2725836 +718345 +646099 +1523418 +562866 +473779 +1368763 +646216 +2716237 +2619068 +1368741 +896645 +456325 +1195852 +382555 +1152831 +2627181 +1298769 +718344 +2817758 +1593024 +1233626 +1119535 +1362063 +896663 +2020292 +1284294 +1952473 +1195854 +1952465 +1107366 +718368 +2874826 +2046771 +820650 +1896108 +2696080 +2758489 +2545671 +2343918 +1284301 +2690588 +2696119 +1298715 +1298831 +646175 +2725801 +2365496 +1298794 +646012 +1298793 +646065 +1986555 +2758471 +1945347 +2545658 +1967006 +1384686 +1298712 +1955275 +2027618 +1982239 +1510718 +2619055 +2874650 +1982262 +188190 +1306529 +1684975 +303460 +896639 +2218598 +727529 +1643094 +646162 +1107356 +2703629 +1195855 +2690580 +2619049 +2737623 +2716159 +646262 +896644 +1746572 +2020280 +2354823 +1362086 +2703657 +646237 +2874644 +1249261 +2693219 +1982229 +1195861 +1982266 +1362059 +2716186 +2748895 +1284272 +1099240 +2406679 +2619031 +2846564 +382543 +1955259 +2619033 +1665891 +1510715 +657780 +2703627 +2046782 +2690557 +2696125 +2725804 +646177 +2369195 +646085 +1982186 +1756894 +1986578 +1362067 +1129690 +1952457 +2020279 +562843 +675904 +2703660 +1510710 +1284258 +1896113 +646266 +2716189 +646191 +1716591 +2690586 +1368768 +1368773 +896640 +2353781 +1480856 +1022560 +25338 +2716273 +2046807 +1746610 +646324 +1896142 +2703674 +2619091 +1510753 +701152 +1896150 +1982281 +2365529 +2343933 +646344 +226596 +646345 +1298875 +1362124 +727548 +2545756 +25341 +1284387 +562954 +2365520 +1593065 +562956 +646342 +106850 +226595 +2506417 +2758501 +646312 +1992629 +1362137 +1259190 +562906 +820684 +2406771 +2365508 +2406765 +763750 +562925 +2218677 +1442590 +2218669 +2028993 +1034513 +734679 +1195902 +2365528 +2218715 +1967061 +1896148 +2218689 +657795 +1284310 +2420415 +1314660 +1746598 +1339906 +1716605 +1982340 +948398 +188236 +71793 +456330 +820685 +2277139 +1510746 +2097578 +646327 +323699 +1362125 +1593105 +1298877 +2365523 +1442549 +2703677 +1298870 +646326 +1593118 +1195901 +727554 +2343929 +562889 +1379045 +646303 +1099249 +2218665 +1442555 +2675042 +2420413 +2343925 +2675047 +1716606 +1650722 +2690608 +562946 +1982290 +2406711 +701169 +1379042 +1896121 +820702 +931764 +1896147 +562917 +1480889 +2406766 +2097549 +1593084 +1379450 +2097568 +106874 +2545753 +820692 +1593111 +2729461 +2406782 +2002559 +657789 +1716628 +1593080 +1593101 +106865 +2846595 +820688 +2406742 +1967017 +2675032 +1195890 +820687 +188231 +562975 +1896152 +2071484 +2406713 +2406791 +1284388 +1842173 +2097572 +2365527 +1362138 +931770 +1298890 +1099248 +562938 +1265847 +2758500 +1442588 +2619097 +2343936 +1967031 +675935 +188228 +2218613 +323691 +2406787 +1982303 +1982323 +2406779 +1967022 +2733457 +2420409 +1406779 +1195872 +1442556 +226593 +1982292 +2619082 +369981 +226588 +2703670 +188238 +2619140 +2002596 +1339896 +2218670 +2218723 +562958 +2097561 +2675048 +1195881 +1195897 +1022565 +2619099 +646338 +1362134 +2002575 +1982335 +646290 +2218608 +226598 +1346301 +2675051 +287460 +1896159 +2545696 +1967020 +701162 +1896136 +1284353 +2097597 +931768 +2705903 +646346 +2046802 +2703680 +1510740 +361955 +2343924 +2675052 +2545720 +1982331 +1034520 +2619089 +1510732 +820671 +2007287 +2218725 +2406737 +1700047 +1284345 +2690606 +2619196 +1664508 +2619200 +1952489 +2406785 +646292 +1396362 +2758504 +106855 +2406778 +1680291 +2097558 +1442545 +1593107 +1119541 +2545790 +1896158 +1362117 +1442576 +562939 +1195899 +2218620 +71792 +1510743 +931760 +727543 +1486797 +1362132 +1593114 +2545782 +323693 +2545786 +1510759 +1510744 +1952490 +1931513 +1967064 +2420410 +2343930 +1970211 +2545795 +226599 +701186 +763755 +2406833 +1593156 +2619349 +745523 +820763 +1034536 +188254 +2619238 +1700066 +2218870 +2545836 +1842190 +25375 +563076 +200881 +1339946 +2097682 +2354837 +981887 +2071491 +188247 +1034540 +2218907 +1593201 +1931514 +2097666 +188249 +981896 +287463 +2545820 +2619382 +820774 +1593209 +2758508 +2365545 +2686715 +896724 +499593 +1442646 +1284409 +1945384 +2097674 +906172 +2619350 +2619310 +2675084 +820729 +106886 +1339936 +2545819 +1339976 +2097663 +356593 +727557 +563061 +2344007 +2071493 +1480910 +2619276 +1233646 +1593183 +2218745 +2344020 +1967074 +931781 +106887 +25378 +2344037 +1442655 +2846663 +2817780 +646365 +563001 +2344003 +2703684 +2218869 +499578 +820730 +1284408 +1362146 +1510767 +2343986 +25373 +2420437 +2619253 +2406851 +1716638 +646363 +2846671 +701185 +1896198 +2619320 +2716321 +2218854 +1945391 +646374 +820742 +2737655 +1339962 +1716643 +1896208 +1034549 +2343955 +1967081 +2218800 +2046845 +2343970 +981900 +2218936 +2506438 +820750 +646366 +1099278 +106942 +2545859 +2725858 +71797 +2619324 +2406799 +1700068 +2365553 +2343994 +2344004 +820784 +563054 +1746629 +2686711 +2619261 +1099291 +2218801 +1442597 +2218771 +2218920 +1907227 +1896166 +2703683 +1746628 +2716330 +2218826 +1195927 +763761 +106932 +2545834 +1099281 +1593147 +2518181 +1896175 +1480909 +2846614 +2545832 +2619325 +1931515 +1896223 +1896234 +1593203 +2218930 +2686708 +646380 +2354839 +2218827 +25380 +1195935 +2046854 +1746621 +2716313 +2285177 +2097678 +499595 +484472 +188258 +2344022 +2705904 +2696136 +386597 +657809 +2097662 +2545824 +906168 +701189 +1842196 +1700060 +2046838 +2218909 +1099288 +675942 +1952497 +2218842 +1339956 +1442609 +2406835 +563072 +1480901 +1480908 +2343983 +106907 +1206417 +820785 +906162 +2545818 +2343964 +701192 +1442624 +1716631 +106939 +1842200 +1298902 +2619322 +1945386 +2545840 +1362150 +2406865 +2725859 +71799 +106921 +701188 +2619303 +563021 +727562 +2365541 +2218784 +1896205 +1087088 +563049 +1284390 +2703689 +2218836 +283974 +2218809 +499576 +906178 +2218913 +563007 +2690618 +896755 +1346306 +1045078 +2817931 +2218950 +1314667 +1298980 +1368808 +1368801 +2690716 +1376926 +646478 +646390 +2690641 +1314717 +2066640 +1986702 +2705952 +1284411 +2817919 +1249308 +1129720 +2690621 +1314688 +1206425 +1949546 +1107377 +2817885 +2690662 +1362169 +323707 +1045074 +1346315 +1368853 +2696137 +1955325 +2817959 +675972 +1986591 +495980 +188260 +1716650 +646460 +675949 +646506 +675956 +2817924 +1986638 +1955348 +2725887 +1593210 +2817996 +1376917 +382578 +1314704 +1945401 +1756900 +2696220 +1643136 +1368835 +1955296 +2716342 +2863198 +1265852 +188274 +1643122 +2817807 +473793 +646458 +323710 +1986678 +2690667 +1955304 +1986595 +1949544 +1368837 +2696150 +2690693 +1249284 +2725875 +563095 +718389 +1022587 +1593212 +2863202 +2725876 +2705930 +1986639 +2817952 +1986679 +1249271 +718379 +2218951 +1955323 +2817791 +1970222 +2690691 +2690678 +2271796 +1129700 +1368813 +1379451 +2817897 +1523426 +718394 +2817980 +2817863 +1368861 +297397 +2271797 +675987 +1306577 +2817792 +1949521 +2271822 +495992 +1700069 +2716334 +1945410 +2218948 +1376905 +1643133 +188263 +496002 +2696168 +1368878 +2817995 +1368862 +2817911 +1952506 +2271852 +1955346 +2696175 +2271851 +820794 +1442666 +1045071 +1970219 +1376921 +1523432 +2627195 +2690655 +1986680 +1982358 +2696216 +2002605 +2817884 +2105490 +2817950 +2817819 +1379456 +2271798 +675966 +2818002 +2817851 +646432 +2817810 +2863160 +495988 +675986 +1982357 +2817844 +1955349 +283977 +1249295 +1986666 +1022585 +1129703 +1339979 +1654887 +1643128 +1643154 +1643118 +2817894 +1298968 +1249273 +646481 +646448 +1346319 +1955308 +675982 +646471 +2817879 +1379452 +1298905 +1955336 +2817857 +2863104 +2696154 +1955329 +1249301 +1249274 +675992 +646427 +676024 +323701 +226627 +646472 +1939461 +1939462 +676023 +2705910 +2020306 +2725891 +2863166 +675994 +1129708 +1907231 +1306572 +1368858 +2690719 +2863103 +1346325 +1107380 +2696185 +2696215 +2696181 +1480930 +1249270 +1955322 +2863170 +1986674 +2817891 +646496 +2705921 +2690630 +734686 +1721608 +1949529 +1265851 +2690638 +2271825 +2066621 +676006 +676031 +2097726 +106950 +2863291 +1986704 +2863220 +2675123 +2619396 +1249325 +1982470 +2863237 +1955372 +1952528 +1107395 +820807 +701206 +2716411 +2415419 +1346327 +646586 +734691 +356597 +701197 +2020321 +1949553 +1373474 +646530 +1967116 +1593226 +2690755 +2545872 +2406934 +2545908 +2619501 +382603 +2406933 +2009397 +563146 +1982455 +646554 +727579 +2703705 +1955364 +2545891 +1099295 +2406909 +2863240 +646642 +2863266 +496008 +1967105 +931832 +701233 +1952541 +896771 +2406948 +1970237 +1967112 +1952526 +1265859 +1233662 +1952552 +1340007 +1982379 +2218975 +1206446 +1680303 +1442684 +763763 +1362188 +1982396 +2716388 +1982416 +2306949 +1299017 +646535 +820797 +2046872 +1368883 +2863301 +563131 +1967085 +1284428 +2344051 +1284440 +646544 +1284462 +1249332 +1952543 +1299007 +1362251 +1982479 +382599 +2545876 +1284435 +2705959 +1982489 +1982387 +1233676 +1716655 +727576 +2863206 +2545901 +2863235 +1233678 +657829 +2863315 +896776 +676059 +2406900 +646634 +2863207 +2353788 +745539 +1896284 +1442668 +1249329 +2748907 +742981 +2218982 +2344052 +2737665 +1368886 +1362178 +896780 +2863226 +1306593 +2007292 +2344060 +1299023 +1967109 +2007301 +2277148 +727567 +2007303 +2097713 +456344 +931837 +1362217 +2863255 +188283 +2737671 +2097719 +2365570 +1442681 +1362229 +2019622 +646579 +646519 +370001 +1362243 +1982385 +1368894 +496016 +1340004 +2863297 +1442676 +1206433 +1945431 +2619434 +1022597 +1593224 +2863311 +1931529 +646547 +2863319 +2545920 +1299009 +1716654 +1233668 +1510791 +2863312 +1952544 +2863292 +2019628 +1746659 +2545900 +2007306 +1340005 +2690767 +1396372 +2863219 +2737666 +2818026 +382587 +1306586 +1945422 +1746668 +2218954 +820801 +2020320 +1284439 +188279 +2863217 +1339988 +2009398 +1700074 +1284437 +2545868 +1284446 +2218961 +2733469 +2406940 +2545910 +563127 +1967110 +646609 +646607 +2619491 +2406899 +1362179 +701210 +2046887 +1982458 +2863213 +2097706 +1362230 +2716415 +2046870 +2733464 +2218959 +2716348 +1340011 +1362219 +1265861 +2285182 +2818033 +1982500 +646517 +2818022 +2716400 +1265866 +1233669 +2716408 +1593234 +896765 +2545866 +1022593 +1340001 +2619497 +2545882 +1945417 +1952545 +727591 +2406904 +2703704 +736063 +2365580 +2619478 +2690766 +2344056 +188282 +2716404 +2619474 +2758511 +2020328 +2716384 +1373476 +1298995 +1284452 +1284453 +676052 +646596 +2097737 +734692 +2686727 +1842212 +1480950 +2619499 +1298986 +1684979 +1206444 +2406960 +2733471 +2716514 +370008 +1284500 +2725954 +2716467 +2725940 +1373486 +563404 +2046926 +1992686 +1842216 +2619529 +1284480 +2737680 +1510797 +1982537 +2703717 +2737717 +1746677 +2675131 +2545968 +1442689 +1842217 +1284544 +1442773 +563392 +1952580 +2693241 +1442728 +2737703 +2046933 +657842 +1306603 +1284573 +563358 +1982536 +2619517 +2693231 +2716622 +1362296 +2619569 +2693256 +2019643 +1034573 +2619582 +2545991 +1340026 +2219045 +1284537 +563258 +2716563 +1195978 +2743984 +1284550 +1982564 +563208 +563259 +1340019 +2693237 +2725979 +1680306 +2097757 +2725941 +2748912 +563364 +2716436 +2740824 +2019651 +1945445 +1384711 +1384735 +1746690 +1896314 +1896307 +1284485 +2219038 +370012 +2219074 +1362267 +701243 +2725938 +2716546 +2740830 +2545992 +2725943 +2046908 +2219031 +256202 +1362288 +1442765 +2046919 +2097760 +563313 +2716463 +2716502 +563295 +981958 +1284559 +2407055 +2545949 +1362261 +2716639 +1967120 +2716438 +2619594 +1284513 +2219049 +563216 +2306956 +2545932 +1284548 +2097740 +2758526 +2725965 +1896329 +1284484 +1982542 +563366 +1593257 +2725953 +563350 +2740822 +2097746 +2619571 +2758533 +1284534 +2046921 +2716515 +563380 +1384730 +2344074 +2619555 +1284526 +1967127 +1340015 +1842223 +931850 +2726001 +1099313 +1967144 +1442750 +2737685 +2716503 +1362265 +563327 +2725950 +1896332 +1952573 +1099319 +2716473 +2619577 +727610 +1952570 +563391 +727598 +1099321 +2725922 +1362268 +484488 +1896315 +563246 +1952563 +1362302 +1442715 +2097759 +2716540 +1284497 +1945436 +563333 +820833 +2025092 +563227 +820820 +2725931 +1362318 +2046893 +1284566 +1896334 +2748921 +2219022 +2716458 +1952565 +2219071 +2725997 +2716420 +2046910 +1896302 +2716417 +2306955 +820825 +1442757 +1442734 +1442759 +2619574 +2219023 +2716485 +1896323 +2693251 +2726007 +1284539 +2619572 +1442702 +2758539 +2619610 +2725980 +1119578 +1284542 +2046930 +1992670 +2716635 +2219077 +563257 +2716620 +1982575 +2219171 +2846732 +496026 +563454 +2407092 +2818045 +657864 +2344083 +2846744 +1931562 +1314738 +1721619 +2818207 +2002657 +323723 +2818138 +1299043 +2846879 +2407145 +1952606 +2847062 +2619695 +2874857 +2686755 +1299063 +2847045 +676073 +1945471 +1314794 +2415438 +2219166 +2818125 +2726025 +2271872 +2846793 +1931563 +2407142 +2675174 +2726033 +2847035 +1992713 +2846913 +382625 +676064 +2546005 +563501 +2818164 +1368912 +2818203 +657844 +2726030 +1480975 +2726039 +2846775 +2737738 +2369203 +2818053 +2675177 +106962 +2619675 +2818066 +2874872 +727624 +188306 +2619712 +2846730 +2716647 +657847 +2619660 +2619658 +2219148 +1284647 +2818104 +106958 +323728 +1206447 +563451 +1955384 +2846906 +1233700 +2407127 +2619685 +2675179 +2716651 +2703742 +2847061 +2219147 +931857 +2219117 +2407117 +1992734 +657868 +2619654 +2693273 +188304 +2046947 +2219120 +2219146 +2219088 +1992763 +2818060 +2219125 +2726018 +2693263 +896787 +1284633 +1368898 +1992758 +646677 +2846825 +2846929 +1362371 +676094 +1299071 +2818179 +2846870 +2846752 +393804 +2847038 +2847066 +2874937 +1362379 +1045093 +2690782 +2874844 +2690778 +931856 +2737734 +2097767 +1306626 +2726079 +2726052 +2675193 +1284632 +646724 +2619672 +382617 +2219118 +2219169 +2818209 +496021 +1995568 +2846756 +1955378 +1982588 +2863337 +2619704 +2818075 +2846780 +1314781 +2846939 +1955399 +718412 +2831954 +1986714 +2846830 +1368900 +2818220 +563498 +1314795 +1593283 +2818262 +2546023 +2716696 +1368896 +2690803 +2744000 +2686751 +676084 +496027 +2818211 +1284648 +2846898 +2619669 +2848107 +1314788 +2874924 +2818056 +820847 +2219163 +2407134 +2737739 +2675161 +2690798 +2847026 +2716660 +2818172 +2846888 +2219121 +2818149 +563461 +1045088 +2846979 +1306612 +2874842 +2271870 +496023 +1949558 +2818289 +676072 +646719 +283993 +2407130 +2219093 +2415443 +2846716 +2847011 +2737740 +2818218 +2846724 +2846990 +1995563 +563422 +1650744 +2847079 +2407150 +188300 +439970 +2818291 +563436 +563411 +2874887 +1643161 +1340048 +2407135 +2818174 +1716661 +2619631 +2619727 +2847055 +2407105 +2846843 +2726067 +1284601 +2026054 +2846712 +1022600 +1992706 +2846936 +2344080 +1373503 +2693274 +1299062 +2353796 +1955393 +2415437 +563500 +2002646 +2846841 +1034586 +820839 +563482 +2726080 +2675162 +1746705 +2846863 +1995565 +382624 +718413 +106963 +563445 +2733487 +2818113 +1284619 +646654 +2818155 +1992736 +25409 +2846811 +1340037 +2847052 +563426 +1314783 +2874847 +1362396 +2619698 +2846954 +1299055 +676075 +2619628 +1992722 +2415433 +2407137 +2818112 +727611 +2675195 +563410 +1593263 +2846882 +1299042 +657895 +563449 +563430 +1995557 +2415428 +1362437 +2846949 +2546012 +657875 +2874885 +1716663 +1368908 +2219153 +563499 +2726014 +1759395 +1721617 +2546017 +2716678 +2415424 +745820 +2407123 +1593268 +2846733 +2066679 +1157165 +1170419 +1818927 +2516139 +496164 +382674 +2046964 +2219196 +440080 +1157087 +496044 +1939507 +1680316 +1206547 +1052130 +1045101 +2415453 +1822120 +188343 +1157065 +1233719 +496071 +1818907 +896845 +1643181 +896838 +382668 +2013659 +393819 +496080 +2546105 +1170393 +2271908 +2013674 +896848 +2097801 +2516106 +2013687 +1818905 +440022 +1157136 +71822 +106965 +473833 +931867 +2690805 +1842259 +2703767 +2306972 +1846955 +425661 +896861 +1206490 +1206528 +1129733 +496061 +1249351 +1481009 +1170388 +440067 +496150 +1684998 +496069 +2818378 +2219210 +2306974 +2013696 +1206489 +657897 +740222 +2428021 +2306987 +439991 +1907278 +2066662 +2716753 +2097791 +496064 +1818872 +896862 +1170412 +1785721 +1135291 +1785675 +1822094 +2518189 +2546103 +1034588 +2818317 +1249375 +1593303 +563508 +740232 +1135259 +1206452 +2716741 +1818929 +1818933 +440072 +1099326 +212104 +1818900 +2013682 +1785706 +1939519 +361961 +1643202 +2428027 +439984 +896859 +2518194 +1265877 +425680 +1022627 +1157070 +2506461 +1785711 +2546099 +1107414 +1643237 +1157132 +1822124 +1206497 +496182 +425663 +1249373 +246994 +440012 +440077 +1818920 +2847088 +1135281 +1842243 +2818358 +2428029 +2219212 +1907269 +2619745 +2619750 +341978 +2013655 +188368 +382634 +2716746 +1481004 +2546073 +439990 +2219193 +1818932 +2013666 +1842265 +484499 +1896347 +948441 +1152841 +2744008 +439985 +1481006 +1206481 +341980 +1206511 +425640 +473831 +1785699 +1785695 +896850 +1907279 +2516131 +1052121 +503444 +1818909 +1195995 +1822132 +1076377 +1442806 +1939511 +341971 +2705966 +1206504 +1842234 +2415457 +1593305 +2097798 +2105504 +1206463 +1140730 +2627221 +2306979 +370023 +1157107 +2818335 +1052135 +1157102 +1818938 +1206550 +2818386 +2105507 +2097796 +1684981 +1249388 +246969 +382682 +1206560 +820853 +1170418 +284020 +1785676 +188378 +1088487 +1249363 +2407163 +1785723 +1643233 +2716755 +2705967 +440027 +2306990 +2744010 +646740 +1907250 +2025105 +2219201 +1896341 +1362461 +1022615 +2546080 +1939510 +1643199 +1135311 +2831958 +2013227 +2627216 +71826 +1846973 +1135297 +1076379 +2271884 +473835 +2675198 +1362459 +2306977 +2818302 +2271893 +2428032 +284010 +1135275 +341973 +473830 +1052131 +2066672 +473811 +2219202 +284022 +1176795 +71835 +1206461 +1157068 +1680312 +1842235 +1206469 +1265894 +382632 +1643227 +2546102 +188339 +2097780 +1249400 +1157116 +1140738 +1022622 +382664 +382679 +2344091 +1822111 +1022630 +71827 +440003 +473808 +496081 +2013676 +484497 +2219213 +1384745 +496055 +1195988 +2046967 +1822102 +2818364 +1107402 +1907273 +1643212 +2013671 +2619789 +1249365 +1157133 +1907260 +2428012 +2818324 +496159 +2013668 +425681 +1716673 +2219184 +2306983 +1170385 +2703772 +382650 +439996 +740229 +1643188 +1135260 +473854 +440029 +440042 +382642 +2716738 +1022635 +1643204 +2310264 +1135285 +2818356 +1721623 +1157082 +2046966 +496093 +1206531 +496148 +1170390 +1249405 +1206518 +1140741 +745022 +1982650 +2219228 +896942 +2703773 +188419 +1391382 +896940 +1206567 +2407219 +2028999 +2675219 +2619795 +1967203 +1986716 +2686786 +820893 +2716763 +563554 +188394 +2407197 +745860 +1992768 +1510816 +1746731 +1643273 +2705968 +701278 +2748933 +1481024 +1746722 +188425 +1842270 +1206565 +896941 +2219265 +2546124 +1368927 +948447 +657913 +1373526 +256215 +646793 +2546117 +896878 +1340070 +1523449 +382686 +1481030 +188413 +2546119 +2686787 +2703778 +2353806 +2516146 +1024224 +1896365 +1384760 +1384764 +1593312 +563514 +1362518 +646763 +1373538 +107000 +563540 +981984 +981982 +1992785 +2737761 +2019669 +106987 +25424 +1982648 +256214 +1593335 +1842271 +2019664 +676115 +106973 +1391381 +1931570 +341987 +1368931 +1284693 +1196015 +107001 +563511 +981985 +563523 +745026 +727640 +1362483 +563576 +1196025 +1135320 +2306991 +1045105 +563545 +1896389 +1107422 +2415460 +1643256 +1099335 +2619822 +2219261 +2027638 +2306994 +1249426 +2407186 +1022654 +2716796 +563564 +896906 +2619820 +1233724 +2716792 +1746725 +563595 +1967177 +1442818 +1931572 +2415465 +563593 +2716780 +2344092 +931876 +256216 +440095 +701274 +657911 +1362486 +563571 +1967200 +676121 +1481014 +718425 +2619845 +1643271 +820898 +2716774 +1060891 +763770 +1481031 +563598 +2027636 +820904 +1362473 +1992783 +2619813 +563574 +2344101 +740235 +563525 +2066682 +2097806 +496192 +1368952 +2019665 +646767 +1982647 +727631 +456375 +1362472 +2726100 +740233 +1099333 +25419 +2737760 +188426 +2675206 +701269 +2619833 +2306996 +25417 +188404 +2719890 +2219238 +1340073 +1896373 +2675210 +1299083 +1907292 +1643259 +1967189 +563589 +2619871 +896949 +2344097 +896923 +2019658 +1593324 +1593306 +382697 +2716800 +676127 +646838 +2219349 +2019670 +646992 +2272006 +1643290 +2818567 +646908 +2344118 +2271960 +2818442 +2863353 +1995634 +2703783 +646971 +2863378 +188495 +2420450 +1314855 +676130 +2353820 +107006 +646842 +2863359 +2619971 +1995594 +2619961 +646934 +1265918 +2818468 +646817 +1481111 +701285 +2066703 +2407293 +1746743 +2818683 +2415500 +897021 +2818577 +2863361 +1481080 +646986 +745879 +1481088 +1442851 +2272031 +2818422 +188478 +657931 +1995625 +1756925 +2344113 +2696258 +2818489 +2047008 +1818951 +1643315 +1746737 +1643329 +2705993 +2273420 +1510824 +676151 +745880 +676192 +676175 +2818731 +2716815 +2818473 +1643400 +2407241 +2619895 +2818465 +646843 +2818706 +745878 +2818423 +2619938 +2619924 +1481038 +2066705 +2272025 +897061 +1643341 +2619892 +2219311 +646931 +2047019 +2026070 +1265931 +1045112 +1995601 +646813 +1314841 +2219317 +1233731 +1346344 +676174 +1949563 +676171 +1650764 +1593346 +771419 +646857 +2675235 +701289 +897093 +897084 +646922 +1340097 +1022685 +897102 +2407244 +2863397 +188433 +2627274 +646823 +1939547 +646824 +1022705 +897040 +2627268 +188496 +188502 +2219308 +1022666 +2818693 +1510823 +1314863 +2675234 +2271983 +2675233 +2818550 +1314865 +2705990 +188437 +2407271 +1967217 +2619950 +1654951 +2818617 +323757 +2365618 +1284697 +2619901 +2365625 +2619884 +2272014 +2716816 +2675237 +1284723 +2619914 +2047010 +646947 +563619 +1373540 +676195 +1481074 +646995 +646982 +2271992 +1306648 +2703817 +1022673 +2369204 +563607 +646888 +1995638 +1481062 +188479 +1939536 +1481067 +1249438 +1654935 +1373542 +1949569 +1643289 +897028 +676173 +2619973 +1643288 +1442855 +1721632 +1481041 +1523452 +1045141 +1716677 +2696255 +897006 +646912 +646801 +1107430 +2619925 +646919 +1654907 +2420451 +1481096 +1299128 +1995608 +1099337 +2863391 +2619949 +1442842 +1391389 +2863370 +2627267 +948452 +896963 +2066708 +820931 +676140 +2046998 +745876 +2863392 +1284699 +2619904 +2407275 +2619946 +896985 +2407243 +2818670 +897054 +1654909 +1022689 +1022687 +2407270 +2066711 +2740859 +1299125 +1022703 +896983 +1442845 +1481051 +2271974 +2726110 +2627273 +2271984 +2353818 +2407230 +2619956 +2619893 +2818654 +718429 +2818724 +1716676 +2703787 +734728 +2415478 +646935 +2627276 +1643376 +657954 +2818507 +745882 +2818717 +646905 +2703784 +2726159 +2619954 +676164 +1362557 +1643337 +284043 +1982659 +1368966 +2726160 +1481089 +563675 +563608 +676179 +2420452 +676149 +1995596 +394262 +1842274 +1481052 +1756924 +2818508 +1170445 +2272029 +657955 +2219335 +1992816 +1643334 +2619888 +2863393 +1306647 +1654933 +2219303 +2627290 +2818455 +1982671 +2703802 +2271979 +563669 +1265926 +2219288 +646834 +2344127 +71856 +1982663 +2307000 +1995616 +2726112 +1314848 +2516157 +563655 +1650757 +1045142 +646844 +676134 +2619922 +2219331 +1368984 +1314832 +1643342 +1654934 +1643352 +2818466 +256217 +2619959 +393824 +1045130 +734720 +563649 +2748934 +646910 +1756934 +1716680 +1284722 +1481103 +1992800 +2675246 +188435 +2619920 +1362543 +2818415 +2706002 +563680 +1746747 +1949587 +1481126 +1945520 +1643406 +897112 +2272080 +1992853 +820962 +1593390 +2716865 +701292 +647108 +701311 +1593373 +1650776 +1955428 +1481138 +2407402 +2344134 +2620030 +2690810 +2726166 +2546161 +1967253 +1967252 +1995656 +456393 +948475 +2516166 +2407414 +2546208 +897225 +2693305 +2047022 +897193 +2737780 +71883 +2546219 +212109 +188568 +1022737 +1284787 +1593386 +1362604 +1233742 +563698 +2219495 +1481187 +897198 +563774 +1481149 +2675278 +71872 +188555 +1157170 +1369029 +2716847 +1022744 +2353827 +1523472 +2066737 +2219356 +1593374 +2026081 +1362631 +1955433 +1510838 +2818761 +2719896 +2353833 +2407331 +1442866 +1907298 +1593370 +1314899 +982004 +2737789 +2703840 +1369010 +2219490 +2277159 +1949603 +1481162 +727655 +820959 +2627304 +2716857 +2277160 +1896423 +25430 +1119609 +1284772 +2407401 +2353836 +1369026 +1939552 +647153 +484506 +2219386 +2407348 +647049 +2365637 +1284740 +2097857 +897164 +1314898 +2740877 +1045189 +1284742 +1945502 +2365662 +188514 +496221 +1259209 +2407405 +676249 +676225 +1045175 +676229 +2620027 +2097851 +2744020 +2726179 +1045186 +2719899 +1643464 +1643408 +1362572 +1650779 +1654953 +2365633 +1650771 +657967 +2675296 +1949606 +2546212 +563744 +226658 +107014 +897209 +2546154 +2047035 +2703832 +2219433 +1022763 +647164 +701296 +2365641 +2703862 +2219448 +2706005 +1949610 +1643473 +981998 +2733496 +1259210 +2407375 +1746754 +1907304 +2737796 +1022731 +323770 +1593401 +2047023 +1249449 +2013705 +1362610 +897202 +1907303 +2716866 +2272045 +323788 +1986727 +1982715 +2047039 +188570 +2726197 +745028 +2506480 +1047343 +1945491 +1314909 +647036 +188556 +647006 +188572 +897200 +188581 +2693297 +188547 +1949601 +2066722 +2703858 +1265946 +1022759 +1982704 +2546232 +496219 +1593403 +563692 +1249459 +563708 +740239 +2546156 +2272054 +2219373 +1442863 +1523466 +563718 +2066746 +2716861 +2675276 +1299135 +1442871 +2415519 +2219353 +1967254 +2097858 +188515 +897185 +676232 +1265944 +1314917 +2344151 +563758 +2620008 +701302 +1967232 +1945517 +897241 +188596 +563784 +897139 +771427 +2716825 +2740880 +1967248 +1249455 +897183 +188567 +1593409 +563715 +2716855 +1593383 +1995657 +647169 +382707 +2716856 +473874 +1045169 +734746 +948474 +1442897 +647135 +1746752 +2703859 +658007 +1362589 +820934 +1373561 +188513 +1045181 +2285185 +1442880 +1759406 +1129760 +2219354 +2272077 +1650774 +657971 +1045166 +1340116 +981997 +1907300 +2219419 +1746778 +647147 +647035 +323785 +734744 +2219473 +948469 +1314911 +2365631 +1481198 +1265948 +1362625 +2716837 +1523467 +2047037 +1654962 +1952631 +2219472 +2047031 +771423 +2620028 +1982694 +188589 +2627296 +931891 +2546224 +1442870 +2620048 +2716844 +1022720 +1022738 +676235 +2716850 +2716895 +386639 +897169 +647196 +2620046 +1022740 +1746763 +1643470 +2013230 +1024225 +1842283 +1481182 +1593410 +303509 +1842280 +2407425 +2066731 +1992852 +1481199 +563729 +1707972 +2407364 +1045151 +2066756 +2740879 +1373567 +718441 +323767 +496217 +2019671 +2716891 +2066730 +2407390 +647069 +676261 +1995642 +2047041 +1939553 +1362638 +1284824 +1759409 +1233750 +2690842 +2627310 +2219593 +563845 +1523484 +647223 +323792 +647229 +701321 +1299208 +2818768 +188652 +897311 +1643486 +1967303 +2365683 +2407471 +2620086 +2675318 +1759416 +1284807 +1510856 +1523480 +897327 +1233757 +2690831 +284061 +2097860 +931907 +2415529 +2719907 +2219560 +1982751 +1593435 +1481223 +2097866 +2407466 +2620095 +1107439 +107036 +2716932 +2716970 +2737809 +2047097 +1945522 +2675303 +1896437 +1759427 +734752 +2696273 +71917 +2219548 +1967313 +563838 +2675321 +2620089 +1045206 +1716705 +676291 +1992863 +107044 +107039 +1643496 +1510849 +647216 +2219576 +188630 +188624 +1481222 +1650803 +324453 +2546296 +1299195 +563840 +948477 +1340166 +1233758 +188660 +2716928 +2686810 +563862 +2733503 +1157172 +2047095 +2620133 +647273 +2407520 +25442 +1643487 +2546328 +2675305 +2272097 +2818784 +1654967 +2407521 +2627312 +1643485 +1982744 +1654965 +2726269 +1654973 +2029002 +1481214 +1486820 +1249469 +71901 +563823 +1314933 +897340 +1442910 +2219511 +188642 +2620084 +2818772 +1481216 +647259 +1384781 +1442918 +1362650 +1842302 +1759418 +1982779 +1299206 +2272113 +2219522 +1099342 +2686802 +2219502 +2726253 +2219565 +1716703 +1362642 +701316 +563824 +897272 +71902 +1955445 +2716918 +1842292 +2407501 +2686800 +1759426 +1716706 +2726268 +1992869 +1593422 +2219498 +1045196 +563807 +2758580 +563795 +1481218 +1022779 +1842298 +1369040 +1952633 +2546318 +563794 +1233751 +2365701 +1986728 +2620171 +2726214 +2620096 +931913 +2675320 +2019678 +1045204 +1265975 +2546300 +2726258 +2620139 +2097868 +2546303 +2620062 +2097863 +647213 +2047089 +563828 +1523483 +2219568 +2105528 +2740885 +2365700 +2546325 +897352 +1759413 +1045193 +2219575 +1442934 +1233752 +897265 +1654968 +1299205 +1654979 +1340161 +1481240 +1967307 +2620177 +1346356 +2546327 +1654987 +647232 +563804 +647201 +2219622 +701339 +2686828 +1362660 +563900 +2344183 +1481266 +1140744 +1992878 +909289 +2019680 +1442941 +256231 +1047345 +2344181 +107065 +701341 +1896475 +2415531 +1970265 +1992874 +821026 +2002675 +1650809 +1384786 +897401 +2344179 +2620224 +71931 +2071503 +897381 +1022795 +2344175 +1340206 +1510876 +456400 +1442944 +563910 +2219670 +1952641 +1643512 +701334 +1982801 +676301 +2506490 +658022 +2675341 +1442981 +188676 +1896459 +1818956 +563913 +1593461 +931921 +2407536 +821020 +25455 +2716976 +341991 +931917 +2546352 +1481283 +563874 +2726275 +2219660 +2407541 +1481282 +1952640 +2219682 +2407535 +1314941 +1967318 +2675344 +2546339 +897368 +1967329 +1442951 +2733506 +1896455 +2272128 +107059 +897376 +2407544 +701330 +1896474 +1809865 +563885 +2620201 +287464 +188677 +1034632 +897371 +1967319 +821007 +1086020 +188684 +820997 +2620239 +200900 +2047118 +25445 +2047106 +370046 +1746808 +676300 +563882 +370048 +2219628 +2546334 +1982789 +2365716 +2686825 +897373 +2365730 +1045221 +356613 +982058 +1233765 +1284839 +821018 +2365722 +2546342 +2620210 +1945533 +563876 +1593458 +1442957 +386649 +1746800 +2047117 +2097873 +1746789 +1650814 +2365713 +2546353 +701331 +563901 +1896467 +658025 +2219639 +1809864 +2097921 +2219737 +563921 +2407558 +2620309 +821073 +1362669 +1299233 +1362702 +256241 +188707 +2219759 +303522 +821054 +1284865 +1443039 +2716983 +701346 +718453 +1593477 +2047157 +1931596 +1510883 +2818801 +982094 +1746821 +658032 +456420 +1700098 +1593493 +2007311 +188718 +456419 +821119 +1340249 +2620248 +188712 +563946 +2420460 +1284851 +107110 +2219725 +456417 +563980 +1443041 +647317 +107090 +1299230 +107106 +1593484 +1340240 +226688 +2758587 +1896528 +1842321 +1746849 +1299234 +1931616 +1967341 +1481307 +1665907 +1340242 +25461 +1746874 +1362686 +658039 +2690855 +1346362 +1306670 +745542 +2344199 +496230 +563916 +647341 +718454 +1746866 +1842322 +1406790 +1034652 +1196052 +1716730 +2407578 +2690851 +1664513 +821133 +1680332 +1593543 +563991 +2675386 +2703897 +188719 +188710 +1716725 +71936 +456404 +1746839 +2620294 +897419 +2219789 +563995 +2344195 +1284881 +1034640 +2620314 +2277166 +1299215 +256240 +763789 +2686835 +2071507 +1284873 +1284890 +2219783 +1643524 +2097893 +2097882 +2620321 +1299218 +2097926 +821055 +1746831 +931946 +2219778 +1982815 +1299219 +2407624 +1593497 +2546375 +2007310 +2675387 +2002678 +1896495 +1045234 +897442 +2027652 +1299236 +2027650 +2219755 +1340256 +1306672 +1896544 +226680 +256239 +2620325 +2716993 +821101 +2690856 +2219785 +2047159 +1907317 +1443055 +188731 +821102 +2620250 +1650819 +107107 +2620330 +1443028 +1931612 +1443026 +897438 +71944 +1896535 +931949 +563917 +1593556 +25465 +1992883 +2620310 +2219685 +456409 +1022811 +188697 +107133 +2029004 +563958 +1643522 +2686833 +1896542 +1034645 +1284882 +2407573 +1931606 +563968 +456402 +658040 +2620263 +1842314 +1593536 +1945539 +563942 +701351 +1992881 +563919 +1284900 +727673 +1107446 +897415 +2407615 +2219761 +2546373 +763790 +2716996 +1967330 +771440 +2620285 +1842320 +931952 +1346361 +1593526 +1970267 +2097917 +2272130 +1593515 +1593517 +563954 +1593495 +1340228 +1643520 +2506502 +1680334 +1593509 +323800 +821104 +25468 +821105 +107088 +2675394 +1196053 +2047185 +71938 +1284872 +2407551 +382724 +1931602 +2066789 +188729 +821091 +2407583 +2546369 +2344191 +2675368 +2620308 +1481311 +2219804 +2733508 +734754 +647330 +948491 +563924 +2620337 +727679 +1107447 +2716989 +107085 +1486826 +1443002 +1406791 +25467 +1593567 +647309 +2737813 +821121 +200906 +563993 +771439 +1340257 +2365761 +2354854 +200923 +1340291 +1340280 +2097956 +2546422 +2019687 +2546395 +564007 +2097936 +456434 +931962 +1510911 +821138 +2097937 +1099402 +2675407 +1842351 +1340300 +1945564 +2546449 +2219849 +2219828 +1967356 +2546430 +1896569 +701365 +2831969 +2620352 +2831970 +2620355 +1945559 +1362716 +2518212 +2407650 +821147 +2518205 +2832003 +1945565 +107151 +2219817 +200911 +1099400 +1265977 +2219818 +2047190 +2219844 +821156 +2675409 +2620358 +107150 +1716739 +1716758 +2620346 +1945569 +1510917 +2546385 +107163 +2703903 +701369 +107161 +2097939 +1486832 +2620363 +2219837 +456437 +2546446 +2546397 +2407633 +2219853 +821153 +25490 +2407648 +2354850 +1896573 +2675401 +1945560 +284077 +1196063 +1099405 +2407640 +1945545 +2818804 +2831991 +2546433 +2831966 +2219839 +1406800 +2047197 +107156 +2690866 +1233790 +2365775 +2407755 +2407676 +2675421 +2717079 +2675469 +897468 +2047245 +2675523 +2047228 +2407718 +1593624 +2726321 +1967364 +701377 +1593633 +2740891 +2407715 +647356 +2407702 +1746898 +2219932 +2620504 +1481329 +2703908 +2407708 +1593620 +107171 +2518234 +821183 +2407728 +2407754 +564038 +1196071 +2693336 +1233783 +2620509 +1992893 +2407731 +1099408 +2219937 +1982832 +2717052 +2686877 +564059 +2726357 +2818810 +2219968 +2690870 +1314946 +1746886 +2717030 +2097971 +897462 +1593639 +2047255 +1643559 +1746896 +1284923 +658050 +2703913 +2365784 +2717039 +2277176 +2620511 +2706014 +2675419 +2097975 +982100 +1045238 +2272157 +1593598 +658057 +1443072 +2693341 +1131265 +1967368 +2047250 +821178 +2675427 +2620516 +1992907 +763800 +2546517 +2717018 +2726317 +2407680 +1759456 +1299247 +2420461 +2219907 +2407765 +2407739 +2407722 +2407760 +2407738 +2097964 +2365774 +1842368 +1650836 +1643571 +564044 +1643557 +2272152 +2407763 +1650841 +1233793 +1896583 +1022828 +1759454 +2717070 +2620515 +2717051 +2686841 +2675460 +1233781 +1706657 +2047218 +2693337 +2675532 +564057 +1129774 +2546479 +2726307 +1643564 +564039 +1716766 +1045251 +1643543 +2219931 +2686869 +2726355 +2675519 +1284921 +564056 +1992890 +1510923 +2620446 +1643549 +2726297 +2818816 +676313 +2219946 +2546519 +897476 +1643566 +2675462 +2686889 +2219873 +2675515 +1045247 +2703933 +1967363 +2272149 +1643570 +1119650 +1643535 +2219901 +2686886 +2407732 +2675458 +2693340 +948502 +2717024 +2047200 +2407677 +71953 +2686848 +2620473 +2686845 +2407736 +1481327 +2219945 +564032 +2546505 +897469 +1967371 +2675465 +2546483 +948501 +107170 +484524 +2047203 +1284924 +2546493 +2693328 +2047249 +2737823 +2219856 +2690862 +2620434 +1443076 +2717015 +897491 +2758599 +2726346 +2719918 +1284943 +2675516 +1284948 +821177 +1284957 +188745 +1443071 +2686874 +2686843 +1759440 +1896584 +1284935 +1284965 +1443066 +2703925 +1716767 +1992908 +1896590 +2546520 +2693344 +2675492 +2675493 +2277174 +1680343 +2726333 +2272144 +2620489 +564085 +2272223 +2220060 +897533 +2726484 +1022869 +1129785 +676396 +2726504 +1992924 +2272246 +2726432 +107178 +1949668 +2272206 +323821 +2726507 +1759485 +1373605 +2675703 +658071 +1992931 +1022909 +2219983 +1314991 +2675841 +1995740 +2272166 +1995838 +2726449 +1314974 +2717101 +1315070 +1299311 +2272409 +2675920 +2675675 +2847099 +2675629 +2272217 +2219992 +188758 +2737824 +1299325 +658068 +2365792 +1952661 +1299323 +2675863 +1315068 +2047268 +2620527 +1284999 +2726464 +647433 +1643583 +1391448 +2675600 +1992939 +2719928 +2272329 +2220068 +1759468 +2272263 +2717097 +1995811 +2675891 +1022867 +564071 +676342 +676404 +1706668 +647371 +1299330 +1314954 +2726514 +2220064 +1045270 +2758608 +2220014 +2726363 +1315005 +2220048 +2706021 +2740915 +2675979 +2875040 +897529 +1955497 +2219974 +1391446 +1945572 +2675950 +647366 +2272348 +2219996 +1481346 +1131318 +1949672 +2675855 +1315077 +2407786 +1995810 +2420475 +658064 +2620524 +2272338 +647395 +2407815 +2675575 +2874969 +2675903 +1131283 +2272274 +2353851 +1955506 +1759526 +1992935 +1992970 +2620539 +1759561 +2740921 +647369 +2272336 +2675838 +1391445 +897566 +1314952 +1314962 +1955463 +647382 +2675977 +2675740 +2675734 +1992927 +2220019 +2726425 +1131347 +323830 +821211 +2506532 +2220094 +1315000 +2675598 +2407787 +2220086 +2726399 +2675751 +2696299 +1992929 +676343 +771453 +897580 +2758613 +1314976 +188755 +188756 +897506 +1967374 +2675848 +2047278 +2726434 +1643596 +2675768 +1995762 +1995717 +2047276 +1315087 +1022907 +2726463 +1949653 +2693355 +1129777 +188759 +2675868 +2690905 +1314992 +323823 +1299257 +2220047 +2690893 +1593649 +2875048 +2219995 +2740922 +1299288 +897535 +1315059 +2272170 +2047281 +2047271 +1995685 +2726418 +2693347 +2693357 +1045257 +2717096 +2675639 +2693359 +897510 +897536 +1299282 +1995758 +1362720 +1315106 +1373615 +1995755 +2272261 +2675796 +658082 +1299258 +1022927 +1022870 +2706023 +1759490 +2675943 +2740934 +676399 +1481355 +676382 +2690890 +2272342 +1315025 +2407800 +1314947 +647438 +1982837 +2220012 +2272251 +2740932 +1655005 +1086025 +2726506 +897520 +1643586 +1391442 +2726373 +2272219 +2620538 +1284975 +1284982 +1896595 +2675819 +2726415 +1315003 +2220063 +1995824 +2675833 +2272213 +897501 +2818831 +1131287 +2272295 +2353857 +1131300 +1759520 +1995791 +2726491 +2407819 +2675831 +2675555 +564068 +2726431 +2675786 +1759506 +2272292 +1047359 +1995815 +2272364 +676347 +2675929 +1992923 +2726374 +647437 +2675762 +2696284 +1759527 +647446 +2272180 +676391 +2675864 +2726440 +2344265 +188783 +647426 +2407788 +2818842 +2675752 +2675954 +2875034 +1315066 +2726372 +1992920 +2726444 +2675733 +1992918 +1643616 +1995795 +2220103 +2675631 +1945585 +1593650 +1759539 +2344264 +2693365 +897507 +1949643 +1481344 +1949635 +2272372 +2675559 +2875046 +2407827 +1759537 +2726385 +647428 +2675927 +2675975 +1992954 +2675688 +2675583 +2220032 +2675924 +2675685 +647479 +2272220 +2344243 +2344250 +564099 +1233796 +1992959 +676426 +2676141 +676436 +394327 +2407835 +1022940 +1481387 +1119668 +647524 +1285044 +647531 +564127 +1945596 +1266014 +394298 +897614 +1759694 +503482 +2310304 +982139 +2676166 +2027668 +1939571 +982135 +1931650 +897660 +1982844 +1759637 +1759564 +1650851 +1443121 +1593667 +676427 +1045281 +2676113 +647537 +2620547 +2675987 +1362729 +1939569 +2620564 +982125 +1759636 +1931670 +658105 +1593710 +2047341 +647511 +2220244 +564164 +188814 +2220215 +1949693 +1759574 +2220199 +1259241 +1643685 +1481380 +2220260 +1285053 +1315117 +2676042 +1759675 +1931683 +1022985 +1481400 +2717121 +2676151 +2272479 +2220352 +1285062 +2620559 +1373632 +1593708 +2272420 +1746915 +1759590 +1443109 +1643719 +1643676 +1593707 +394281 +1992987 +2407859 +394291 +2676125 +2726575 +394292 +2675990 +2675986 +897591 +1655012 +1759698 +2676198 +1481427 +564138 +676419 +2676186 +2220266 +1306709 +1931657 +350260 +1047364 +394346 +2066858 +71960 +1896598 +701380 +2047311 +2686918 +2675989 +1299356 +1285031 +1931690 +1759630 +2676203 +2272456 +897633 +1285047 +1945604 +394280 +658095 +564115 +897598 +1259233 +1266018 +2220350 +1993012 +2220128 +394340 +1952671 +2726525 +821222 +897589 +1949688 +1022958 +1315121 +1265991 +425688 +1700112 +2047346 +2420499 +2272496 +2676052 +897639 +2676117 +1759586 +2277187 +2407833 +188805 +647569 +2407831 +647575 +701379 +1643684 +2726520 +821217 +71962 +2620545 +2676047 +394329 +2353868 +2220206 +394361 +1047372 +1285023 +1939566 +1643648 +1285057 +1931621 +71965 +564150 +2047309 +1362730 +2220168 +821220 +503471 +1593699 +982124 +2272447 +1706685 +394378 +2726547 +1285014 +188822 +2726521 +188818 +2272455 +2047331 +2272422 +2620551 +1759681 +2676109 +2097982 +1410282 +2676169 +1131366 +1995845 +2676173 +897622 +1373628 +2676075 +676417 +2407849 +1391462 +1643726 +1022944 +1593692 +107185 +394326 +1759678 +1373641 +658109 +1481421 +676429 +2220198 +2344286 +1643721 +2220249 +2220285 +1266000 +1299340 +1131371 +647522 +1443145 +2676048 +1759686 +2420496 +2272462 +2693379 +2726529 +2272457 +1643652 +1285021 +324463 +1131364 +2220620 +324477 +1481484 +2220631 +71975 +2717147 +2676543 +2420602 +2344304 +2676316 +2506549 +2676346 +1746924 +2220371 +2272661 +2344295 +1259253 +2066884 +2726705 +1346369 +2272615 +2420613 +2420577 +2676336 +2740981 +897748 +2272578 +1949755 +2420564 +2220421 +1299398 +2676462 +2272594 +897767 +2407889 +2726609 +1285078 +2047425 +2415579 +1593720 +2047426 +2676508 +1129788 +1945624 +1995919 +2407953 +2272543 +897675 +2676564 +2220424 +1299368 +1945643 +1045304 +2407958 +1481437 +2220440 +382731 +1259251 +2420592 +2420570 +2676264 +2676431 +1995903 +2220604 +1643762 +897724 +1945633 +2676419 +1949709 +2420578 +1993056 +1955543 +2676473 +2676415 +1949756 +1299384 +1995887 +2832017 +2676586 +897754 +2407918 +2676243 +2676582 +2047402 +2220467 +2420512 +821264 +2676449 +2272525 +2676597 +1949752 +564199 +1481477 +2676648 +2717127 +1315154 +1481446 +2047442 +2220473 +2220530 +1299393 +1299416 +2726716 +2676378 +2407943 +1443153 +2220501 +2407972 +2278823 +2407912 +2047449 +1995885 +2220422 +1481476 +2344328 +1285092 +2832015 +2344352 +1995877 +2220404 +2676332 +1995908 +188850 +2344344 +821246 +2407900 +2272570 +2726604 +821260 +2272643 +2726686 +1285093 +2066903 +2047451 +2676636 +647629 +2220379 +2506546 +2272644 +2740973 +2220573 +2066895 +2272584 +188844 +2220571 +2726717 +2220373 +1259263 +897687 +2676467 +2726699 +2676298 +2220479 +1995874 +2676408 +2353908 +2740966 +1945619 +2407892 +2676354 +2420580 +564220 +1949701 +1955536 +2676376 +1655021 +2420549 +2676295 +2676492 +1047391 +1299410 +2344331 +2726642 +2344318 +1993084 +2676314 +2047398 +1995942 +1949708 +2272653 +2726656 +2676240 +1949751 +107194 +1481434 +2726598 +2676483 +2420514 +2420551 +1047385 +897708 +1306712 +2272540 +2047427 +2676405 +2676466 +2676276 +2272528 +2717142 +897758 +2420511 +2344316 +2344368 +1993062 +1993050 +2676629 +2676519 +1410285 +2353888 +1315147 +564232 +2407965 +2220448 +2726658 +2676575 +1949700 +2717131 +2220402 +647603 +2066937 +1995894 +2693394 +2676541 +2726661 +676439 +897679 +2726693 +1643738 +2726681 +2676551 +2272646 +2676439 +2066943 +2420531 +821248 +2220445 +2726607 +897726 +1949712 +2047463 +2420605 +2047412 +2407968 +2407925 +2676317 +2726667 +2676322 +1949740 +2220364 +2272603 +2676495 +2717140 +1995879 +2105540 +647663 +1285079 +2676640 +2676626 +1949706 +2407866 +647593 +1315139 +1443178 +2220431 +2277206 +1023002 +2726654 +2676248 +2676565 +1945648 +1443175 +1443160 +1259247 +2220410 +2676255 +2277197 +2220480 +1315144 +564222 +2407937 +658122 +2420521 +2740978 +2420616 +647645 +2726718 +2272589 +2415573 +1993086 +1945647 +1047389 +2272531 +1373667 +2676578 +2407876 +647670 +676460 +1306719 +1315138 +897750 +2407897 +2220376 +2066928 +2407868 +771458 +1285171 +2408031 +1510957 +1157175 +370063 +2220680 +1967412 +1759715 +1510925 +821282 +701407 +1945664 +1650867 +2019690 +718469 +1481528 +658143 +1593754 +647730 +1700120 +1486840 +107212 +25509 +821276 +1842393 +658135 +1099414 +1023027 +2737835 +2220642 +2272695 +2408007 +107208 +2696313 +1196092 +2408009 +1680350 +1716781 +1340324 +701387 +1842407 +370062 +2408032 +1967418 +2027672 +2407975 +323854 +2047508 +1481502 +2546527 +2344391 +897847 +1023026 +2729575 +740247 +1233808 +1746928 +1340336 +1523517 +1099421 +2737832 +647708 +821271 +1481507 +1206589 +2620624 +821304 +2726727 +1510950 +647707 +676467 +1196072 +701398 +1510961 +200930 +948507 +2620605 +1970280 +564299 +897772 +1023028 +2047490 +897774 +701421 +2220663 +1023021 +2344381 +1982855 +2717164 +647676 +2220636 +1510937 +1680344 +1650879 +2620706 +1523507 +2717172 +2516187 +647684 +1680348 +2516189 +2627333 +564254 +2307052 +2047532 +2407978 +2013716 +303548 +701425 +2408002 +701385 +1842406 +701406 +25514 +2726721 +188913 +734769 +718476 +1846999 +1119684 +2676680 +2354860 +2047511 +897809 +647740 +1510929 +564289 +1285142 +821297 +701405 +647742 +1993094 +188912 +2620632 +1510953 +2620650 +107209 +647732 +2703971 +1023042 +658153 +71979 +1285149 +2047487 +897867 +1443207 +1643790 +2365839 +2220683 +718481 +2506563 +1443197 +2220678 +1206593 +897800 +328707 +1023017 +2220699 +897790 +821272 +2703958 +2408029 +718471 +1196073 +2620659 +2098005 +2717188 +734780 +2676678 +188905 +1233800 +1481504 +676466 +1362757 +1842398 +1782697 +771465 +1756967 +2703976 +1023044 +2220650 +701396 +2729469 +2277213 +718486 +1967414 +2676677 +1842390 +1285159 +931981 +1140750 +2676675 +2733514 +2029011 +647743 +1896619 +2066956 +2002688 +1982854 +701440 +1746940 +1643797 +821273 +1650869 +2620690 +2676668 +2620696 +2220646 +1967400 +564269 +2220654 +382739 +701404 +1643771 +2620708 +1967391 +1967432 +647692 +1982862 +564307 +2703968 +647691 +676472 +897833 +1896617 +226693 +1196074 +1967443 +1099418 +1285143 +2676685 +71976 +564311 +2620608 +897857 +1967446 +647716 +1993096 +1023043 +1443209 +2220700 +1650877 +1643793 +2365836 +1406808 +564364 +1340372 +1362799 +1643819 +1362803 +897908 +2676689 +456453 +1809876 +2220785 +1818959 +2717210 +727728 +1196129 +1443250 +821328 +1746957 +1481534 +2408113 +2408060 +2098060 +658172 +1945677 +1443254 +1443227 +2620773 +1099423 +2415594 +821354 +734785 +2546603 +1486847 +1362770 +564389 +1746966 +2365857 +1967502 +564452 +564424 +2220838 +1993097 +2546579 +188942 +2354870 +821409 +647754 +2098068 +2703990 +1931707 +1650880 +1285179 +2546720 +2546639 +1340395 +1510982 +2220745 +2220852 +1233813 +2620738 +564445 +2365860 +2365920 +2027677 +2620750 +1362796 +2546697 +2002689 +1443240 +2726732 +2620797 +2546630 +564334 +821359 +2717203 +658158 +2098074 +745032 +821405 +456469 +107233 +1285206 +2744039 +1945693 +1931699 +1716807 +1443228 +1680355 +906204 +1373681 +2408051 +2071528 +701449 +1362781 +931998 +647760 +1945692 +932004 +1206608 +1945671 +2365898 +1982906 +1285176 +2686931 +303553 +1945694 +72007 +1362778 +2546608 +763814 +564428 +1340389 +763818 +1931712 +1481539 +1931708 +356638 +821370 +2546723 +821384 +2098062 +1967457 +1842454 +2726733 +1982902 +1285198 +2717217 +1982894 +564349 +2220713 +897901 +1285174 +2272707 +2726730 +2676694 +982163 +1196121 +2717194 +2408088 +2047563 +2344409 +564443 +1379065 +456460 +2703995 +2047549 +1285237 +2047548 +1967518 +1233834 +821404 +1967498 +2546571 +2737844 +2546648 +2408137 +2620798 +2546623 +1993102 +1716814 +1967500 +2443263 +564386 +1443259 +1967511 +2220758 +2676695 +2546638 +1443274 +1443283 +1233824 +2220754 +2369229 +1340370 +2408136 +2408063 +2408118 +1099431 +2098058 +564439 +2220767 +1746955 +2273442 +1593791 +771475 +647753 +727722 +1157177 +2220726 +1842450 +2620768 +2408119 +2220741 +2220779 +1945672 +2408062 +2220729 +2620776 +564407 +370081 +2344400 +564367 +370078 +564379 +821329 +2546621 +2310308 +1842467 +2408134 +1481533 +821340 +2546565 +107245 +564391 +2220709 +1593776 +2071518 +2220810 +2408075 +897872 +1034703 +2220732 +1982911 +1196128 +226702 +564371 +1443224 +2220781 +2717221 +676479 +1340397 +2365889 +2307070 +2220753 +2703984 +2546673 +2676707 +1967458 +2344404 +2408042 +1045336 +1746964 +2220724 +2365891 +2025125 +2220909 +647842 +188969 +2875105 +1369086 +1523531 +188977 +188988 +1955551 +1299497 +1716832 +1362823 +1045355 +1949826 +1299445 +2277231 +2717305 +647882 +1949787 +647886 +1949825 +2717345 +647874 +1340424 +1945714 +1995947 +2066975 +1384810 +564526 +701473 +2863419 +647927 +2717269 +1340412 +676502 +303558 +72012 +1643837 +2220899 +1379071 +647924 +2365954 +1982922 +2676734 +1315187 +718499 +2546763 +897997 +1384811 +1299488 +1299491 +1045358 +676513 +2365955 +821410 +1949765 +2098085 +647843 +897959 +2365934 +2546744 +564461 +324480 +356666 +496241 +658181 +647838 +2546783 +1986735 +1379070 +1643852 +2408154 +2098107 +2047587 +2875058 +1340420 +2620854 +1655071 +647957 +2546772 +2726750 +1481558 +2220872 +2620883 +2863420 +676501 +382752 +1285279 +1481563 +356664 +2620877 +361970 +2704046 +1982921 +370090 +1523533 +297413 +1949788 +897950 +2717254 +647825 +1369092 +647864 +188978 +2220890 +2546785 +2277226 +676499 +2620876 +1939586 +1593815 +1967538 +2546756 +1655052 +2047584 +658189 +647908 +1481547 +2717325 +701468 +2365974 +2408149 +2220880 +394382 +1650913 +2415599 +564496 +1299448 +2220879 +897972 +1369090 +1655056 +2546778 +361968 +1949778 +1299450 +2277225 +1107459 +2369232 +1340404 +1379068 +2717294 +382760 +2676740 +2719966 +1299444 +1949802 +897955 +1970285 +2717319 +1818960 +1099439 +647827 +647895 +676504 +2098100 +1362809 +2277233 +1593821 +1481550 +647988 +2717280 +1373689 +647784 +2066988 +1410290 +1346389 +1643828 +2627342 +2277227 +188979 +2717255 +821416 +647933 +1993115 +1949763 +496240 +2737846 +2620841 +647795 +1045348 +1285259 +2719955 +188970 +771479 +2717282 +2344418 +1643846 +1967527 +1949800 +2686940 +1650906 +2272732 +701481 +188971 +1510999 +2047583 +1481549 +1285261 +1949797 +897978 +658180 +1593819 +188950 +2066989 +897940 +1410296 +647959 +1481548 +647981 +647839 +1340410 +1340427 +2717304 +1299442 +1945703 +647883 +2408229 +1099443 +2818997 +2408267 +1034713 +256260 +2620906 +2272793 +2344437 +2819077 +2408242 +898154 +2220952 +2620914 +1299541 +2819099 +2819027 +2408178 +1373691 +564539 +898096 +1481591 +107268 +2272775 +189020 +982192 +1362837 +2272803 +2676765 +1129794 +2620937 +1643861 +2676799 +1023109 +2819070 +2620913 +2818987 +2620922 +2272774 +948531 +1481571 +1119692 +1306732 +2272798 +2819068 +303565 +2819047 +1982939 +189032 +564554 +2686941 +648018 +2620910 +676537 +1045368 +2717359 +1650925 +2819003 +1593847 +898056 +189022 +1481626 +701485 +2717361 +898024 +1299523 +25542 +1939592 +1643911 +496246 +1045381 +1285308 +189015 +1650922 +2220967 +1593839 +256259 +648048 +1707979 +1034712 +2067014 +2546800 +1373693 +1945726 +284128 +1716837 +370094 +2220975 +1949842 +323902 +2819101 +1299546 +898014 +648005 +1299535 +1023080 +1299503 +2690949 +2067005 +2220978 +1299540 +189078 +898111 +189047 +1756978 +1896667 +2676763 +2818850 +2818941 +1481606 +2408243 +2408249 +734797 +2676753 +740265 +1643907 +72059 +247021 +898107 +658192 +2819079 +1266044 +2220971 +2818898 +484540 +1340459 +2353939 +898131 +2620947 +440109 +2408201 +2819051 +2818948 +2620958 +898095 +1362840 +2415614 +1165177 +1306731 +189065 +1982945 +2220954 +2818956 +676521 +2717362 +564542 +2819105 +2365980 +1099442 +647998 +189054 +2365986 +1481622 +564543 +1655099 +1362839 +2071538 +948533 +2272766 +1443303 +1340468 +2819067 +1655093 +2818849 +2690950 +1756981 +2819007 +323883 +1340455 +1299516 +1967559 +323903 +2047593 +1045399 +734795 +356668 +648072 +898058 +2818860 +648056 +2408234 +2365984 +72034 +2818991 +898157 +496247 +2272752 +1655086 +898102 +1299522 +2408233 +2819028 +648044 +2098146 +2220913 +2272778 +2272789 +2818858 +1945731 +1023091 +898081 +676529 +2818962 +2307074 +2620923 +386667 +2819066 +1315217 +2272790 +2819045 +2819088 +898160 +189087 +1967555 +1593845 +2818853 +1896650 +2620944 +189068 +1369103 +1266049 +189002 +2408248 +2818883 +1362832 +356669 +2408189 +2365985 +1362836 +1285325 +1088499 +2719968 +1643948 +2366018 +2719979 +2098186 +1384828 +2546919 +2676809 +2719971 +648079 +1949869 +2717398 +2067031 +1384829 +1643973 +821449 +1643942 +898245 +2221007 +898192 +2047637 +2408280 +2408326 +1982953 +1511012 +189110 +648141 +2744049 +1196148 +898215 +2272808 +898220 +2717384 +1340489 +2717426 +1967565 +898195 +386670 +2408276 +2676820 +1643955 +1995963 +2067054 +2676824 +1285347 +1970294 +2002709 +1986742 +2221025 +2726770 +284131 +1299555 +2408327 +2706045 +1443321 +648148 +2344485 +2366009 +25549 +564576 +1285361 +898237 +2546896 +2344460 +2518253 +1896683 +1643964 +2546885 +1995968 +1443326 +1593860 +1045408 +718517 +1982956 +2353949 +2676808 +1945742 +2744055 +247032 +1907347 +2221015 +25551 +2621091 +2098224 +1362848 +1967573 +247026 +2098159 +2621004 +1982961 +2105593 +2098150 +2067026 +2546871 +2221016 +382774 +72066 +284147 +2518246 +2621003 +2408323 +1443311 +1379074 +323924 +2758651 +2366023 +1982978 +2546850 +1759719 +2621050 +2098181 +25546 +2546848 +1643978 +648159 +1379476 +2518252 +898185 +2047621 +1047396 +2067042 +1593882 +2067025 +1362866 +727744 +1967576 +2013240 +1643967 +2221058 +2621055 +1747007 +2408315 +2098218 +2704070 +948536 +2019696 +2737859 +2620986 +2408312 +2221051 +1285329 +200937 +898205 +2620995 +564597 +2098152 +2704085 +2098194 +2546841 +2408307 +2221029 +1949856 +2621120 +1233849 +1511022 +2621070 +386669 +2272834 +2737857 +2221078 +718513 +2717382 +701510 +2344454 +1481652 +1034721 +1747000 +1443330 +2546945 +2717424 +2067047 +1967586 +2047643 +821457 +1643952 +1896694 +2307107 +2620997 +2706048 +1643960 +2546859 +2307093 +648087 +2621013 +2047619 +2344476 +2272822 +370097 +734805 +2280072 +2366035 +2717418 +284132 +2408328 +1655105 +2546917 +2620994 +564589 +303567 +1523552 +2344478 +2098221 +2704074 +1384827 +1982967 +2546911 +1896686 +2272823 +1967568 +2621105 +2408292 +2344480 +2221077 +2546889 +932025 +2758649 +727746 +1369115 +1340484 +734800 +2621009 +898250 +2693403 +1362862 +2676815 +1945741 +2221017 +1285357 +2546920 +2221023 +2366092 +1373702 +341993 +2546988 +2105613 +1285389 +1967630 +2717445 +771503 +2621226 +2098281 +2408421 +2547015 +1299585 +821462 +701546 +1945759 +2067088 +382779 +898268 +1983006 +2366111 +1896698 +1119706 +1369132 +189160 +2547082 +1655113 +2690959 +2098240 +1410310 +2047678 +1809892 +2547053 +2408429 +2719981 +701544 +1949894 +2875118 +1716863 +2408398 +2408441 +1716850 +2408396 +1481755 +2277246 +2098278 +2547011 +2047680 +2067060 +2098256 +1842490 +2221138 +2408405 +1481698 +2221233 +1511033 +2307118 +648193 +2875131 +72114 +564646 +1315250 +2221190 +2415635 +898328 +2366097 +2221110 +676553 +2067067 +701555 +2002710 +1643980 +1842486 +2027692 +932032 +189150 +1511035 +2744063 +948545 +2366060 +1346414 +1099452 +2344499 +1443364 +564624 +2369250 +1285407 +2696319 +648173 +2221244 +1716856 +727751 +898364 +1955563 +2221131 +2002717 +2621209 +1949887 +648240 +1983013 +1481758 +1306739 +2366086 +2221249 +2547003 +1285393 +1285396 +1655108 +2621142 +564641 +2733540 +2221188 +1285405 +72110 +1650942 +2547044 +2547028 +2726788 +2704087 +2026092 +2717457 +2621195 +382778 +2408410 +948546 +1362900 +2098228 +1340532 +1034724 +898273 +648176 +2067086 +648190 +2408360 +2546986 +898265 +1896699 +2717481 +898281 +2067069 +1384840 +2369255 +1643990 +2221158 +1643989 +1949891 +648239 +2366069 +1481696 +323928 +1983020 +1340491 +1842484 +1945760 +2408402 +2272906 +2221148 +2221146 +1340556 +1511049 +1443338 +740269 +2272886 +189177 +1340544 +1340495 +2098293 +1285363 +2676830 +2221212 +1481750 +2221108 +1939594 +898280 +1523572 +648197 +1967637 +2408366 +648227 +648201 +821482 +1340520 +1362877 +2221121 +1285371 +2029026 +1481721 +2221178 +734819 +2621223 +1939596 +1285421 +2067068 +2415637 +2272899 +2221206 +2221160 +1481697 +2717460 +2408394 +1315253 +821465 +1346412 +2547030 +2621166 +2221118 +2098241 +72101 +2344501 +1299632 +2047693 +1818963 +2717443 +2344509 +1643994 +1369140 +1340569 +2366107 +1306737 +1655116 +1315242 +2366051 +2621150 +2744060 +2366076 +2717431 +1362869 +2047687 +2221140 +2047685 +2067062 +564673 +1481760 +898272 +648204 +1362885 +1655111 +1721667 +2067070 +1285362 +2875137 +1285417 +2627371 +1949896 +676554 +2726793 +658211 +2717484 +2105617 +2221226 +2546948 +2098245 +2408413 +898298 +2272890 +2546987 +2875138 +323930 +1285370 +898269 +1523571 +1842492 +2098259 +2272858 +2098277 +564622 +1481699 +2344494 +2221199 +1362879 +226718 +2272892 +2098280 +1665914 +1842483 +2547040 +2354886 +2272918 +2272917 +2704104 +1233871 +564692 +2221325 +2098323 +1716878 +2221268 +2686965 +2717523 +1443380 +1945787 +1967660 +2717505 +1285441 +2047748 +564690 +2741015 +1983042 +2717488 +1299637 +1945814 +1285435 +564688 +382784 +2272919 +1285437 +1196166 +2737875 +2280075 +1285446 +2717516 +1967674 +1945790 +1362912 +564687 +2221297 +2547105 +1945797 +2686975 +2726809 +2047770 +1362908 +1945789 +1967682 +2408472 +564691 +226722 +564703 +1970310 +2686973 +658216 +2717504 +2706052 +564699 +718552 +2729475 +2221308 +2221319 +2717535 +1443372 +1707589 +1362924 +1362907 +2717533 +1362914 +948550 +2717509 +2717500 +107294 +2344524 +2221254 +821487 +1306740 +2547087 +2221292 +1362925 +1716871 +2366115 +1285436 +2408468 +763831 +2221296 +2686961 +2280076 +2547102 +2726813 +1945811 +2047750 +2726806 +2221275 +456488 +2726801 +658229 +1644126 +2726987 +2221708 +2693464 +771519 +2691005 +648277 +1481873 +1285550 +189270 +2726879 +1955580 +1299772 +1481996 +676615 +189424 +771518 +2221387 +1952706 +771515 +1945819 +2726940 +2693422 +2408521 +898395 +2221618 +1481999 +1285524 +821529 +898383 +1593940 +2273101 +718554 +1129807 +2067220 +1955566 +1644034 +1299730 +2273128 +1481946 +1482018 +2221532 +2047900 +1644099 +676564 +1285592 +1949969 +658231 +2726878 +189378 +2693429 +1285604 +2690994 +2693423 +1593938 +1299744 +2366142 +2415660 +2221427 +1299718 +1481856 +2344574 +2221542 +1644119 +821504 +1481855 +1299664 +2741021 +1481887 +2067114 +2408545 +1299747 +2704128 +1285616 +1949962 +771533 +1949911 +2221581 +2273178 +2273124 +2758671 +2621337 +2067159 +2344561 +1945872 +1481811 +2047837 +2726985 +1945834 +2273010 +648336 +1299644 +2758659 +1747025 +189286 +1443396 +2067140 +189214 +1481810 +1481958 +898597 +2737881 +2067156 +2221633 +2408489 +1481839 +189349 +898530 +898446 +1818974 +1644120 +1481792 +1045440 +1340600 +2353968 +189257 +2273042 +1481787 +1983053 +2693439 +2516225 +1644010 +2221365 +1952701 +2717556 +564733 +2221545 +1995982 +2726960 +2221487 +1842506 +189408 +2344543 +2717580 +1949917 +2067175 +1949997 +2273157 +1443458 +1644085 +1949994 +2026095 +2067128 +1593929 +2047896 +2344580 +2758658 +1644057 +2047778 +821535 +2047840 +1644026 +898586 +2273066 +2741028 +1315266 +2047859 +898576 +1443428 +898628 +1945829 +1299673 +1299698 +1299771 +1045435 +898546 +2221557 +2506625 +2726861 +898539 +2726837 +2067214 +648353 +72136 +1644035 +1315277 +1443501 +2047884 +2221647 +1949931 +2693457 +1481806 +564752 +2408528 +2221510 +1482004 +932045 +898592 +564734 +2273013 +1996002 +284163 +2719990 +1443467 +341994 +1931748 +107323 +2272946 +2221744 +564755 +2758673 +2047814 +2047787 +2221522 +1315310 +564737 +2693463 +1481896 +898569 +1285582 +2354014 +2221450 +189385 +2408519 +1949968 +1481898 +745925 +2221699 +1299789 +898591 +72138 +648356 +763834 +2221612 +1299776 +2344568 +2272966 +898389 +1285501 +1481870 +2221672 +898388 +2686990 +1757001 +658260 +2067164 +2221444 +2273089 +1369156 +648274 +2221717 +564750 +2047857 +2408526 +2307136 +1482026 +2408510 +1443444 +2272945 +1995977 +1315311 +1129813 +648292 +2506618 +658224 +2737885 +1949937 +2408523 +676618 +1949986 +2221623 +1315273 +2067135 +1644132 +2098327 +648354 +2047832 +2221534 +1818976 +1373717 +1023180 +1299738 +2221624 +1955589 +1023188 +2273038 +1482011 +1644014 +2621292 +2307137 +898641 +1939603 +1756994 +1949940 +648318 +2221568 +1285546 +2221652 +2516218 +1443408 +1285584 +2047876 +2029029 +2717550 +2408515 +1369152 +676624 +2344588 +1315295 +1443463 +1285590 +1306750 +2741024 +898574 +2696322 +2221362 +1644023 +2026102 +1299677 +2741019 +2047800 +1443485 +1481832 +676639 +1299753 +2047936 +2221627 +2726880 +2344577 +1931753 +1945863 +1285472 +2676895 +1410321 +821537 +1299661 +648295 +1644084 +1346421 +2696334 +821512 +2420621 +2221739 +658268 +2408507 +2353976 +1023191 +1945859 +2686982 +1593935 +189290 +2726887 +1299791 +1939609 +2415652 +1362940 +2221760 +1756999 +2726908 +821527 +1481948 +189358 +1481825 +2221535 +2726927 +1949957 +898575 +898538 +2047888 +1945877 +2696335 +1481989 +1299727 +2344560 +1644134 +564775 +2693442 +189296 +1443478 +1047397 +2221525 +1481932 +2737883 +2621291 +1481875 +189403 +648282 +1481881 +2726827 +658238 +2221398 +1995996 +2726844 +189413 +2273098 +898460 +1373712 +1482021 +898480 +2273082 +1481906 +821530 +2726825 +564723 +1481983 +1644139 +676592 +1285471 +1299785 +2047873 +2221478 +1644006 +1443443 +1299649 +1756986 +1644013 +2726996 +1818971 +107331 +189370 +2067223 +2221463 +2741047 +1993178 +1593952 +1939621 +648330 +107339 +2726974 +1747020 +2272976 +2696327 +2727005 +1285626 +1481892 +2067102 +1285504 +1756996 +1373714 +2221605 +25569 +1443496 +1299694 +1481831 +2273125 +1644030 +2221659 +1949973 +2221587 +1939620 +1644109 +648310 +189251 +1315278 +1983051 +1285502 +189379 +898450 +2221585 +1847014 +2408544 +648323 +1644112 +189325 +1939614 +1945874 +1299726 +648302 +1482032 +2221684 +1482027 +1482024 +2693467 +898559 +2726883 +676593 +1995990 +898573 +1315290 +898439 +2273116 +1644067 +898466 +1285534 +1023150 +189357 +1340598 +1481863 +1373708 +1644114 +2696325 +898620 +2726865 +1443494 +2691011 +658255 +1955569 +564744 +648489 +1593974 +1593969 +496315 +284185 +1644163 +648416 +2221786 +1023242 +1023241 +2047939 +456493 +1482042 +1644187 +323989 +1249517 +72180 +382814 +1045455 +324005 +189500 +734837 +382837 +1644155 +496278 +1045441 +496321 +1482047 +1129830 +658276 +2221767 +2344595 +382804 +323952 +72153 +189454 +324018 +473905 +473893 +648404 +284187 +1939631 +496319 +1233876 +648472 +2047940 +303578 +226727 +564792 +72160 +2727025 +440123 +564783 +1482046 +1655135 +72173 +1759724 +2719997 +1034732 +1706701 +1644206 +1644160 +72164 +1023221 +1362949 +1721674 +676646 +1644161 +564782 +2273189 +1482040 +898649 +382799 +496299 +496297 +2221781 +496298 +648419 +648411 +1129828 +496320 +1249525 +648407 +2273235 +1757010 +1023223 +1196169 +382793 +370111 +440126 +648444 +1757004 +323955 +189446 +1931765 +648422 +484554 +1249528 +189497 +734839 +2354030 +898652 +1362952 +1023237 +2676922 +1818977 +189505 +1644209 +648479 +189467 +1285635 +382794 +2547154 +256280 +2717590 +189485 +718558 +2067228 +1644174 +2273217 +1644158 +734832 +1759732 +1967722 +1747043 +2832022 +1482083 +1511072 +2277257 +1757015 +1594004 +1593982 +2408561 +1340607 +2221816 +2221874 +2621375 +2621484 +1373726 +898670 +1443594 +2048004 +1593983 +72187 +2047943 +2221949 +107359 +982228 +701593 +107396 +2067236 +2408608 +982291 +2621343 +324035 +821576 +2067235 +2047941 +256283 +1034735 +2221851 +1285675 +2366174 +2621493 +2621432 +1340610 +2727043 +1680373 +2047948 +2221907 +2221912 +2025142 +1594068 +2547208 +2506626 +2221911 +1443520 +701592 +25591 +2221909 +2677022 +1443536 +2344602 +1594002 +982283 +2676988 +1119728 +2408623 +1384849 +1119736 +1593992 +1594006 +2072201 +2221867 +2048027 +2221988 +1747055 +898677 +1034737 +2221919 +1747062 +2408648 +2048023 +107415 +1285702 +2547183 +1896732 +2621404 +1842532 +1443584 +898688 +2677013 +2677023 +2221807 +2717607 +1023280 +1650958 +2717597 +1511085 +2408619 +2344653 +2047968 +1023279 +2285218 +1443549 +2727029 +2344610 +2621412 +2098347 +2621390 +1285726 +1023289 +2847115 +2408595 +2344624 +2621426 +1285646 +2621473 +2621360 +2676964 +2221962 +2047996 +107369 +821566 +2408552 +1644250 +727768 +1443598 +2071553 +2676981 +2621438 +2344607 +2048009 +107365 +564854 +1747051 +1340625 +2621430 +1809914 +2221857 +1967705 +2098341 +25584 +1945897 +1285636 +1119737 +2717608 +2047942 +2067234 +189533 +2691020 +1023256 +1285688 +107363 +107406 +2408575 +226731 +2047974 +2408647 +2717605 +1594011 +2408554 +898673 +2621446 +107357 +821603 +2344648 +2221814 +2221951 +2676977 +658307 +2408565 +1594076 +2621353 +1373749 +2221979 +2221942 +2758676 +1443614 +2344628 +1119733 +1340640 +1443599 +1482062 +1759734 +1747052 +1443532 +564865 +898666 +107379 +2621451 +2098340 +1045459 +2621467 +1443557 +658305 +1594049 +1285648 +821607 +898695 +1644228 +948561 +2621415 +771540 +1970312 +2408555 +2547197 +1842528 +1896715 +2415671 +2706059 +1285710 +564821 +1482072 +1644238 +2621364 +1593996 +821605 +982242 +2098342 +2048032 +2047988 +2344620 +2408551 +982232 +2048022 +2408633 +2621487 +1680376 +1285653 +2676990 +25579 +1716895 +2737888 +727780 +189520 +2366167 +226734 +1196175 +564834 +1285720 +2621425 +2071551 +821604 +2344682 +2048003 +2676944 +2366179 +1443544 +1700129 +1809907 +1721676 +1896722 +2048025 +1443539 +2727040 +2047954 +821563 +1644213 +1299806 +763839 +1443631 +2344678 +1233901 +2547160 +821571 +1340650 +2727047 +1747045 +2048039 +982300 +2098356 +1285699 +2047986 +982244 +1644252 +2727032 +2621372 +2048040 +2758684 +2547213 +324034 +2048061 +2677051 +2621566 +1443685 +648514 +1443658 +1443723 +2366194 +564988 +1945925 +982304 +2547233 +1716904 +1482089 +1315317 +982313 +2621518 +2727049 +2098406 +1511087 +727793 +2222066 +2547239 +107452 +2621605 +1443680 +1967752 +2222122 +2307166 +1034740 +2307162 +1340692 +1379086 +2098387 +1285750 +564943 +1362974 +2717625 +1285755 +2408697 +1939639 +1443716 +898725 +2408722 +2621587 +2677031 +1233936 +1443636 +1993198 +2222154 +2071560 +2408668 +821654 +821616 +1443703 +2222047 +2098432 +1362981 +821652 +1952714 +2071558 +2222198 +1759747 +2098415 +1340697 +1842540 +2222159 +2547221 +2621549 +2547254 +2048050 +2098376 +2547259 +1340682 +1945900 +1140765 +2366197 +2621511 +2222197 +821621 +1363000 +1983077 +564976 +2222218 +2222034 +1945924 +1967753 +821651 +1716903 +2408651 +2222186 +189570 +2621568 +1842538 +2547249 +1362984 +2013246 +2677037 +1443692 +2344696 +2222206 +2408741 +821660 +2717639 +2741061 +107422 +1363003 +1945914 +2098385 +564937 +2025144 +1967736 +2704170 +2621525 +2222121 +2443278 +107458 +1340701 +1967731 +1594087 +1818979 +2677029 +2344705 +107445 +2621499 +2443277 +1993199 +1896737 +1945932 +2098413 +2677039 +1196189 +701608 +1340689 +1233931 +2408726 +1391474 +2366220 +1967755 +1967761 +2621561 +1993196 +2621601 +1119756 +2222223 +2366223 +1945908 +1196202 +2547256 +2222064 +1443656 +1406831 +1233938 +1983100 +564927 +456504 +2621547 +1340699 +1070318 +2098398 +564995 +1931791 +564925 +564980 +1363004 +2344692 +1034742 +1196197 +982311 +2222179 +564997 +2408649 +2354044 +1983084 +2222085 +2621509 +1023301 +2222115 +2222091 +1362993 +2222082 +2222061 +1759739 +2222158 +1340690 +2098392 +2621600 +2408703 +564993 +2547220 +1967754 +2222095 +2098424 +821623 +2222124 +2071561 +2366204 +2408681 +1152859 +1363001 +1486862 +2222211 +189568 +2704161 +2222177 +1340696 +1594119 +2506673 +2222083 +1362998 +1034743 +1443724 +2222118 +763853 +1233912 +1034744 +2621596 +1983092 +107462 +1594089 +2704157 +1373755 +2344744 +1594154 +2547305 +1023311 +1285804 +370117 +1842552 +1363050 +2547279 +2621654 +2717677 +565071 +356689 +72206 +2366270 +1747116 +2222247 +2621657 +1045465 +821758 +1340769 +1482128 +1757017 +2687022 +2222311 +1945946 +2547347 +701629 +2621688 +565086 +1993217 +2098451 +2727063 +2048076 +1523603 +2098453 +1967807 +324038 +2344753 +2222310 +1443776 +1644267 +1340756 +2737904 +2621658 +2048071 +2744072 +2727068 +1285801 +565015 +189577 +982320 +2027725 +2048102 +821759 +565060 +1340768 +2222243 +2717648 +1023327 +648530 +1369176 +648538 +1340708 +2621685 +2547336 +1842573 +440130 +2048072 +898784 +821773 +1993216 +565026 +2222297 +1340761 +2547337 +2273283 +1285794 +2408746 +2727065 +189599 +1306773 +2717682 +1057629 +2354049 +2273275 +821762 +2344742 +565059 +1482114 +676672 +565072 +189591 +701628 +1384860 +189576 +1594170 +1176814 +1443756 +2285225 +1950022 +1842562 +2621706 +1967808 +1685037 +1363032 +821744 +1363047 +1523601 +565074 +2273271 +1346430 +1594144 +2729481 +2354891 +1443767 +2741068 +2366271 +982340 +1107484 +565012 +2733565 +1023326 +1511120 +1135321 +2408777 +2366262 +2222242 +1511118 +2547346 +2222231 +565010 +1306768 +1443759 +658344 +648548 +2627386 +2693472 +898770 +1707987 +189581 +565023 +932076 +1443735 +107480 +2222256 +1594158 +2222325 +2547354 +648524 +701625 +740276 +1340752 +1644281 +1644284 +2621621 +1340735 +1384861 +1511117 +2547313 +2307174 +2098439 +658351 +1023303 +2547307 +565035 +2547357 +1967780 +2621609 +2621701 +1842553 +107513 +2506678 +565061 +1285802 +2048091 +1340745 +1945934 +1993218 +1482109 +2048106 +821777 +1644274 +189582 +898772 +2621656 +648529 +2621709 +1315323 +821752 +328719 +1340751 +2222289 +107484 +1363021 +2222302 +370118 +1680388 +1996011 +2344728 +1406832 +898776 +2547365 +2744074 +1363028 +107510 +898758 +1173871 +189579 +1340765 +2717675 +742993 +2222357 +1119765 +2547371 +2443281 +2717689 +107531 +2875159 +2727079 +2048114 +2819140 +212135 +2875179 +2366289 +2819139 +1285814 +2875186 +2875147 +356690 +2733571 +2819170 +2222352 +2875161 +107521 +1842575 +25631 +1945948 +2863442 +2222345 +2621718 +2819157 +1896761 +2222351 +2002747 +565106 +2027729 +107535 +107536 +1443812 +1306778 +821838 +1129838 +1594202 +440134 +1594208 +2704218 +107575 +2071578 +1983146 +2737907 +2819283 +1747127 +2420631 +2691032 +303609 +107585 +2819254 +1747131 +1594223 +932090 +2717702 +2366293 +1363058 +1486868 +2691029 +1443814 +2819336 +1233958 +1406835 +1107487 +1967828 +1650996 +2222370 +821847 +1983139 +821835 +2819326 +648563 +1259279 +1983144 +821800 +356691 +226751 +2819225 +303602 +1700146 +2222400 +1594193 +2048159 +1931807 +1443822 +1340783 +2819189 +2048124 +658382 +1931806 +2819367 +658375 +2819360 +1443823 +658374 +107545 +701656 +256289 +2071572 +1034759 +2819232 +1299818 +1945951 +2048150 +2819368 +2819350 +1896769 +107591 +565158 +1285842 +1119769 +1983140 +821791 +2222398 +287482 +1285828 +2071576 +2819228 +1842584 +2819340 +107552 +2027737 +287479 +2415680 +2704234 +2696344 +1285848 +2071575 +25652 +25640 +2819251 +2819265 +303599 +1747132 +2048161 +2819248 +370124 +2819335 +1233961 +1594191 +1034752 +1747126 +1511130 +1511144 +1285849 +821821 +1594213 +2819327 +1967817 +2408813 +1443807 +1482139 +2819186 +431919 +2704235 +1665919 +1285846 +1443802 +2408803 +1650986 +1594195 +107578 diff --git a/verification/ancillary_data/school_shadow_prices.csv b/verification/ancillary_data/school_shadow_prices.csv new file mode 100644 index 000000000..13391d860 --- /dev/null +++ b/verification/ancillary_data/school_shadow_prices.csv @@ -0,0 +1,191 @@ +TAZ,gradeschool,highschool,university +1,1.0,1.0,1.0 +2,1.0,1.0,1.0 +3,1.0,1.0,1.0 +4,1.0,1.0,1.0 +5,1.0,1.0,1.0 +6,1.0,1.0,1.0 +7,1.0,1.0,1.0 +8,1.0,1.0,1.0 +9,1.0,1.0,1.0 +10,1.0,1.0,1.0 +11,1.0,1.0,1.0 +12,1.0,1.0,1.0 +13,1.0,1.0,1.0 +14,1.0,1.0,1.0 +15,1.0,1.0,1.0 +16,1.0,1.0,1.0 +17,1.0,1.0,1.0 +18,1.0,1.0,1.0 +19,1.0,1.0,1.0 +20,1.0,1.0,1.0 +21,1.0,1.0,1.0 +22,1.0,1.0,1.0 +23,1.0,1.0,1.0 +24,1.0,1.0,1.0 +25,1.0,1.0,1.0 +26,1.0,1.0,1.0 +27,1.0,1.0,1.0 +28,1.0,1.0,1.0 +29,1.0,1.0,1.0 +30,1.0,1.0,1.0 +31,1.0,1.0,1.0 +32,1.0,1.0,1.0 +33,1.0,1.0,1.0 +34,1.0,1.0,1.0 +35,1.0,1.0,1.0 +36,1.0,1.0,1.0 +37,1.0,1.0,1.0 +38,1.0,1.0,1.0 +39,1.0,1.0,1.0 +40,1.0,1.0,1.0 +41,1.0,1.0,1.0 +42,1.0,1.0,1.0 +43,1.0,1.0,1.0 +44,1.0,1.0,1.0 +45,1.0,1.0,1.0 +46,1.0,1.0,1.0 +47,1.0,1.0,1.0 +48,1.0,1.0,1.0 +49,1.0,1.0,1.0 +50,1.0,1.0,1.0 +51,1.0,1.0,1.0 +52,1.0,1.0,1.0 +53,1.0,1.0,1.0 +54,1.0,1.0,1.0 +55,1.0,1.0,1.0 +56,1.0,1.0,1.0 +57,1.0,1.0,1.0 +58,1.0,1.0,1.0 +59,1.0,1.0,1.0 +60,1.0,1.0,1.0 +61,1.0,1.0,1.0 +62,1.0,1.0,1.0 +63,1.0,1.0,1.0 +64,1.0,1.0,1.0 +65,1.0,1.0,1.0 +66,1.0,1.0,1.0 +67,1.0,1.0,1.0 +68,1.0,1.0,1.0 +69,1.0,1.0,1.0 +70,1.0,1.0,1.0 +71,1.0,1.0,1.0 +72,1.0,1.0,1.0 +73,1.0,1.0,1.0 +74,1.0,1.0,1.0 +75,1.0,1.0,1.0 +76,1.0,1.0,1.0 +77,1.0,1.0,1.0 +78,1.0,1.0,1.0 +79,1.0,1.0,1.0 +80,1.0,1.0,1.0 +81,1.0,1.0,1.0 +82,1.0,1.0,1.0 +83,1.0,1.0,1.0 +84,1.0,1.0,1.0 +85,1.0,1.0,1.0 +86,1.0,1.0,1.0 +87,1.0,1.0,1.0 +88,1.0,1.0,1.0 +89,1.0,1.0,1.0 +90,1.0,1.0,1.0 +91,1.0,1.0,1.0 +92,1.0,1.0,1.0 +93,1.0,1.0,1.0 +94,1.0,1.0,1.0 +95,1.0,1.0,1.0 +96,1.0,1.0,1.0 +97,1.0,1.0,1.0 +98,1.0,1.0,1.0 +99,1.0,1.0,1.0 +100,1.0,1.0,1.0 +101,1.0,1.0,1.0 +102,1.0,1.0,1.0 +103,1.0,1.0,1.0 +104,1.0,1.0,1.0 +105,1.0,1.0,1.0 +106,1.0,1.0,1.0 +107,1.0,1.0,1.0 +108,1.0,1.0,1.0 +109,1.0,1.0,1.0 +110,1.0,1.0,1.0 +111,1.0,1.0,1.0 +112,1.0,1.0,1.0 +113,1.0,1.0,1.0 +114,1.0,1.0,1.0 +115,1.0,1.0,1.0 +116,1.0,1.0,1.0 +117,1.0,1.0,1.0 +118,1.0,1.0,1.0 +119,1.0,1.0,1.0 +120,1.0,1.0,1.0 +121,1.0,1.0,1.0 +122,1.0,1.0,1.0 +123,1.0,1.0,1.0 +124,1.0,1.0,1.0 +125,1.0,1.0,1.0 +126,1.0,1.0,1.0 +127,1.0,1.0,1.0 +128,1.0,1.0,1.0 +129,1.0,1.0,1.0 +130,1.0,1.0,1.0 +131,1.0,1.0,1.0 +132,1.0,1.0,1.0 +133,1.0,1.0,1.0 +134,1.0,1.0,1.0 +135,1.0,1.0,1.0 +136,1.0,1.0,1.0 +137,1.0,1.0,1.0 +138,1.0,1.0,1.0 +139,1.0,1.0,1.0 +140,1.0,1.0,1.0 +141,1.0,1.0,1.0 +142,1.0,1.0,1.0 +143,1.0,1.0,1.0 +144,1.0,1.0,1.0 +145,1.0,1.0,1.0 +146,1.0,1.0,1.0 +147,1.0,1.0,1.0 +148,1.0,1.0,1.0 +149,1.0,1.0,1.0 +150,1.0,1.0,1.0 +151,1.0,1.0,1.0 +152,1.0,1.0,1.0 +153,1.0,1.0,1.0 +154,1.0,1.0,1.0 +155,1.0,1.0,1.0 +156,1.0,1.0,1.0 +157,1.0,1.0,1.0 +158,1.0,1.0,1.0 +159,1.0,1.0,1.0 +160,1.0,1.0,1.0 +161,1.0,1.0,1.0 +162,1.0,1.0,1.0 +163,1.0,1.0,1.0 +164,1.0,1.0,1.0 +165,1.0,1.0,1.0 +166,1.0,1.0,1.0 +167,1.0,1.0,1.0 +168,1.0,1.0,1.0 +169,1.0,1.0,1.0 +170,1.0,1.0,1.0 +171,1.0,1.0,1.0 +172,1.0,1.0,1.0 +173,1.0,1.0,1.0 +174,1.0,1.0,1.0 +175,1.0,1.0,1.0 +176,1.0,1.0,1.0 +177,1.0,1.0,1.0 +178,1.0,1.0,1.0 +179,1.0,1.0,1.0 +180,1.0,1.0,1.0 +181,1.0,1.0,1.0 +182,1.0,1.0,1.0 +183,1.0,1.0,1.0 +184,1.0,1.0,1.0 +185,1.0,1.0,1.0 +186,1.0,1.0,1.0 +187,1.0,1.0,1.0 +188,1.0,1.0,1.0 +189,1.0,1.0,1.0 +190,1.0,1.0,1.0 diff --git a/verification/ancillary_data/workplace_shadow_prices.csv b/verification/ancillary_data/workplace_shadow_prices.csv new file mode 100644 index 000000000..ea650c1de --- /dev/null +++ b/verification/ancillary_data/workplace_shadow_prices.csv @@ -0,0 +1,191 @@ +TAZ,work_high,work_low,work_med,work_veryhigh +1,1.0803059253045726,1.1298737228957636,1.165983727429199,1.066030411547262 +2,1.0265028489468482,1.1383373323054078,1.147274387211439,0.9900120600742882 +3,0.8999157583596624,1.0264417374452217,1.2725750351088378,1.1315969750952237 +4,1.1460615145233304,1.0719440219626772,1.02448694076055,1.046962953353665 +5,0.9457487903663444,1.0789775043766408,1.029757862247865,1.0145836098866297 +6,1.0688521643908468,0.77703126275512,0.9877959301247753,0.9599965622155752 +7,1.0369718050504995,0.9857642726379351,1.0734746677821176,1.045049880915751 +8,1.1007048515213402,1.0887057792382062,0.870280540308977,1.1022771881630604 +9,0.9816713619344726,0.978790133331592,1.0416600021143947,1.0511278013579541 +10,0.8717934737702864,0.9228249315662337,1.0073157814826703,0.9071745988814516 +11,1.0763731503937792,0.9802266004739839,1.005932664874231,0.9783341515984197 +12,1.1422363286504593,1.0867628596644245,1.050640045752676,1.0210292209211187 +13,0.9633169775555347,1.1026751918590523,1.0822596442420387,1.130259227865356 +14,1.2716540167471178,1.1106159160139817,1.1906612550645157,1.1172490478133277 +15,1.1370638673389377,1.2513297855684642,1.1601207704005656,1.2262299889036634 +16,1.136281677633446,1.1359349275832442,1.1772077297743253,1.1004466306217415 +17,1.1816303844361455,1.2325298235252962,1.1208554952620025,1.1064000795631284 +18,1.0840024299578568,1.2918800009718086,1.3881452644352281,1.147969878395119 +19,1.070664819090044,1.350285100901226,1.0736784303651268,1.0707938458053283 +20,1.04591970080767,1.1165125341399151,1.0268178930913983,1.096916147407459 +21,1.173827978592725,1.1872933367522207,1.0360357956992745,1.0352763926310298 +22,1.1761852944446802,1.3392626215165513,1.2269586183728944,1.1291957184576396 +23,1.4026553234127013,1.6496564954183623,1.5817694201321624,1.158655779258521 +24,1.2265801522534487,1.093119086898283,1.1902769972208773,1.0960428153838206 +25,1.0961152052502707,0.8547859470865706,1.1147532948959034,1.0129793878620386 +26,1.114199562052719,1.1246634541450624,1.1653043041664213,0.9764246143572007 +27,0.9394058727727093,1.1828430648947112,0.9329480161688666,1.2521950174184673 +28,1.0250500655276018,0.77454834865504,0.8609257956213054,1.1913510380336745 +29,1.2138254679828906,1.215314974239813,1.3479425356550352,1.3905556360753473 +30,1.2090521494614377,1.2289325328086034,0.9591332603531335,0.8570200910024938 +31,0.9229640896145713,0.7281730252632387,0.8329626652348537,0.8899910702915795 +32,1.0762351515558277,1.182797900115833,0.7944804408348063,1.1353180427253895 +33,1.1268018424123603,0.7561751258967417,1.0996590200023568,0.8780810857740328 +34,1.2297935066942292,1.245140325884559,1.1236264897255506,1.3872633751971455 +35,0.8636748555781906,1.0897876077764683,0.8983801323623575,0.915329791419999 +36,1.2242389345055094,1.228334889684616,1.0362167477766069,1.314985593900317 +37,1.232425514270342,1.1502832698700787,1.274851507943057,0.8994873614900812 +38,1.2314255606183586,1.9324432725138543,1.1675394493771891,1.270798329614841 +39,1.361471304787403,2.695911649754098,2.5391701738805756,1.3981993988484072 +40,1.231003364119865,1.2117558375951119,1.549760995447259,1.337284416227419 +41,1.3585514426041247,1.324281781203251,1.4170364598197618,1.2916595704660254 +42,3.8485089448350718,19.587796152990958,9.557717219914743,5.418586261854951 +43,1.6721235146384177,2.0821384674181243,1.1368185699769544,1.155598018809465 +44,1.158878097596836,1.3856899858753706,1.303255599755645,0.9847652290896077 +45,1.0855524242838817,1.124579120648322,1.0071222865747125,1.1271398440362272 +46,1.1498637254039792,0.8766500127780402,1.206721104669566,1.08541474007629 +47,1.1390288228076986,1.3677237187043119,1.1603016208540846,1.0732828036186641 +48,0.9453507167328542,0.9404335611290933,1.0436893900964819,1.0732357008890536 +49,0.8274711350240336,1.1280975231007022,1.2990448816346887,1.3364378115383715 +50,1.3866518573520796,0.9055597084103415,1.2050450646248312,1.2087617054011563 +51,1.3536793621095717,1.3368140296347097,1.568362769220855,0.9255348679413153 +52,1.7341663245302363,1.8176564194216163,1.6780988086095074,1.1486345354122343 +53,1.0541812336431986,2.0046608377111426,1.096900399961944,0.7968054501151737 +54,1.3926091725140402,1.3376749778700856,1.3655747456164327,1.1710115357223319 +55,0.8802750318288621,1.996487140553479,1.347467633797678,1.8774089716210858 +56,1.1819278632136,3.200558079048181,3.4351751581552623,1.5288261582101985 +57,1.5705646401472673,2.4776756153829056,1.276419968227123,1.229802947298201 +58,2.0808437443584418,1.9857769193086863,1.4643301348583573,1.2581516018280452 +59,1.0903820059809524,1.8300990835108855,1.37674250237854,1.3200280003920142 +60,1.1519262826478183,5.839483195361505,0.8760723133125301,1.1389425090831569 +61,1.3942958290537415,1.275929261503169,1.1191057811178518,1.002161339120995 +62,1.0652886455316204,1.641033223644257,1.2163942892473225,1.0541355167190574 +63,1.2710182224026707,1.0619137754536585,1.0014188861207016,0.9672151734173158 +64,1.3322893068157131,1.4268214710095926,1.480268272910606,0.8301751557520521 +65,1.1540493421455147,1.591239429171693,1.2275637880159822,1.0512002035990897 +66,1.1552474431494208,1.5842400785300743,1.4349976800728321,0.9502907769317656 +67,1.0716134941952844,1.5026431129666684,1.6305525828615304,1.09881541713897 +68,1.1507306774803314,1.5409828001178527,0.8838080044298536,0.9094537164849238 +69,1.0436561164779574,0.9798036902204641,0.9928842295721886,0.9780732477049694 +70,0.9048568273734003,1.2559523239173835,1.1047733953210743,1.1736715891125222 +71,1.1080969585693983,1.3529271396918194,1.0642699310911716,1.0486389054898293 +72,1.1225723642592353,1.002172125286421,1.179620236077177,1.1998268795175087 +73,1.211855682782614,1.275590543575436,1.001329148093356,0.9310939349246281 +74,0.9739443741232513,0.9761613382192857,0.8416897781920865,0.8822434085147389 +75,0.9790798987360205,0.9790508857577896,0.9854571008005507,0.9983748460318005 +76,1.0503114268945009,1.0863741911124591,1.0250631880084156,1.1938810294282938 +77,0.8710142002408622,1.064626297462612,1.0785787641917275,0.948378366390709 +78,1.1738608118282767,1.3094269513304877,0.7622612395218037,1.1550327473064257 +79,0.9153702515218505,1.0299583157444068,0.9801941267756771,0.9054940887696769 +80,1.433217734717053,1.006849701459018,0.6955901546662839,1.1358728383596013 +81,1.137438873592844,1.073050029524923,1.0769233730916141,0.8671922138231999 +82,0.6380486784639454,0.8164582122086598,0.9233944706218666,0.8930329124753563 +83,1.137574371272251,0.7744038529839037,1.2085341647482428,1.0856498568130728 +84,0.7556048331930888,0.8050193553247573,0.7788205006482138,0.7616192654282863 +85,1.0585555221608898,0.9972251471064774,1.3896693240287419,1.089816563769684 +86,0.8882219844409792,1.1673725404849826,0.9599978566458924,1.243317561653839 +87,1.201319159813734,1.3311678332983206,1.1344525558691871,1.0057927815794068 +88,1.242521868609466,1.0293768341906173,1.0063163507933266,0.9300073706638494 +89,1.201768469273396,1.4316203023968384,0.8453534896644083,0.7493014333645974 +90,0.9830929093162729,1.1410952944857327,1.0388547115920264,0.9749654286677708 +91,1.0502789748394836,1.2560556587776304,0.9503872366765153,0.9568554536953481 +92,0.9867631511280148,1.0766270213364668,1.1647945278634402,1.0989031559038716 +93,0.6490164381564849,1.1035492104016453,0.9400362351669882,0.9638629406446648 +94,1.0688583674332748,1.2551373761148141,0.8790009528562643,1.1392249193980932 +95,1.7565336032759629,1.5244636796082616,0.6535159451116371,0.610595079766872 +96,1.0421935094332475,1.108655666508428,0.9878626119405264,0.7993475493215353 +97,0.797747730980662,1.3102211456576867,0.8058807534699169,1.2093986290129328 +98,1.0691611776993253,1.4383519289166071,1.0597530671817639,1.45229597894534 +99,0.8774194369026582,0.7280181276103894,0.9452014942596744,1.123767850310449 +100,0.9776955122638585,1.5708729125588545,0.9167737525040759,0.8583063869631056 +101,0.8827852625553527,0.8544311898464116,0.9828918845388833,1.1266601419276163 +102,1.1119411499590015,1.2194907579702552,0.9076301622725927,1.01288859626109 +103,0.8408508612474309,1.019545993208578,0.8499690117502431,1.0037854841000675 +104,1.0905540524643584,0.9309771493309557,1.2215891144313826,1.1077186350454267 +105,0.9662959275708476,0.8348881740763818,0.8564102044738238,1.0753287050013012 +106,0.9005559658786609,1.0275036954285663,0.8738336549867536,1.0437206708078288 +107,0.9248023235934295,0.8754882043204679,0.9254855832863206,0.9372705831642659 +108,1.009550562146268,1.5089730884970207,1.1808857813883102,1.201434918468052 +109,1.2215297714491036,1.385466426046489,1.2753935302657515,1.1222187267322998 +110,1.301837221546531,1.6353741601066498,1.057261533446887,1.1907789413977867 +111,1.2567755408716181,1.438925953111621,1.2938079077539923,1.354825972421723 +112,1.034648162408399,1.5946828850940857,1.908388731086038,1.2478823590814383 +113,0.8374484837420565,1.2608477963218245,0.8756841924265055,1.0533723038740186 +114,0.9202238083769816,1.0423690297893384,0.9356449589597275,1.0117356406022813 +115,1.049698677538766,1.0740106258177462,1.0362650699771827,1.0414723839199749 +116,0.8885373647678347,1.4739831414324307,0.8429090244911512,0.7627106087095875 +117,0.7561516346045835,0.8928473868767808,1.3256839730280585,0.8519062047165828 +118,1.0747193495155933,4.946808651943649,0.5463055480854887,0.9417167571520534 +119,0.8461718070536439,5.115904097131012,0.8229518631667515,1.0829455276144613 +120,2.3816984076329915,1.3171127418006316,0.6461414800863263,0.8347719560141081 +121,1.1461199656958438,1.327881855047322,1.1316499327728815,0.8725545757890066 +122,0.8858443994803941,1.3345054346477063,1.3760469066078436,1.0417347854463808 +123,0.8330966938254633,1.063521709041598,1.0496305888531687,1.1998351273885364 +124,1.7452721240950582,1.5982360313264379,0.7540312301328912,0.8398628176747163 +125,0.666039131422828,0.8252888300834067,2.6202658737000744,0.6904656219452113 +126,1.3455186856798942,0.8769229697545133,0.6654992514341995,0.8698014778981642 +127,0.9259066830577347,1.2377959387859194,0.8765401792053563,1.144132283651009 +128,1.393424707427754,1.017555934702539,0.7991143949261403,0.9084677812132652 +129,1.4632005348644417,1.825437928769021,2.9151303372588666,1.1110469078986833 +130,0.9457539284843325,1.3756278377092273,1.346798824269238,1.4071281981756436 +131,0.7831499276484165,0.6635496828530584,1.2685934636687228,1.2068003276890829 +132,1.2327708515808866,1.3464852547256005,1.5800493903289916,1.0401947819196486 +133,0.846042212085163,1.3989443503213799,1.3701872217436977,1.4593460767767814 +134,0.8205657534802889,1.2783700920572811,1.6492794603615544,1.2891568055560174 +135,1.6732678219896429,3.180711912043266,1.1233861126365694,1.0170199166528648 +136,0.915348042485611,0.7723591090422834,1.248429752562426,0.9106197424636812 +137,0.7646590654784813,1.2128545886374813,1.6676536577758216,1.1211437123587176 +138,1.093174000834792,1.7937907036800749,1.9255684297202373,1.3913799165718441 +139,1.2604493396193286,1.2418207437007949,1.4302453794751537,1.3521286049028534 +140,1.36784185480101,3.1971328254041937,1.322598846413685,0.9728187709109622 +141,1.3078364383605843,4.145449020993165,2.270464649579719,0.6316054894172243 +142,1.0686880128783616,1.3449298254336448,1.3633397358596433,1.1274133608467156 +143,1.3051420513183534,2.2775884466163556,1.6863627388082252,1.3432285406875935 +144,2.061463061275111,2.516496137086581,1.9919868494289419,2.9088195106047743 +145,1.3619386581619286,1.3856798453060508,1.8764532021218603,2.1367899431092905 +146,0.7762228292467038,1.0,0.4971015701820163,1.2777022600732735 +147,1.626205564099341,1.6701444114373671,1.6515462958020968,1.6678696900580252 +148,1.5186051555290787,1.4724677939817323,1.5142832253337906,1.5467949384613666 +149,1.8970290963685978,2.3024024967207337,1.8700623644648262,1.6010784161222225 +150,1.1829311763023558,1.15884411055366,1.443630123300627,1.3902977945061499 +151,1.2595507508963706,0.4069312020909081,0.5966255655948148,0.489949529971729 +152,1.401482292412506,2.583438571568344,0.7425883516117406,1.2008087942917276 +153,0.7024604100961929,0.8509291285650106,2.058950128903652,2.2369442818722916 +154,2.13353853429176,0.6543435760680418,1.6097063623842565,1.3195235631213333 +155,2.4578247967488793,1.8981640433377107,3.5474944413568874,2.1705345978704087 +156,0.16478309427223278,0.508399594687205,0.4745859000066209,1.0624023415799484 +157,0.8865314885448671,0.8069731492471992,2.097234264050074,1.40944628904402 +158,1.0333129977316575,1.3016208204113597,1.1196830514148122,1.2953141883242112 +159,2.778495952638367,1.3490423932664444,0.8093254564484433,1.9262980789265827 +160,1.8793219918683768,1.23574218996075,0.8112114743935355,0.6828451265085649 +161,1.2790003642735481,1.6463012094610148,1.0472903146443324,1.5047127680977637 +162,1.334755447150009,2.6862111609553057,1.3852661012112597,1.5853832015882197 +163,1.2413256549236762,5.82987910220977,2.5720766129946075,2.6439991228282436 +164,1.2246300932666676,2.295663674505401,0.9423110567083327,1.6677108263130629 +165,0.9012489877513972,2.0480378385193583,1.196594943097626,0.94112251918377 +166,1.800148196756847,2.3986389874639955,1.302150999411989,1.2011324186855563 +167,1.7176415386187815,3.3743436929323702,1.2375801611182815,1.2796069898381206 +168,0.7378606611367822,1.6275767195300674,4.418967109191964,1.4387650633781146 +169,1.2605018111204112,1.5166427985171362,1.5619356267301023,1.4419125218519842 +170,1.0375743078424053,1.5614421939010603,1.3305554503299273,1.1653733675475457 +171,0.8648593998750841,1.3008194941305182,1.0111703570016874,0.9779787829569094 +172,1.082112354438471,1.583776522520092,1.2811044479771878,0.6999957263960348 +173,0.4359942811716013,0.6991476038102779,2.1670243684246446,0.9072826634063933 +174,1.357412054386481,1.802775404984067,1.071305904685215,0.8432239908007632 +175,1.120020472131111,1.1754320935511853,0.9689995892558064,0.9760068138678217 +176,1.3646344947623468,1.3565133551538229,0.9288800369768104,0.9362117332594033 +177,1.0236244201131193,1.3812152916642986,1.2982363685830092,0.9490136917922877 +178,1.3275815265326851,1.2958716130821881,1.1439025059323207,1.2699174576756231 +179,1.123903947303014,2.2778275363496463,1.9829765909547106,1.924453809698063 +180,2.635579391068453,3.0667341399253045,1.5758354653463424,1.8224996906419337 +181,1.6803598982072234,2.3924819189307023,2.025048916782585,1.2484328597505114 +182,2.8119091023477476,2.9520821959721353,1.3382300512958025,1.9752747118360774 +183,1.4343050058172955,1.3670168970806231,1.2329597261738205,1.2040705301709207 +184,1.2980456742083255,1.586806004490025,1.5911359060695682,1.5582065925842619 +185,1.347740779831801,1.198873840484784,1.6731464764094688,0.9404722096753495 +186,1.177087780239675,1.828440532462984,1.8267189806149113,1.4857828488435736 +187,1.318948498759601,3.0825153365946565,1.0078113047558193,1.2135496042990987 +188,1.151522027708413,1.7002089606653998,1.366400671320243,1.2822297011411588 +189,1.264440790629743,1.6519761486566726,5.43551841110355,1.4256863079876108 +190,1.3719034629541498,1.8424424515381168,1.8102108031272048,1.3222842027748851 diff --git a/verification/configs/logging.yaml b/verification/configs/logging.yaml new file mode 100644 index 000000000..0e8ef6eef --- /dev/null +++ b/verification/configs/logging.yaml @@ -0,0 +1,57 @@ +# Config for logging +# ------------------ +# See http://docs.python.org/2.7/library/logging.config.html#configuration-dictionary-schema + +logging: + version: 1 + disable_existing_loggers: true + + + # Configuring the default (root) logger is highly recommended + root: + level: DEBUG + handlers: [console, logfile] + + loggers: + + activitysim: + level: DEBUG + handlers: [console, logfile] + propagate: false + + orca: + level: WARNING + handlers: [console, logfile] + propagate: false + + handlers: + + logfile: + class: logging.FileHandler + filename: !!python/object/apply:activitysim.core.config.log_file_path ['activitysim.log'] + mode: w + formatter: fileFormatter + level: NOTSET + + console: + class: logging.StreamHandler + stream: ext://sys.stdout + formatter: simpleFormatter + #level: WARNING + level: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [WARNING, NOTSET] + + formatters: + + simpleFormatter: + class: logging.Formatter + #format: '%(processName)-10s %(levelname)s - %(name)s - %(message)s' + format: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [ + '%(processName)-10s %(levelname)s - %(name)s - %(message)s', + '%(levelname)s - %(name)s - %(message)s'] + datefmt: '%d/%m/%Y %H:%M:%S' + + fileFormatter: + class: logging.Formatter + format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' + diff --git a/verification/configs/settings.yaml b/verification/configs/settings.yaml new file mode 100644 index 000000000..b2ddd95ee --- /dev/null +++ b/verification/configs/settings.yaml @@ -0,0 +1,124 @@ + +inherit_settings: True + +# raise error if any sub-process fails without waiting for others to complete +fail_fast: True + +## - ------------------------- production config +#multiprocess: True +#strict: False +#mem_tick: 0 +#use_shadow_pricing: True +# +# +## - full sample - 2732722 households on 64 processor 432 GiB RAM +#households_sample_size: 0 +#chunk_size: 80000000000 +#num_processes: 60 +#stagger: 0 + +# - full sample - 2732722 households on Standard_M128s +#households_sample_size: 0 +#chunk_size: 0 +#num_processes: 124 +#stagger: 0 + + +# - ------------------------- dev config +multiprocess: False +strict: False +mem_tick: 30 +use_shadow_pricing: False + +# - 10% sample +households_sample_size: 287519 +hh_ids: 10_pct_hh_ids.csv + +#households_sample_size: 100 + +stagger: 5 +chunk_size: 1500000000 +num_processes: 3 + + +# - tracing +#trace_hh_id: 324105 +trace_od: +trace_hh_id: 324105 +#trace_od: [5, 11] + +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: compute_accessibility + +models: + ### mp_initialize step + - initialize_landuse + - compute_accessibility + - initialize_households + ### mp_households step + - school_location + - workplace_location + - auto_ownership_simulate + - free_parking + - cdap_simulate + - mandatory_tour_frequency + - mandatory_tour_scheduling + - joint_tour_frequency + - joint_tour_composition + - joint_tour_participation + - joint_tour_destination + - joint_tour_scheduling + - non_mandatory_tour_frequency + - non_mandatory_tour_destination + - non_mandatory_tour_scheduling + - tour_mode_choice_simulate + - atwork_subtour_frequency + - atwork_subtour_destination + - atwork_subtour_scheduling + - atwork_subtour_mode_choice + - stop_frequency + - trip_purpose + - trip_destination + - trip_purpose_and_destination + - trip_scheduling + - trip_mode_choice + ### mp_summarize step + - write_data_dictionary + - write_tables + +multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_households + begin: school_location + #num_processes: 9 + #stagger: 30 + #chunk_size: 1000000000 + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_data_dictionary + + +output_tables: + action: include + prefix: final_ + tables: +# - checkpoints +# - accessibility + - land_use +# - households + - persons +# - trips +# - tours +# - school_shadow_prices + - raw_school_destination_size + - school_destination_size + - school_modeled_size +# - workplace_shadow_prices + - raw_workplace_destination_size + - workplace_destination_size + - workplace_modeled_size + diff --git a/verification/configs/shadow_pricing.yaml b/verification/configs/shadow_pricing.yaml new file mode 100644 index 000000000..791fb5c89 --- /dev/null +++ b/verification/configs/shadow_pricing.yaml @@ -0,0 +1,38 @@ +inherit_settings: True + +shadow_pricing_models: + school: school_location + workplace: workplace_location + +# global switch to enable/disable loading of saved shadow prices +# (ignored if global use_shadow_pricing switch is False) +LOAD_SAVED_SHADOW_PRICES: False + +# number of shadow price iterations for cold start +MAX_ITERATIONS: 3 + +# number of shadow price iterations for warm start (after loading saved shadow_prices) +MAX_ITERATIONS_SAVED: 1 + +# ignore criteria for zones smaller than size_threshold +SIZE_THRESHOLD: 10 + +# zone passes if modeled is within percent_tolerance of predicted_size +PERCENT_TOLERANCE: 5 + +# max percentage of zones allowed to fail +FAIL_THRESHOLD: 10 + +# CTRAMP or daysim +SHADOW_PRICE_METHOD: ctramp +#SHADOW_PRICE_METHOD: daysim + +# ctramp-style shadow_pricing_method parameters +DAMPING_FACTOR: 1 + +# daysim-style shadow_pricing_method parameters +# FIXME should these be the same as PERCENT_TOLERANCE and FAIL_THRESHOLD above? +DAYSIM_ABSOLUTE_TOLERANCE: 50 +DAYSIM_PERCENT_TOLERANCE: 10 + +SCALE_SIZE_TABLE: False diff --git a/verification/configs_sp/logging.yaml b/verification/configs_sp/logging.yaml new file mode 100644 index 000000000..0e8ef6eef --- /dev/null +++ b/verification/configs_sp/logging.yaml @@ -0,0 +1,57 @@ +# Config for logging +# ------------------ +# See http://docs.python.org/2.7/library/logging.config.html#configuration-dictionary-schema + +logging: + version: 1 + disable_existing_loggers: true + + + # Configuring the default (root) logger is highly recommended + root: + level: DEBUG + handlers: [console, logfile] + + loggers: + + activitysim: + level: DEBUG + handlers: [console, logfile] + propagate: false + + orca: + level: WARNING + handlers: [console, logfile] + propagate: false + + handlers: + + logfile: + class: logging.FileHandler + filename: !!python/object/apply:activitysim.core.config.log_file_path ['activitysim.log'] + mode: w + formatter: fileFormatter + level: NOTSET + + console: + class: logging.StreamHandler + stream: ext://sys.stdout + formatter: simpleFormatter + #level: WARNING + level: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [WARNING, NOTSET] + + formatters: + + simpleFormatter: + class: logging.Formatter + #format: '%(processName)-10s %(levelname)s - %(name)s - %(message)s' + format: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [ + '%(processName)-10s %(levelname)s - %(name)s - %(message)s', + '%(levelname)s - %(name)s - %(message)s'] + datefmt: '%d/%m/%Y %H:%M:%S' + + fileFormatter: + class: logging.Formatter + format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' + diff --git a/verification/configs_sp/settings.yaml b/verification/configs_sp/settings.yaml new file mode 100644 index 000000000..fad11f5e6 --- /dev/null +++ b/verification/configs_sp/settings.yaml @@ -0,0 +1,121 @@ + +inherit_settings: True + +# raise error if any sub-process fails without waiting for others to complete +fail_fast: True + +## - ------------------------- production config +#multiprocess: True +#strict: False +#mem_tick: 0 +#use_shadow_pricing: True +# +# +## - full sample - 2732722 households on 64 processor 432 GiB RAM +#households_sample_size: 0 +#chunk_size: 80000000000 +#num_processes: 60 +#stagger: 0 + +# - full sample - 2732722 households on Standard_M128s +#households_sample_size: 0 +#chunk_size: 0 +#num_processes: 124 +#stagger: 0 + + +# - ------------------------- dev config +multiprocess: False +strict: False +mem_tick: 30 +use_shadow_pricing: True + +# - 10% sample +households_sample_size: 287519 +stagger: 5 +chunk_size: 1500000000 +num_processes: 3 + +hh_ids: 10pct_hh_ids.csv + +# - tracing +trace_hh_id: +trace_od: +#trace_hh_id: 107599 +#trace_od: [5, 11] + +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: atwork_subtour_frequency + +models: + ### mp_initialize step + - initialize_landuse + - compute_accessibility + - initialize_households + ### mp_households step + - school_location +# - workplace_location +# - auto_ownership_simulate +# - free_parking +# - cdap_simulate +# - mandatory_tour_frequency +# - mandatory_tour_scheduling +# - joint_tour_frequency +# - joint_tour_composition +# - joint_tour_participation +# - joint_tour_destination +# - joint_tour_scheduling +# - non_mandatory_tour_frequency +# - non_mandatory_tour_destination +# - non_mandatory_tour_scheduling +# - tour_mode_choice_simulate +# - atwork_subtour_frequency +# - atwork_subtour_destination +# - atwork_subtour_scheduling +# - atwork_subtour_mode_choice +# - stop_frequency +# - trip_purpose +# - trip_destination +# - trip_purpose_and_destination +# - trip_scheduling +# - trip_mode_choice + ### mp_summarize step + - write_data_dictionary + - write_tables + +multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_households + begin: school_location + #num_processes: 9 + #stagger: 30 + #chunk_size: 1000000000 + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_data_dictionary + + +output_tables: + action: include + prefix: final_ + tables: +# - checkpoints +# - accessibility +# - land_use + - households + - persons +# - trips +# - tours + - school_shadow_prices + - raw_school_destination_size + - school_destination_size + - school_modeled_size + - workplace_shadow_prices + - raw_workplace_destination_size + - workplace_destination_size + - workplace_modeled_size + diff --git a/verification/configs_sp/shadow_pricing.yaml b/verification/configs_sp/shadow_pricing.yaml new file mode 100644 index 000000000..858dbee74 --- /dev/null +++ b/verification/configs_sp/shadow_pricing.yaml @@ -0,0 +1,36 @@ +inherit_settings: True + +shadow_pricing_models: + school: school_location + workplace: workplace_location + +# global switch to enable/disable loading of saved shadow prices +# (ignored if global use_shadow_pricing switch is False) +LOAD_SAVED_SHADOW_PRICES: False + +# number of shadow price iterations for cold start +MAX_ITERATIONS: 3 + +# number of shadow price iterations for warm start (after loading saved shadow_prices) +MAX_ITERATIONS_SAVED: 1 + +# ignore criteria for zones smaller than size_threshold +SIZE_THRESHOLD: 10 + +# zone passes if modeled is within percent_tolerance of predicted_size +PERCENT_TOLERANCE: 5 + +# max percentage of zones allowed to fail +FAIL_THRESHOLD: 10 + +# CTRAMP or daysim +SHADOW_PRICE_METHOD: ctramp +#SHADOW_PRICE_METHOD: daysim + +# ctramp-style shadow_pricing_method parameters +DAMPING_FACTOR: 1 + +# daysim-style shadow_pricing_method parameters +# FIXME should these be the same as PERCENT_TOLERANCE and FAIL_THRESHOLD above? +DAYSIM_ABSOLUTE_TOLERANCE: 50 +DAYSIM_PERCENT_TOLERANCE: 10 diff --git a/verification/configs_sp_ctramp/logging.yaml b/verification/configs_sp_ctramp/logging.yaml new file mode 100644 index 000000000..0e8ef6eef --- /dev/null +++ b/verification/configs_sp_ctramp/logging.yaml @@ -0,0 +1,57 @@ +# Config for logging +# ------------------ +# See http://docs.python.org/2.7/library/logging.config.html#configuration-dictionary-schema + +logging: + version: 1 + disable_existing_loggers: true + + + # Configuring the default (root) logger is highly recommended + root: + level: DEBUG + handlers: [console, logfile] + + loggers: + + activitysim: + level: DEBUG + handlers: [console, logfile] + propagate: false + + orca: + level: WARNING + handlers: [console, logfile] + propagate: false + + handlers: + + logfile: + class: logging.FileHandler + filename: !!python/object/apply:activitysim.core.config.log_file_path ['activitysim.log'] + mode: w + formatter: fileFormatter + level: NOTSET + + console: + class: logging.StreamHandler + stream: ext://sys.stdout + formatter: simpleFormatter + #level: WARNING + level: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [WARNING, NOTSET] + + formatters: + + simpleFormatter: + class: logging.Formatter + #format: '%(processName)-10s %(levelname)s - %(name)s - %(message)s' + format: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [ + '%(processName)-10s %(levelname)s - %(name)s - %(message)s', + '%(levelname)s - %(name)s - %(message)s'] + datefmt: '%d/%m/%Y %H:%M:%S' + + fileFormatter: + class: logging.Formatter + format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' + diff --git a/verification/configs_sp_ctramp/settings.yaml b/verification/configs_sp_ctramp/settings.yaml new file mode 100644 index 000000000..e68da5c09 --- /dev/null +++ b/verification/configs_sp_ctramp/settings.yaml @@ -0,0 +1,121 @@ + +inherit_settings: True + +# raise error if any sub-process fails without waiting for others to complete +fail_fast: True + +## - ------------------------- production config +#multiprocess: True +#strict: False +#mem_tick: 0 +#use_shadow_pricing: True +# +# +## - full sample - 2732722 households on 64 processor 432 GiB RAM +#households_sample_size: 0 +#chunk_size: 80000000000 +#num_processes: 60 +#stagger: 0 + +# - full sample - 2732722 households on Standard_M128s +#households_sample_size: 0 +#chunk_size: 0 +#num_processes: 124 +#stagger: 0 + + +# - ------------------------- dev config +multiprocess: False +strict: False +mem_tick: 30 +use_shadow_pricing: True + +# - 100% sample +households_sample_size: 0 +stagger: 5 +chunk_size: 1500000000 +num_processes: 24 + +#hh_ids: 10pct_hh_ids.csv + +# - tracing +#trace_hh_id: +#trace_od: +trace_hh_id: 107599 +#trace_od: [5, 11] + +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: atwork_subtour_frequency + +models: + ### mp_initialize step + - initialize_landuse + - compute_accessibility + - initialize_households + ### mp_households step + - school_location + - workplace_location +# - auto_ownership_simulate +# - free_parking +# - cdap_simulate +# - mandatory_tour_frequency +# - mandatory_tour_scheduling +# - joint_tour_frequency +# - joint_tour_composition +# - joint_tour_participation +# - joint_tour_destination +# - joint_tour_scheduling +# - non_mandatory_tour_frequency +# - non_mandatory_tour_destination +# - non_mandatory_tour_scheduling +# - tour_mode_choice_simulate +# - atwork_subtour_frequency +# - atwork_subtour_destination +# - atwork_subtour_scheduling +# - atwork_subtour_mode_choice +# - stop_frequency +# - trip_purpose +# - trip_destination +# - trip_purpose_and_destination +# - trip_scheduling +# - trip_mode_choice + ### mp_summarize step + - write_data_dictionary + - write_tables + +multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_households + begin: school_location + #num_processes: 9 + #stagger: 30 + #chunk_size: 1000000000 + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_data_dictionary + + +output_tables: + action: include + prefix: final_ + tables: +# - checkpoints +# - accessibility +# - land_use + - households + - persons +# - trips +# - tours + - school_shadow_prices + - raw_school_destination_size + - school_destination_size + - school_modeled_size + - workplace_shadow_prices + - raw_workplace_destination_size + - workplace_destination_size + - workplace_modeled_size + diff --git a/verification/configs_sp_ctramp/shadow_pricing.yaml b/verification/configs_sp_ctramp/shadow_pricing.yaml new file mode 100644 index 000000000..206dd5509 --- /dev/null +++ b/verification/configs_sp_ctramp/shadow_pricing.yaml @@ -0,0 +1,33 @@ +inherit_settings: True + + +# global switch to enable/disable loading of saved shadow prices +# (ignored if global use_shadow_pricing switch is False) +LOAD_SAVED_SHADOW_PRICES: False + +# number of shadow price iterations for cold start +MAX_ITERATIONS: 10 + +# number of shadow price iterations for warm start (after loading saved shadow_prices) +MAX_ITERATIONS_SAVED: 1 + +# ignore criteria for zones smaller than size_threshold +SIZE_THRESHOLD: 10 + +# zone passes if modeled is within percent_tolerance of predicted_size +PERCENT_TOLERANCE: 5 + +# max percentage of zones allowed to fail +FAIL_THRESHOLD: 10 + +# CTRAMP or daysim +SHADOW_PRICE_METHOD: ctramp +#SHADOW_PRICE_METHOD: daysim + +# ctramp-style shadow_pricing_method parameters +DAMPING_FACTOR: 1 + +# daysim-style shadow_pricing_method parameters +# FIXME should these be the same as PERCENT_TOLERANCE and FAIL_THRESHOLD above? +DAYSIM_ABSOLUTE_TOLERANCE: 50 +DAYSIM_PERCENT_TOLERANCE: 10 diff --git a/verification/configs_sp_daysim/logging.yaml b/verification/configs_sp_daysim/logging.yaml new file mode 100644 index 000000000..0e8ef6eef --- /dev/null +++ b/verification/configs_sp_daysim/logging.yaml @@ -0,0 +1,57 @@ +# Config for logging +# ------------------ +# See http://docs.python.org/2.7/library/logging.config.html#configuration-dictionary-schema + +logging: + version: 1 + disable_existing_loggers: true + + + # Configuring the default (root) logger is highly recommended + root: + level: DEBUG + handlers: [console, logfile] + + loggers: + + activitysim: + level: DEBUG + handlers: [console, logfile] + propagate: false + + orca: + level: WARNING + handlers: [console, logfile] + propagate: false + + handlers: + + logfile: + class: logging.FileHandler + filename: !!python/object/apply:activitysim.core.config.log_file_path ['activitysim.log'] + mode: w + formatter: fileFormatter + level: NOTSET + + console: + class: logging.StreamHandler + stream: ext://sys.stdout + formatter: simpleFormatter + #level: WARNING + level: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [WARNING, NOTSET] + + formatters: + + simpleFormatter: + class: logging.Formatter + #format: '%(processName)-10s %(levelname)s - %(name)s - %(message)s' + format: !!python/object/apply:activitysim.core.mp_tasks.if_sub_task [ + '%(processName)-10s %(levelname)s - %(name)s - %(message)s', + '%(levelname)s - %(name)s - %(message)s'] + datefmt: '%d/%m/%Y %H:%M:%S' + + fileFormatter: + class: logging.Formatter + format: '%(asctime)s - %(levelname)s - %(name)s - %(message)s' + datefmt: '%d/%m/%Y %H:%M:%S' + diff --git a/verification/configs_sp_daysim/settings.yaml b/verification/configs_sp_daysim/settings.yaml new file mode 100644 index 000000000..b5417a48d --- /dev/null +++ b/verification/configs_sp_daysim/settings.yaml @@ -0,0 +1,121 @@ + +inherit_settings: True + +# raise error if any sub-process fails without waiting for others to complete +fail_fast: True + +## - ------------------------- production config +#multiprocess: True +#strict: False +#mem_tick: 0 +#use_shadow_pricing: True +# +# +## - full sample - 2732722 households on 64 processor 432 GiB RAM +#households_sample_size: 0 +#chunk_size: 80000000000 +#num_processes: 60 +#stagger: 0 + +# - full sample - 2732722 households on Standard_M128s +#households_sample_size: 0 +#chunk_size: 0 +#num_processes: 124 +#stagger: 0 + + +# - ------------------------- dev config +multiprocess: False +strict: False +mem_tick: 30 +use_shadow_pricing: True + +# - 100% sample +households_sample_size: 0 +stagger: 5 +chunk_size: 1500000000 +num_processes: 24 + +#hh_ids: 10pct_hh_ids.csv + +# - tracing +#trace_hh_id: +#trace_od: +trace_hh_id: 107599 +#trace_od: [5, 11] + +# to resume after last successful checkpoint, specify resume_after: _ +#resume_after: atwork_subtour_frequency + +models: + ### mp_initialize step + - initialize_landuse + - compute_accessibility + - initialize_households + ### mp_households step + - school_location + - workplace_location +# - auto_ownership_simulate +# - free_parking +# - cdap_simulate +# - mandatory_tour_frequency +# - mandatory_tour_scheduling +# - joint_tour_frequency +# - joint_tour_composition +# - joint_tour_participation +# - joint_tour_destination +# - joint_tour_scheduling +# - non_mandatory_tour_frequency +# - non_mandatory_tour_destination +# - non_mandatory_tour_scheduling +# - tour_mode_choice_simulate +# - atwork_subtour_frequency +# - atwork_subtour_destination +# - atwork_subtour_scheduling +# - atwork_subtour_mode_choice +# - stop_frequency +# - trip_purpose +# - trip_destination +# - trip_purpose_and_destination +# - trip_scheduling +# - trip_mode_choice + ### mp_summarize step + - write_data_dictionary + - write_tables + +multiprocess_steps: + - name: mp_initialize + begin: initialize_landuse + - name: mp_households + begin: school_location + #num_processes: 9 + #stagger: 30 + #chunk_size: 1000000000 + slice: + tables: + - households + - persons + - name: mp_summarize + begin: write_data_dictionary + + +output_tables: + action: include + prefix: final_ + tables: +# - checkpoints +# - accessibility +# - land_use + - households + - persons +# - trips +# - tours + - school_shadow_prices + - raw_school_destination_size + - school_destination_size + - school_modeled_size + - workplace_shadow_prices + - raw_workplace_destination_size + - workplace_destination_size + - workplace_modeled_size + diff --git a/verification/configs_sp_daysim/shadow_pricing.yaml b/verification/configs_sp_daysim/shadow_pricing.yaml new file mode 100644 index 000000000..6c7f8d73d --- /dev/null +++ b/verification/configs_sp_daysim/shadow_pricing.yaml @@ -0,0 +1,36 @@ +inherit_settings: True + +shadow_pricing_models: + school: school_location + workplace: workplace_location + +# global switch to enable/disable loading of saved shadow prices +# (ignored if global use_shadow_pricing switch is False) +LOAD_SAVED_SHADOW_PRICES: False + +# number of shadow price iterations for cold start +MAX_ITERATIONS: 10 + +# number of shadow price iterations for warm start (after loading saved shadow_prices) +MAX_ITERATIONS_SAVED: 1 + +# ignore criteria for zones smaller than size_threshold +SIZE_THRESHOLD: 10 + +# zone passes if modeled is within percent_tolerance of predicted_size +PERCENT_TOLERANCE: 5 + +# max percentage of zones allowed to fail +FAIL_THRESHOLD: 10 + +# CTRAMP or daysim +#SHADOW_PRICE_METHOD: ctramp +SHADOW_PRICE_METHOD: daysim + +# ctramp-style shadow_pricing_method parameters +DAMPING_FACTOR: 1 + +# daysim-style shadow_pricing_method parameters +# FIXME should these be the same as PERCENT_TOLERANCE and FAIL_THRESHOLD above? +DAYSIM_ABSOLUTE_TOLERANCE: 50 +DAYSIM_PERCENT_TOLERANCE: 10 diff --git a/verification/output/.gitignore b/verification/output/.gitignore new file mode 100644 index 000000000..5c191ce35 --- /dev/null +++ b/verification/output/.gitignore @@ -0,0 +1,4 @@ +*.csv +*.log +*.h5 +*.txt diff --git a/verification/output/log/.gitignore b/verification/output/log/.gitignore new file mode 100644 index 000000000..8edb80678 --- /dev/null +++ b/verification/output/log/.gitignore @@ -0,0 +1,3 @@ +*.csv +*.log +*.txt diff --git a/verification/output/trace/.gitignore b/verification/output/trace/.gitignore new file mode 100644 index 000000000..89d8d1a06 --- /dev/null +++ b/verification/output/trace/.gitignore @@ -0,0 +1,2 @@ +*.csv +*.txt diff --git a/verification/output_sp/.gitignore b/verification/output_sp/.gitignore new file mode 100644 index 000000000..5c191ce35 --- /dev/null +++ b/verification/output_sp/.gitignore @@ -0,0 +1,4 @@ +*.csv +*.log +*.h5 +*.txt diff --git a/verification/output_sp/log/.gitignore b/verification/output_sp/log/.gitignore new file mode 100644 index 000000000..8edb80678 --- /dev/null +++ b/verification/output_sp/log/.gitignore @@ -0,0 +1,3 @@ +*.csv +*.log +*.txt diff --git a/verification/output_sp/trace/.gitignore b/verification/output_sp/trace/.gitignore new file mode 100644 index 000000000..89d8d1a06 --- /dev/null +++ b/verification/output_sp/trace/.gitignore @@ -0,0 +1,2 @@ +*.csv +*.txt diff --git a/verification/simulation.py b/verification/simulation.py new file mode 100644 index 000000000..f3fbd1b79 --- /dev/null +++ b/verification/simulation.py @@ -0,0 +1,119 @@ +# ActivitySim +# See full license in LICENSE.txt. + +from __future__ import (absolute_import, division, print_function, ) +from future.standard_library import install_aliases +install_aliases() # noqa: E402 + +import sys +import logging + +import pandas as pd + +from activitysim.core import mem +from activitysim.core import inject +from activitysim.core import tracing +from activitysim.core import config +from activitysim.core import pipeline +from activitysim.core import mp_tasks +from activitysim.core import chunk + +# from activitysim import abm + + +logger = logging.getLogger('activitysim') + + +def cleanup_output_files(): + + active_log_files = \ + [h.baseFilename for h in logger.root.handlers if isinstance(h, logging.FileHandler)] + tracing.delete_output_files('log', ignore=active_log_files) + + tracing.delete_output_files('h5') + tracing.delete_output_files('csv') + tracing.delete_output_files('txt') + tracing.delete_output_files('yaml') + tracing.delete_output_files('prof') + + +def run(run_list, injectables=None): + + if run_list['multiprocess']: + logger.info("run multiprocess simulation") + mp_tasks.run_multiprocess(run_list, injectables) + else: + logger.info("run single process simulation") + pipeline.run(models=run_list['models'], resume_after=run_list['resume_after']) + pipeline.close_pipeline() + chunk.log_write_hwm() + + +def log_settings(injectables): + + settings = [ + 'households_sample_size', + 'chunk_size', + 'multiprocess', + 'num_processes', + 'resume_after' + 'use_shadow_pricing', + 'hh_ids', + ] + + for k in settings: + logger.info("setting %s: %s" % (k, config.setting(k))) + + for k in injectables: + logger.info("injectable %s: %s" % (k, inject.get_injectable(k))) + + +if __name__ == '__main__': + + # https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.set_option.html + # pd.set_option('display.max_columns', 50) + + data_dir = "E:/projects/clients/ASIM/data/mtc_tm1" + data_dir = '/Users/jeff.doyle/work/activitysim-data/mtc_tm1/data' + data_dir = '../example/data' + + # inject.add_injectable('data_dir', '/Users/jeff.doyle/work/activitysim-data/mtc_tm1/data') + inject.add_injectable('data_dir', ['ancillary_data', data_dir]) + # inject.add_injectable('data_dir', ['ancillary_data', '../activitysim/abm/test/data']) + inject.add_injectable('configs_dir', ['configs', '../example/configs']) + + injectables = config.handle_standard_args() + + tracing.config_logger() + config.filter_warnings() + + log_settings(injectables) + + t0 = tracing.print_elapsed_time() + + # cleanup if not resuming + if not config.setting('resume_after', False): + cleanup_output_files() + + run_list = mp_tasks.get_run_list() + + if run_list['multiprocess']: + # do this after config.handle_standard_args, as command line args may override injectables + injectables = list(set(injectables) | set(['data_dir', 'configs_dir', 'output_dir'])) + injectables = {k: inject.get_injectable(k) for k in injectables} + else: + injectables = None + + run(run_list, injectables) + + # pipeline.open_pipeline('_') + # + # households_df = pipeline.get_table('households') + # print("households_df\n", households_df.head()) + # + # tours_df = pipeline.get_table('tours') + # print("tours_df\n", tours_df.head()) + # + # pipeline.close_pipeline() + + t0 = tracing.print_elapsed_time("everything", t0)